PhotoCraft is an open-source desktop image editor written in pure Rust that supports layers, masks, type, vectors, and real PSD files for offline retouching.
- v0.23.1
- Published at
- 1d ago
- 78,940
- Stars
- 1,394,969
- Download
- Synced at
- 23h ago
Latest release
v0.23.1Nov 12, 2026, 05:07 AMREADME
Project Overview
PhotoCraft is a desktop image editor for photographers, retouchers, and designers, built to handle layers, masks, and real PSD files offline. The whole application is written from scratch in Rust, with a separation between the document model, the command engine, and an egui interface; the canvas is composited by wgpu on Metal, Vulkan, DX12, or WebGPU, and the same code compiles to WebAssembly for the browser. Shortcuts follow Photoshop habits such as ⌘J and ⇧⌘D, and menus and panels sit where returning users expect them.
| Item | Value |
|---|---|
| Platform | macOS, Windows, Linux, FreeBSD, Web |
| Language | Rust, edition 2024, minimum 1.95 |
| Version | 0.20.1 |
| Structure | 24 crates, 68 tools |
| License | MIT or Apache-2.0 |
Layers, masks, type, vectors, and PSD files live in one native program with no Electron shell.
Key Features
- Adjustment layers: 16 adjustment layers, including Curves with per-channel editing, Levels with a live histogram, Black & White, Channel Mixer, and Gradient Map; each can be masked, reordered, or disabled
- Layer styles: drop shadow, inner shadow, outer and inner glow, bevel and emboss, satin, stroke, and color, gradient, and pattern overlays that copy and paste between layers
- Selections and masks: rectangular, elliptical, single-row, and single-column marquees, lassos, and Magic Wand, plus Quick Selection, Object Selection, Select Subject, and Select and Mask edge refinement
- Type layout: point and paragraph text edited directly on canvas, with Character and Paragraph controls for font, weight, size, leading, tracking, alignment, and color
- Vector shapes: rectangle, ellipse, triangle, polygon, line, pen, freeform pen, and curvature pen, with shape layers that unite, subtract, intersect, and exclude
- Filters: blur, sharpen, noise reduction, distortion, pixelate, stylize, and render categories, with every dialog previewing live through the selection on canvas
- Smart objects: smart filters and lossless transforms, with filter settings that can be changed, hidden, reordered, or masked at any time
- History and transform: a full history panel, History Brush, and Free Transform with scale, rotate, skew, distort, and perspective
- Color management: RGB, Grayscale, CMYK, and Lab documents at 8, 16, and 32 bits per channel, with ICC profile assignment and conversion plus soft proofing on
⌘Y - Format support: PSD/PSB, layered TIFF, OpenRaster, GIMP XCF, Krita
.kra, Paint.NET PDN3, SVG, flat PNG, JPEG, WebP, GIF, OpenEXR, and FITS files, plus the native.pcraftformat
Editing Workflow
- Open a document:
photocraft image.psdlaunches the desktop app with the file loaded and layers and text editable - Non-destructive adjustment: stack Levels and Curves on a layer, then limit the effect with a mask so original pixels stay untouched
- Selection to mask: any selection becomes a layer mask, vector path, or shape in one step
- Preview before commit: filter settings preview live through the selection on canvas before they are written to the layer
- Step back freely: the history panel records each step, so you can return to any point or undo a single brush stroke
Files and Formats
- PSD round trips: re-saving renders the same for 307 of the 309 files in the psd-tools test set, and unmodeled raw blocks are carried over untouched
- Shape accuracy: 116 of 116 shape layers in the project's own PSD corpus match Photoshop pixels
- Large documents: PSB, 16-bit and 32-bit, CMYK, and Lab documents open natively
- Read-only formats: HEIC photos from iPhone and Mac and Affinity
.af,.afdesign,.afphoto, and.afpubfiles open for viewing but are not written back - Write limitations: AVIF output needs the optional
avifbuild feature, and AVIF decoding and JPEG XL are unsupported
Target Audience
- Photographers who edit offline and keep layers intact
- Designers moving from Photoshop who do not want to relearn shortcuts
- Automation engineers who want to script retouching steps
- Image users working on Linux or FreeBSD
Quick Start
Desktop Install
- On macOS, get
photocraft-0.20.1-macos-universal.dmgand drag it into Applications - On Windows, get
photocraft-0.20.1-windows-x64.msior use the portable zip - On Linux, choose AppImage,
.deb,.rpm, Flatpak, or tarball; the Flatpak ID isai.storyteller.photocraft
Run from Source
- Install Rust 1.95 or newer
- Run
cargo run --release -p photocraft -- image.psd- For Japanese fonts, point
CRAFT_FONTS_DIRat acraft-fontscheckout; otherwise system CJK fonts are used
CLI and Automation
- Open, filter, and export in one command
photocraft-cli run wave.psd --cmd filter.sharpen.smartSharpen --params '{"amount":80}' --out wave-final.png- Batch an action list:
photocraft-cli batch --actions grade.json --in ./raw --out ./graded - Serve agents over MCP:
photocraft-cli mcp
System Requirements
| Item | Requirement |
|---|---|
| OS | macOS, Windows, Linux, FreeBSD 14 |
| Architecture | x86_64, aarch64, Windows arm64; RISC-V only as a Linux tarball needing glibc 2.39+ |
| Graphics backend | wgpu: Metal, Vulkan, DX12, WebGPU |
| Source build | Rust 1.95 or newer, 24-crate workspace |
| Browser build | WebAssembly, hostable on any static server |
Notes
- Early stage: AI generative features, about 15 missing tools, typography depth, and plug-in compatibility are still absent, so judge whether it fits daily professional work
- Wayland drag and drop: dropping files onto the window does not work in a Linux Wayland session; use File > Open or paste with
Ctrl+V - XWayland scaling: at 125%, 150%, or 175% fractional scaling an XWayland window is enlarged and blurred, while native Wayland stays sharp
- PSD is not byte-identical: a re-saved PSD rewrites image resources, layer records, and the composite; only the standalone
photocraft-psdcrate reproduces some files byte for byte - Branding is not licensed: the code is MIT or Apache-2.0 dual-licensed, while ArtCraft names and icons follow separate terms