* I18N.et: add Estonian interface translation * I18N.et: record the verified headless fork push step * i18n: send interface text that skipped translation through the catalog A test-only pseudo-language wraps every catalog lookup in ⟦…⟧ marks; a new audit test lays the app out in it (every tab, File page, dialog and pane, the right-click menu, and a hover and a click on every ribbon control, including the Table and Equation tabs) and fails on any visible text outside the marks. The document is drawn as an image, so only interface text is checked; document text, font and style names, shortcuts, icon lettering, contributor handles and command error messages are allowed. What it found, now translated in every language that has the strings: - Right-click menu items (Cut, Paste, Font…, Paragraph…, Link…, New Comment). - Paragraph dialog: the alignment choices showed code values (`left`); the label now sits before the dropdown. - Table Design › Table Style Options checkboxes. - Table Layout › Alignment tooltips showed code values (`topLeft`). - Design › Fonts: the theme's name is translated, its font names are not. - `pt` units, the Insert › Table grid label, the default watermark text, the font dialog's preview sample, and the untitled document's name. - Contributors and Models dialogs: headings, sort and name choices, summary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * i18n: add Russian (ru) interface translation - ru.tsv: 1,068 entries covering every interface string, written clean-room from the English labels and reviewed by a native speaker. `ru`, `ru-RU`, `ru_RU.UTF-8` and other regions resolve to it; File > Options picks it by hand. - Built-in style names (Normal, Heading 2, TOC 3, Strong…) show in the interface language in the Styles gallery, the Styles pane and the Style Inspector. Display only: documents, commands and saved files keep the English names, and styles the author made keep theirs. - Rendered previews use the interface language: the Styles gallery samples (`АаБбВвГг`) and the Design tab's style-set tiles. - Catalogs gain a `preview` context for sample text that must fit a small tile (`Title` is «Заголовок» as a style but «Пример» in the tiles); it falls back to the plain entry, and unknown contexts are still rejected. - Tests: locale detection and saved preference, full coverage, Cyrillic glyphs in the bundled interface fonts, style-name display, catalog contexts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(ru): translate everything the interface audit finds Adds 356 Russian entries: the equation gallery (categories, templates and built-in equations), equation options, themes, watermark presets, paper sizes, table styles, greetings, outline levels, the strings #313 routes through the catalog, and the new AutoSave messages. The two rows #305 made obsolete (📂 Browse…, ➕ New comment) are gone. The interface audit now also fails when a string it sees translated has no Russian entry, so Russian stays complete as the interface grows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * Draw Table and Eraser: draw tables and split or merge cells with a pen (#303) Insert › Tables › Draw Table and Table Layout › Draw › Draw Table / Eraser. table.draw takes a pen stroke in page points: a rectangle outside a table inserts a one-cell table of that size at the paragraph under its start; a straight vertical or horizontal line inside a table splits the cells it crosses (new grid column or row; untouched cells span it). table.eraser merges the two cells beside the border nearest a point. Each stroke is one undo step. In the app the buttons toggle pen and eraser modes with a live preview, a crosshair with the tool's icon, and Esc to stop; canvas clicks don't move the caret while a tool is on. Splitting through part of a vertically merged cell and erasing beside one are refused with a clear error. Catalog 384/430 -> 387/430. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Draw tab: pen, pencil and highlighter ink, stroke eraser and Hide Ink (#307) Ink strokes are floating freeform shapes: a new Freeform geometry (paths in shape-local coordinates, opacity, and the pen that drew it) on InlineObject::Shape with ShapeKind::Freeform. draw.stroke inserts one anchored to the paragraph under the first point (one undo step; points capped per stroke, strokes capped per page, NaN dropped); draw.erase / draw.eraser with a point deletes the stroke under it; draw.pen, draw.pencil, draw.highlighter, draw.eraser and draw.select set the Draw tab's tool in the session view state; review.hideInk toggles showing ink on screen. The canvas draws a live stroke while a pen is dragged and commits it on release; the eraser deletes strokes it passes over (one undo step per drag); Esc or Select goes back to selecting. Draw tab buttons show the tool in use, with colour and thickness menus; Review gets an Ink group with Hide Ink. Ink renders with round caps and joins on screen and in PDF; highlighters are translucent and behind the text. DOCX writes freeforms as wps:wsp with a:custGeom (moveTo/lnTo) in a wp:anchor and reads them back, along with simple custom-geometry freeforms from other files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * #315 review fixes: eraser undo test, sanitized tap dots, custGeom path cap, ink docs - draw.eraser with a point erases through draw.erase: test that it is one undo step (undo/redo) and marks the document dirty. - Render and PDF: a single-point stroke's dot is drawn at the sanitized point, not the raw first one. - DOCX custGeom reading stops once MAX_PATHS paths (subpaths included) are collected, across a:path elements. - docs/file-format-parity.md: ink is saved as custom geometry, not InkML, so Word shows it as a freeform. - widgets test: theme::apply takes an Appearance (#317). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n: send interface text that skipped translation through the catalog A test-only pseudo-language wraps every catalog lookup in ⟦…⟧ marks; a new audit test lays the app out in it (every tab, File page, dialog and pane, the right-click menu, and a hover and a click on every ribbon control, including the Table and Equation tabs) and fails on any visible text outside the marks. The document is drawn as an image, so only interface text is checked; document text, font and style names, shortcuts, icon lettering, contributor handles and command error messages are allowed. What it found, now translated in every language that has the strings: - Right-click menu items (Cut, Paste, Font…, Paragraph…, Link…, New Comment). - Paragraph dialog: the alignment choices showed code values (`left`); the label now sits before the dropdown. - Table Design › Table Style Options checkboxes. - Table Layout › Alignment tooltips showed code values (`topLeft`). - Design › Fonts: the theme's name is translated, its font names are not. - `pt` units, the Insert › Table grid label, the default watermark text, the font dialog's preview sample, and the untitled document's name. - Contributors and Models dialogs: headings, sort and name choices, summary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * i18n audit: start every ribbon click from a fresh app; translate the table style preview The sweep pressed Escape after each click, and in an equation Escape leaves it, so the Equation tab vanished after its first control and the rest of its menus (Convert, Justification, …) were never opened. Each control now gets a fresh app set up the same way. The narrower allowance for short text (only icon lettering and initials) also catches short words. It found the sample table in the Table Style dialog (Mon, Tue, North, Total, …), now translated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * #313: catalog rows for the newly translated interface text Rows in all eight catalogs for the strings #313 now sends through the catalog (cell alignment tooltips, credits columns and summary, theme names, context-menu items, table picker, pt suffix, Document1, the Font dialog sample) and for the Table Style preview's sample table, which the untranslated-text audit flagged after main's table style editor landed. The audit runs headless (no host services: no file pickers or speech) in about 20 s, so it stays enabled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n audit: click the ribbon's bottom row too The sweep only clicked controls centred between y = 52 and 125, which took in the tab row and left out each group's bottom row (Equation › Convert and Justification among them). The band is now taken from the layout: below the tab row and above the document area. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * i18n audit: lay the app out wide enough that no ribbon tab overflows At 1440 pt the Equation tab ran past the window, so its last controls (Justification among them) sat behind the ribbon's scroll arrow and were never clicked. The audit window is now 2560 pt wide. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * i18n: add Russian (ru) interface translation - ru.tsv: 1,068 entries covering every interface string, written clean-room from the English labels and reviewed by a native speaker. `ru`, `ru-RU`, `ru_RU.UTF-8` and other regions resolve to it; File > Options picks it by hand. - Built-in style names (Normal, Heading 2, TOC 3, Strong…) show in the interface language in the Styles gallery, the Styles pane and the Style Inspector. Display only: documents, commands and saved files keep the English names, and styles the author made keep theirs. - Rendered previews use the interface language: the Styles gallery samples (`АаБбВвГг`) and the Design tab's style-set tiles. - Catalogs gain a `preview` context for sample text that must fit a small tile (`Title` is «Заголовок» as a style but «Пример» in the tiles); it falls back to the plain entry, and unknown contexts are still rejected. - Tests: locale detection and saved preference, full coverage, Cyrillic glyphs in the bundled interface fonts, style-name display, catalog contexts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(ru): translate everything the interface audit finds Adds 356 Russian entries: the equation gallery (categories, templates and built-in equations), equation options, themes, watermark presets, paper sizes, table styles, greetings, outline levels, the strings #313 routes through the catalog, and the new AutoSave messages. The two rows #305 made obsolete (📂 Browse…, ➕ New comment) are gone. The interface audit now also fails when a string it sees translated has no Russian entry, so Russian stays complete as the interface grows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * i18n(ru): native-speaker review corrections Add Note, Move Past Citation, equation display/inline, accents, stacks, operators, Column Selection, Reading Highlight, ASAP and Tools, as reviewed; the Accent gallery button wraps onto two lines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * i18n(ru): translate what the improved audit and today's main add The audit now opens every ribbon menu (bottom rows and the Equation tab's last controls included), which surfaced Equation › Convert and Justification, and the Table Style dialog's sample table. Also covers password protection, Manage Styles, the clipboard pane, Shape Effects and Asian typography from main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * i18n: translate the Table Layout 'Draw Table' ribbon label in every catalog #308's two-line ribbon label had no catalog rows; #300's Russian audit (ru covers everything the interface looks up) found it. Rows in all ten catalogs keep et == es and ru covering zh-hans. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fmt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n: Borders and Shading line widths through the catalog ({n} pt) #313's untranslated-text audit flagged main's new dialog (#327). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * land-294: Estonian rows for main's newer dialogs Define New Multilevel List and Track Changes Options (#342), rotation (#332), Tabs and Borders and Shading (#327), Columns, Symbol and Field (#335): et keys equal es again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n audit: run on demand (#[ignore]) until its rare failure under load is understood It failed once in ~46 runs on a heavily loaded machine and passed 35 straight reruns, so CI shouldn't depend on it yet. Run it with --ignored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(ru): restore the review corrections a merge reverted; narrow and hide labels A merge of older copies of this branch's commits put back the pre-review wording of 20 entries (Add Note, Tools, the equation accents and operators, Column Selection, Reading Highlight, ASAP, …) and dropped six that are still in use (Equation › Convert, Centered as Group, the hyphenation menu's ✓ None). They're back as reviewed. Also: 1/4 Em Space → «Узкий пробел», and the Draw tab's Hide Ink button reads «Скрыть». Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po * i18n(ru): restore the reviewed wording a merge rewrote The same merge reworded 24 reviewed entries (password protection, Shape Effects, Asian typography, the clipboard pane, the table style sample); they're back as a native speaker reviewed them. Clipboard Pane keeps «Область буфера обмена», like the other panes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtHKQ7wrZm3uBuaG1Ye8po --------- Co-authored-by: Henno Täht <henno.taht@gmail.com> Co-authored-by: Dmitrii Khlapov <19991457+dkhlapov@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: vangel76 <vangel1976@googlemail.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>
23 KiB
WordCraft
Writing and document design; an open-source, clean-room reimplementation of Microsoft Word, rebuilt in pure Rust.
A fast, open-source word processor with the Word workflow you already know: the ribbon, styles,
tables, track changes, references and mail merge. It reads and writes .docx, runs natively on
macOS, Windows, Linux and BSD, and in the browser via WebAssembly.
By the ArtCraft team.
WordCraft on getartcraft.com · ArtCraft · All Crafting Apps
The Open Studio Handbook, WordCraft's built-in sample: the ribbon, live Styles gallery, rulers and the Navigation pane.
Note
ArtCraft is a community of artists from all walks of life. Painters, photographers, filmmakers, illustrators, designers, animators, hobbyists, and people who picked up a pencil last week. If you make things, you're one of us. Come say hi on Discord.
A tour · Why WordCraft · What works today · Quick start · For agents · Architecture · Roadmap · Downloads · The Crafting Apps · License and credits
A tour
Every screenshot below is WordCraft itself, rendered offscreen by its own UI test harness
(cargo run -p wordcraft-ui-egui --example ui_shot).
Why WordCraft
- Familiar. Word's ribbon tabs, groups, shortcuts and behaviour: Enter continues a list, Tab demotes it, Ctrl/⌘+B bolds the word under the caret, the Styles gallery previews styles live, F4 repeats, F7 checks spelling, F8 extends the selection.
- Your files. Opens and saves .docx (OOXML), and also .odt, .rtf, .html, .md, .tex (LaTeX), .txt; opens Word 97-2003 .doc; exports PDF with real, selectable text, links and bookmarks.
- Fast. Paragraph layout is cached, so typing in a 188-page document re-lays it out in about 1.4 ms; pages render on demand.
- Everywhere. One Rust codebase for macOS, Windows, Linux, BSD and the web. No Electron, no Tauri: native egui on the GPU.
- Built for agents. Every action is a command with an id. The same 422 commands drive the ribbon, keyboard shortcuts, the command search, a command-line tool, a JSON control channel and an MCP server.
- Private. Spelling, grammar and everything else work offline.
- Open. MIT OR Apache-2.0. Clean-room: built from public specifications and observation, with every asset original or openly licensed.
What works today
| Area | Highlights |
|---|---|
| Writing | Fast typing with IME, smart quotes, AutoCorrect, list autoformat (* , 1. ), dashes; word, sentence, paragraph selection; drag-select; clipboard with formatting; undo/redo; find and replace with regex |
| Formatting | Fonts, sizes, bold/italic/underline styles, strike, sub/superscript, caps, highlight, colours, character spacing, Format Painter, Change Case, Clear Formatting |
| Paragraphs | Alignment, indents (draggable on the ruler), spacing, line spacing, tabs with leaders, borders, shading, keep with next, widow/orphan control |
| Styles | Built-in style set, live gallery, Styles pane, create/modify/update styles, style sets, themes |
| Lists | Bullets, numbering, multilevel, restart, set value, custom formats |
| Tables | Insert by grid, merge/split, styles with banded rows, borders, shading, header rows repeated across pages, rows that split across pages, sort, formulas, text ↔ table |
| Pages | Margins, orientation, size, columns, page/column/section breaks, headers and footers (first page, odd/even), page numbers, watermark, page borders, line numbers, vertical alignment, drop caps, automatic hyphenation |
| Objects | Pictures (resize, crop, recolour, brightness/contrast, transparency, background removal, picture styles, rotate), shapes, text boxes, floating position with text wrapping (square, top and bottom, behind or in front of text) |
| References | Table of contents, footnotes and endnotes, citations and bibliography (APA, MLA, Chicago, IEEE), captions, table of figures, cross-references, index, table of authorities |
| Review | Spelling and grammar with suggestions, thesaurus, word count, comments in margin balloons or a pane, track changes, accept/reject, compare documents, restrict editing, accessibility checker, document inspector |
| Mailings | Mail merge from CSV, merge fields, address block, greeting line, rules, preview, finish to a document; envelopes and labels |
| View | Print layout, web layout, draft, read mode, focus, zoom, one/multiple pages, page width, Navigation pane, rulers, gridlines, dark mode; interface in English, 简体中文, 繁體中文, 日本語, Português (Brasil), Español, Українська, Српски / Srpski, Eesti, Türkçe or Русский (follows the system language by default) |
| Files | .docx read/write (opens in Word), Word 97-2003 .doc import, PDF export, .odt, .rtf, .html, .md, .tex, .txt import/export, page images |
The honest picture, area by area, is in ROADMAP.md, the parity assessment and the generated feature checklist.
Quick start
git clone https://github.com/storytold/wordcraft
cd wordcraft
cargo run --release -p wordcraft -- --sample # the desktop app with the sample document
cargo run --release -p wordcraft -- report.docx # open a document
Command line:
wordcraft-cli convert report.docx report.pdf # docx, pdf, odt, rtf, html, md, tex, txt, png
wordcraft-cli text report.docx # plain text
wordcraft-cli inspect report.docx # structure as JSON
wordcraft-cli run --template sample \
--cmd 'select.text={"text":"Membership"}' --cmd format.bold --save out.docx
Web: cd apps/wordcraft-web && trunk serve, then open http://127.0.0.1:8771/?sample.
For agents: CLI and MCP
WordCraft was designed to be driven by people and by AI agents.
claude mcp add wordcraft -- wordcraft-cli mcp # headless documents
wordcraft --control 7981 & # or drive the running app…
claude mcp add wordcraft-app -- wordcraft-cli mcp --connect 127.0.0.1:7981
Tools include list_commands, execute, batch, type_text, select_text, inspect_document,
render_page, save_document, and, with a running app, screenshot, click and key. Agents
can check their work through inspect_document without screenshots. See docs/mcp.md
and the control protocol. Macros record any sequence of commands and
play it back (tools.recordMacro, tools.macros).
Logs
The desktop app writes its log records to standard error and to logs/wordcraft.log next to its
preferences: on Linux $XDG_CONFIG_HOME/wordcraft/logs/ (by default ~/.config/wordcraft/logs/),
on macOS ~/Library/Application Support/WordCraft/logs/, on Windows %APPDATA%\WordCraft\logs\.
A start from a desktop menu or the Dock has no terminal, so this file is what to attach to a bug
report: unreadable parts of a .docx, pictures or fonts a PDF export had to leave out and panics the
command guard recovered from land there. Each launch moves the previous log to wordcraft.1.log
(and that one to wordcraft.2.log), so the log of a run that crashed survives the next start; a
log stops growing at 16 MiB. --version writes no file, and runs with WORDCRAFT_NO_PREFS (agents'
test runs) log to standard error only. Document text is never logged; a panic message leaves out
the text it quotes.
By default WordCraft's own crates log at info and everything else at warn. RUST_LOG replaces
that with env_logger-style directives, for example RUST_LOG=debug,
RUST_LOG=warn,wordcraft_docx=trace or RUST_LOG=info,wgpu_core=warn; a directive ending in *
covers every target starting with it (wordcraft*=debug). The logger is
apps/wordcraft/src/logging.rs.
Architecture
| Layer | Crate | Job |
|---|---|---|
| L0 | wordcraft-geom |
units and measurements |
| L1 | wordcraft-doc, wordcraft-fonts, wordcraft-proof |
document model and editing; fonts and shaping; spelling, grammar, hyphenation |
| L2 | wordcraft-layout, wordcraft-docx, wordcraft-formats |
line breaking, pagination, tables, notes, hit testing; OOXML; ODT/RTF/HTML/Markdown/TXT |
| L3 | wordcraft-render, wordcraft-pdf |
rasteriser (vello_cpu); PDF (krilla) |
| L4 | wordcraft-engine |
session, undo, 422 commands, Word feature catalog |
| L5 | wordcraft-mcp |
MCP server |
| L6 | wordcraft-ui-egui |
the Word-style front end (swappable) |
| apps | wordcraft, wordcraft-cli, wordcraft-web |
desktop, command line, browser |
cargo xtask ci runs formatting, clippy, ~800 tests, the asset-attribution check, the layering
check and the wasm build. Contributor and agent instructions: AGENTS.md.
Roadmap
WordCraft is in alpha. It covers 88% of Word's ribbon features with commands today; counting depth, file fidelity, stability and the rest, we estimate it is about 60% of the way to replacing all of Word for real work, about 55% for a typical professional's weekly work and about 63% for everyday essentials. Beta needs testing against real-world .docx files, keeping charts and SmartArt through a round trip, pagination closer to Word's, a stability sweep and native printing. Details and estimates: ROADMAP.md and where we fall short.
Downloads
Download WordCraft from GitHub: the latest release has every build listed below, and all releases has earlier versions and their notes. <ver> in the file names is the version number, and SHA256SUMS.txt lists a checksum for every file.
Windows
| Build | Installer | Portable |
|---|---|---|
| x64 (64-bit Intel/AMD) | wordcraft-<ver>-windows-x64.msi |
wordcraft-<ver>-windows-x64-portable.zip |
| arm64 (Snapdragon and other ARM PCs) | wordcraft-<ver>-windows-arm64.msi |
wordcraft-<ver>-windows-arm64-portable.zip |
| x86 (32-bit) | wordcraft-<ver>-windows-x86.msi |
wordcraft-<ver>-windows-x86-portable.zip |
Installers and executables are code-signed.
If the app doesn't open on Windows: the desktop app initializes only DirectX 12 by default.
Letting wgpu also create an OpenGL instance can crash some graphics drivers (AMD's
atio6axx.dll) before the window appears, so the app would flash in Task Manager and quit.
WGPU_BACKEND overrides the default for troubleshooting (for example dx12 or vulkan). In
PowerShell, from the folder containing the executable:
$env:WGPU_BACKEND = "vulkan"
& .\wordcraft.exe
Remove-Item Env:WGPU_BACKEND # restore the default for later launches
An explicit gl override can bring the driver crash back on affected systems. The macOS, Linux
and web backend defaults are unchanged.
If the app is slow on an older Windows PC: when DirectX 12 finds no graphics card with a
driver for it (for example Intel 4th-generation graphics on Windows 11), it only offers Microsoft's
software renderer, which draws every frame on the processor. In that case WordCraft uses OpenGL
instead, without setting anything. The log file records the choice (lines starting with
graphics:). WGPU_BACKEND still overrides it, e.g. $env:WGPU_BACKEND = "gl" or "dx12".
macOS
| Build | File | Notes |
|---|---|---|
| App, universal (Apple silicon + Intel) | wordcraft-<ver>-macos-universal.dmg |
Signed and notarized |
| Command-line tool, universal | wordcraft-cli-<ver>-macos-universal.zip |
Signed and notarized |
Linux
| Format | x86_64 | aarch64 (ARM64) | Notes |
|---|---|---|---|
| AppImage | wordcraft-<ver>-linux-x86_64.AppImage |
wordcraft-<ver>-linux-aarch64.AppImage |
Runs anywhere; updates itself with AppImageUpdate (.zsync files) |
| Flatpak | wordcraft-<ver>-linux-x86_64.flatpak |
wordcraft-<ver>-linux-aarch64.flatpak |
Sandboxed; flatpak install --user <file> |
| Debian/Ubuntu | wordcraft-<ver>-linux-x86_64.deb |
wordcraft-<ver>-linux-aarch64.deb |
|
| Fedora/RHEL/openSUSE | wordcraft-<ver>-linux-x86_64.rpm |
wordcraft-<ver>-linux-aarch64.rpm |
|
| Tarball | wordcraft-<ver>-linux-x86_64.tar.gz |
wordcraft-<ver>-linux-aarch64.tar.gz |
Unpack anywhere |
RISC-V (riscv64): wordcraft-<ver>-linux-riscv64.tar.gz, a tarball cross-compiled for glibc 2.39+
(Ubuntu 24.04, Debian 13 and newer).
FreeBSD
| Build | File |
|---|---|
| x86_64 | wordcraft-<ver>-freebsd-x86_64.tar.gz |
Web (WebAssembly)
| Build | File | Notes |
|---|---|---|
| Static site | wordcraft-web-<ver>.zip |
Runs in a modern browser; host it on any static server |
The Crafting Apps
WordCraft is one of the Crafting Apps: free, open-source creative tools from the ArtCraft team, each written from scratch in Rust and each able to stand on its own.
| App | What it's for | Code | Learn more | |
|---|---|---|---|---|
| PhotoCraft | Image editing: layers, masks, type and real PSD files | GitHub | Website | |
| VectorCraft | Vector illustration | GitHub | Website | |
| FilmCraft | Video editing, color and sound | GitHub | Website | |
| LightCraft | Photo library and raw development | GitHub | Website | |
| PdfCraft | Reading, organizing and protecting PDFs | GitHub | Website | |
| EffectCraft | Motion graphics and visual effects | GitHub | Website | |
| DesignCraft | Page layout and publishing | GitHub | Website | |
| WordCraft | Writing and document design · you are here | GitHub | Website |
And ArtCraft itself, our AI image and video studio for artists who want real control.
Come make things with us
Our Discord is where artists of every kind hang out: people who paint, shoot, draw, cut film, set type, and people still figuring out what they like to make. Share what you're working on, ask for help, tell us what's broken, or tell us what you wish these tools could do. Whatever your medium and however long you've been at it, you're welcome here.
discord.gg/artcraft · getartcraft.com · The Crafting Apps · WordCraft
License and credits
WordCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the WordCraft contributors. Required notices are in NOTICE.
Bundled fonts, icons, images and other assets keep their own open licenses; each one is listed with its author, source and license in ATTRIBUTION.md.
The spelling dictionary and hyphenation come from Grady Ward's public-domain Moby Hyphenator II word list. The sample documents and templates are original text written for WordCraft.
The ArtCraft name, wordmark and logos in docs/brand/ are trademarks of the
ArtCraft Team and are not covered by this license. They may be used only unmodified, and only as
part of this repository and WordCraft, under docs/brand/LICENSE-brand.txt.
Forks and modified versions must remove them.
Microsoft and Microsoft Word are trademarks of the Microsoft group of companies. Adobe, Photoshop, Illustrator, Premiere Pro, Lightroom, Acrobat, After Effects and InDesign are trademarks or registered trademarks of Adobe Inc. in the United States and/or other countries. WordCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Microsoft Corporation or Adobe Inc.; these names are used only to describe the workflows it is compatible with.
Made by the ArtCraft team and community.





