EMF and WMF import now plays the records with the shared craft-metafile reader (storytold/craft-libs#778, at the craft-libs rev the SVG, EPS and DXF crates already use) and maps its picture onto the document here: paths with their fills, strokes, caps, joins, miter limits and dashes, clipping groups, images and point type. The EMF and WMF record players in crates/metafile/src/import and the DIB decoder they used are removed. The writers are unchanged, and the PICT reader keeps its own player. What changes for a file being opened, placed or pasted, and for an EPS file's Windows metafile preview (read when its PostScript can't be): - An EMF that draws with EMF+ records is read from them. It opened empty, with a warning that EMF+ is not read. A file with both kinds of record is read from its EMF+ records too. - Hatched and pattern brushes fill with the average color of the brush's tile, translucent where the tile has gaps. Hatches filled with the hatch color and pattern brushes with gray. - Translucent fills, strokes and EMF+ text keep their alpha as opacity. - Text keeps a stretch across from the world transform; it kept only the turn. Text the file clips to a rectangle is clipped to it, and an underlined or struck-through font gives underlined or struck-through type. - A clip path whose bounding box holds the whole picture is kept unless it is that rectangle; a diamond or a bow tie around the picture was dropped. - Images drawn with SRCAND, SRCPAINT or SRCINVERT are drawn as they look over white, and images drawn with other raster operations are drawn as a plain copy. They were left out with a warning. - Excluded clip rectangles and the other clip region modes are applied. A clip path combined with RGN_OR, RGN_XOR or RGN_DIFF is ignored without the warning it gave. - An image past the reader's size or pixel limits, or one that can't be decoded, is left out without a warning of its own. A file past the reader's limits (more than 32 nested clip paths, 200,000 drawn items, 256 MiB held) is read up to that point without a warning. - An EMF record whose size is not a multiple of 4 ends the file, with the "ends early" warning. Tests: an EMF+ only picture imports its fill (it failed before), a dual EMF+ file draws its translucent EMF+ fill and not its fallback, hatch and pattern brush colors, clipped and underlined text, excluded clip rectangles, a shared clipping group, an odd record size, WMF at 1440 units an inch without a placeable header and at its own units with an inverted box, an EMF without a frame, diamond and bow-tie clips, text with a stretch, clips nested past the stack and 200,000 clip records; the fuzz test gains random EMF+ records.
VectorCraft
Vector illustration; an open-source, modern vector art application, built in pure Rust.
A fast, open-source vector illustration workflow. It runs natively on macOS, Windows, Linux and FreeBSD, and in the browser via WebAssembly. Built by the ArtCraft team.
VectorCraft on getartcraft.com · ArtCraft · All Crafting Apps
Neon Drive: a Pathfinder-cut sun, live Outer Glow on the type and grid, and clipping masks · examples/neon-drive.vectorcraft
Note
ArtCraft is a community of artists from all walks of life. Digital, generative, music, games — if you make things, you're one of us. Come say hi on Discord.
A look around · Made in VectorCraft · Why VectorCraft · Quick start · Status · Downloads · The Crafting Apps · License
A look around
Made in VectorCraft
Every piece below was built entirely through VectorCraft's command API, the same one the MCP server
exposes to agents, and exported by VectorCraft's own renderer. The source files are in
examples/.
Why VectorCraft
- Familiar. A familiar layout, tools, menus, panels and shortcuts: the Pen, Direct Selection, Pathfinder, Smart Guides, Appearance, Swatches, Layers and more. You already know how to use it.
- Fast. Multithreaded SIMD rendering off the UI thread. 20,000 shapes render in about 27 ms at full retina resolution while the interface stays at 120 fps.
- Robust. Exact curve booleans (no "cannot perform operation"), unlimited undo via structural sharing, and property-tested file round trips.
- Open. A documented native format (
.vectorcraft, JSON), first-class SVG, PDF (and PDF-compatible.ai) import and export, PNG/JPEG/WebP export, Export for Screens, and SVGZ, templates, GIF, TIFF and BMP on open. - Agent-native. Every menu item, tool gesture, panel and dialog can be driven over a JSON control channel and an MCP server, so Claude and other agents can draw, edit and export the way a person does.
- Everywhere. One codebase for the desktop apps and the same UI in the browser.
Quick start
For posters and sewing patterns, see Print a large poster across multiple pages.
git clone https://github.com/storytold/vectorcraft
cd vectorcraft
cargo run --release -p vectorcraft # desktop app
cargo run --release -p vectorcraft -- examples/dusk-poster.vectorcraft
cargo run --release -p vectorcraft -- --control 7979 # + JSON control channel
cargo run --release -p vectorcraft-cli -- mcp # MCP server (stdio)
cargo run --release -p vectorcraft-cli -- run --in examples/ribbons.vectorcraft --export out.pdf # headless batch
cargo run --release -p vectorcraft-cli -- bench examples/neon-drive.vectorcraft # render timing
cargo xtask bundle # dist/VectorCraft.app (macOS)
cd apps/vectorcraft-web && trunk build --release # web build → dist/web
cargo xtask ci # fmt, clippy, tests, layering, wasm, vendor names
For text and custom letter shapes, see Typography and Custom Lettering.
Japanese fonts come from storytold/craft-fonts, an optional
build input (releases always use it): CRAFT_FONTS_DIR="$PWD/../craft-fonts" cargo run --release -p vectorcraft (an absolute path).
Without it, Japanese text uses the installed system fonts. See docs/development.md.
On machines with two graphics processors, VectorCraft renders on the power-saving (integrated) one by default on
Windows and macOS, and on the one the desktop runs on under Linux. To choose, use Preferences › Performance ›
Graphics Processor and restart. If a graphics processor can't show the window, VectorCraft starts again on the
next one. To pick one when starting the app, set WGPU_POWER_PREF=high (or low), or WGPU_ADAPTER_NAME to part of
its name, such as WGPU_ADAPTER_NAME=nvidia (see docs/development.md).
On native Wayland, winit 0.30 does not deliver dropped files. To open an SVG, use File › Open;
to place artwork in the current document, copy and paste the file in a file manager. For file
drag-and-drop, set Preferences › Performance › Linux Display Server to X11 (XWayland) and restart, or start
the app with WAYLAND_DISPLAY= vectorcraft: the window then opens through XWayland, where drops work
(see docs/development.md).
On Linux with Wayland, under KDE Plasma 6.3 or later and under GNOME, VectorCraft can't get a drawing tablet's pen
input on native Wayland yet (#491, #2028). When a pen is attached as VectorCraft starts, the window opens through
XWayland, where the pen works as a mouse and the app reads its pressure (#4967; VECTORCRAFT_NATIVE_WAYLAND=1 keeps
Wayland). For a pen attached later, set the same preference to X11 (XWayland) and restart, or start the app with
WAYLAND_DISPLAY= vectorcraft (see docs/development.md).
Use it from Claude Code and other agents
Register the MCP server with Claude Code:
claude mcp add vectorcraft -- /path/to/vectorcraft-cli mcp
To keep an agent to one project's files, give it folders to read and write (the same flags as PhotoCraft):
claude mcp add vectorcraft -- /path/to/vectorcraft-cli mcp --automation-read-root /work/project --automation-write-root /work/project
The details are in docs/mcp.md and docs/control-protocol.md.
Status
VectorCraft is under active development. ROADMAP.md has the stage, the numbers by dimension
and what's next; docs/target-app-parity.md the full parity assessment and
docs/gaps.md the ranked list of what's missing.
Where we are (2026-10-10): alpha. About 88% of core menu items, tools, effects and formats exist
(92.5% of menu items do something), feature depth is ~75%, and we estimate ~65% ready for real work for a mainstream illustrator (~62% across all tracked features): everyday
vector illustration is close to usable: drawing and path tools,
Pathfinder and Shape Builder, paint, gradients, appearance and transparency, type with styles, threading and Hebrew/Arabic bidirectional layout, and
files (SVG, PDF and PDF-compatible .ai with PDF/X, legacy version 7 .ai keeping layers, groups and type, EPS, DXF, EMF/WMF, raster formats, PSD out, PSD/PSB opened with their layers and placed as their merged image, JPEG XL in, Print, Package).
Affinity documents (.af from Affinity 3, .afdesign, .afpub and, by their content, .afphoto from Affinity 1 and 2) open
and place natively: layers, groups, artboards and pages, curves and shapes, fills, gradients and strokes, clipping
and masks, text with each paragraph's indents, spacing and leading, tables (as text frames and lines), master
pages, shadows, glows, outlines and overlays, embedded Affinity documents and images, with what didn't come in
(adjustments, blurs, bevels, brushes…) listed in the import warning; a file whose native data can't be read opens as its embedded preview, saying why. VectorCraft
doesn't write Affinity files. Current .af validation includes 33 pinned files, native save/reload
and every-board SVG/PDF/PSD export, with fixes for Affinity 3 artboards, source-backed JPEGs and text runs.
Scope and limits; source audit and remaining gaps.
The interface
speaks English, German, Japanese, Korean, Vietnamese, Traditional and Simplified Chinese, Spanish, French, Hungarian, Italian, Polish, Brazilian Portuguese, Russian, Swedish, Ukrainian, Finnish, Bulgarian, Greek, Czech, Georgian and Catalan;
localization-parity.md has the details.
The scores are self-assessed from our code against public documentation;
target-app-parity.md explains how far to trust them.
What's missing:
- reliable exchange of .ai files (layer structure in real files; the editing copy a save writes keeps live effects only on paths, compound paths and groups that qualify (at most a fill and a stroke, a non-zero fill rule when filled, no large canvas) and whose appearance and effects the art-style writer supports (see docs/file-format-parity.md), leaves out other objects' effects other than geometry effects, and writes live objects as their art);
- an interaction-fidelity pass covering every tool's modifiers and small behaviours;
- 3D and Materials beyond the initial live Revolve (Extrude & Bevel, Inflate, Rotate, materials);
- filter thumbnails and a preview area inside the Effect Gallery (the gallery itself and all 57 Photoshop-style raster filters, approximated, are in);
- CJK composition for vertical type (vertical type itself has initial support, with a Japanese interface);
- scripting, and the rest of Variables (image and graph kinds, dataset import);
- generative AI features.
Where we're going: next is the interaction-fidelity pass, .ai files from real users and start-up stability,
alongside the raster-effects package; then type, recent additions and 3D. The ranked list is in
docs/gaps.md.
Workspace: crates/{geom, color, doc, pathops, text, effects, three-d, trace, brush, render, svg, pdf, eps, cad, metafile, format, tools, engine, ui-egui, mcp, testkit}
and apps/{vectorcraft, vectorcraft-cli, vectorcraft-web}. The egui frontend is its own crate, so
the UI can be swapped without touching the engine.
Agent and contributor rules (clean-room, the asset policy, no panics in shipped code, quality gates) are in
AGENTS.md; docs/development.md
explains how VectorCraft avoids crashing, and docs/releasing.md how releases are built,
signed and published. Every bundled asset is listed with its licence in ASSETS.md.
Downloads
New to VectorCraft? Download it from the VectorCraft page on getartcraft.com. That's the easiest way to install it.
Want a specific build or format? On 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) | vectorcraft-<ver>-windows-x64.msi |
vectorcraft-<ver>-windows-x64-portable.zip |
| arm64 (Snapdragon and other ARM PCs) | vectorcraft-<ver>-windows-arm64.msi |
vectorcraft-<ver>-windows-arm64-portable.zip |
| x86 (32-bit) | vectorcraft-<ver>-windows-x86.msi |
vectorcraft-<ver>-windows-x86-portable.zip |
Installers and executables are code-signed.
macOS
| Build | File | Notes |
|---|---|---|
| App, universal (Apple silicon + Intel) | vectorcraft-<ver>-macos-universal.dmg |
Signed and notarized |
| Command-line tool, universal | vectorcraft-cli-<ver>-macos-universal.zip |
Signed and notarized |
Linux
| Format | x86_64 | aarch64 (ARM64) | Notes |
|---|---|---|---|
| AppImage | vectorcraft-<ver>-linux-x86_64.AppImage |
vectorcraft-<ver>-linux-aarch64.AppImage |
Runs anywhere; updates itself with AppImageUpdate (.zsync files) |
| Flatpak | vectorcraft-<ver>-linux-x86_64.flatpak |
vectorcraft-<ver>-linux-aarch64.flatpak |
Sandboxed; flatpak install --user <file> |
| Debian/Ubuntu | vectorcraft-<ver>-linux-x86_64.deb |
vectorcraft-<ver>-linux-aarch64.deb |
|
| Fedora/RHEL/openSUSE | vectorcraft-<ver>-linux-x86_64.rpm |
vectorcraft-<ver>-linux-aarch64.rpm |
|
| Tarball | vectorcraft-<ver>-linux-x86_64.tar.gz |
vectorcraft-<ver>-linux-aarch64.tar.gz |
Unpack anywhere |
FreeBSD
| Build | File |
|---|---|
| x86_64 | vectorcraft-<ver>-freebsd-x86_64.tar.gz |
Web (WebAssembly)
| Build | File | Notes |
|---|---|---|
| Static site | vectorcraft-web-<ver>.zip |
Runs in a browser with WebAssembly SIMD (Chrome/Edge 91, Firefox 89, Safari 16.4 or newer), see packaging/web/README.md; host it on any static server |
The Crafting Apps
VectorCraft 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 | |
| FigCraft | Interface design and prototyping | GitHub | Website | |
| WordCraft | Word processing and documents | GitHub | Website | |
| SoundCraft | Audio recording and editing | GitHub | Website | |
| DeckCraft | Presentations and slide decks | GitHub | Website | |
| CADCraft | Computer-aided design | GitHub | Website | |
| GridCraft | Spreadsheets and data | GitHub | Website | |
| TextureCraft | 3D texture painting | GitHub | Website | |
| Craft Anything | See how any software works, then build your own | GitHub | Website | |
| SolidCraft | Parametric 3D CAD by Tangency Labs (community app) | GitHub |
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 · VectorCraft
Star history
License and credits
VectorCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the VectorCraft 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 ASSETS.md. Release builds also embed the fonts of craft-fonts (Japanese, Simplified Chinese and Arabic faces; SIL Open Font License 1.1).
The app icon (an engraved dragon on VectorCraft red, #e8573f) is the owner's original artwork; its
palette and files are in assets/app-icon/.
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 VectorCraft, under docs/brand/LICENSE-brand.txt.
Forks and modified versions must remove them.
Made by the ArtCraft team and community.













