Video editor in pure Rust: cut, color and sound, with captions and voice-over through publik API
AI: publik API or your key
publik verified: the founder reviewed this exact version for malware and approved it

Prices are for one typical use: one request of about 1,500 words sent and 375 words back. A higher quality score is better.
FilmCraft has no option to run its AI on your computer.
| Model | Quality | Per 1,000 uses |
|---|---|---|
| On your computer (Ollama, 4-bit download size) | ||
| Granite 4.2 3B2.2 GB | 9 | $0 |
| Phi-4 Mini2.5 GB | 6 | $0 |
| Llama 3.1 8B4.9 GB | 7 | $0 |
| gpt-oss 20B14 GB | 9 | $0 |
| Gemma 4 31B20 GB | 19* | $0 |
| Qwen3.5 35B-A3B24 GB | 19* | $0 |
| publik API | ||
| publik-fastGLM-5.3 Flash | 42 | $1.00 |
| publik-balancedMiMo-V2.6-Pro · FilmCraft | 46 | $10.00 |
| publik-smartGPT-6 Sol | 48 | $18.00 |
Quality: Artificial Analysis Intelligence Index v4.3.2, read 2026-09-22 (publik API models 2026-09-25); * = estimated by Artificial Analysis. Sizes: the Ollama library, read 2026-09-22.
Video editing, color and sound; an open-source, professional non-linear video editor, built in pure Rust.
An open-source, modern non-linear video editing workflow: native on macOS, Windows and Linux, and in the browser via WebAssembly.
By the ArtCraft team.
FilmCraft on getartcraft.com · ArtCraft · All Crafting Apps
Apollo 11 - Tranquility: a three-minute documentary edit of NASA's 1969 launch, landing and moonwalk film, with subtitles from the mission transcript. Every frame in these screenshots comes from public-domain footage, decoded, composited and graded by FilmCraft's own code.
[!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.
Edit · Color · Effects · Audio · Titles · Formats · Export · Interchange · Agents · Get started · Downloads · Docs · Status
FilmCraft is a professional non-linear editor: familiar panels, workspaces, tools and shortcuts, so your hands already know where everything is. Underneath, it is new from the bitstream up. The H.264, HEVC, ProRes and AAC codecs are our own, written in Rust from the public specifications. A GPU compositor works in linear light. Frame math runs on exact integer time, so edits never drift. And every action in the app is a command that an AI agent can drive as precisely as you can.
The Assembly workspace, cutting a trailer for Night of the Living Dead (1968) with an insert from Carnival of Souls (1962).
A timeline you already know. Source and Program monitors, bins with thumbnails, a multi-track timeline with patch and target buttons, sync locks and linked selection. The Editing, Assembly, Color, Effects and Audio workspaces are all there, and every panel docks wherever you want it.
,) or overwrite (.) onto the patched tracks. Lift (;) and extract (') take ranges back out.⌥← ⌥→, ×5 with ⇧), toggles the trim type with ⌃T and extends them to the playhead with E. Q and W ripple-trim to the playhead. The Trim Monitor shows both sides of the edit, and dynamic trimming trims live while it plays: L forward, J back, K to stop and commit as one undo step.⌘K) on one or all tracks; nesting; copy, paste and paste insert; ripple delete and close gap; snapping; unlimited undo with a History panel.⌥⌘K) with a drawn keyboard, panel-specific shortcuts, conflict warnings and presets for FilmCraft and standard NLE key layouts.
Up close: dissolves, an insert on V2, the score on A2, coloured markers, and the loudness meters on the right.
The Color workspace on Charade (1963), with live scopes beside the Program monitor.
A complete color grading panel, in the order a colourist works:
![]() The color grading panel. Basic Correction, Color Wheels and every other section, each with its own on/off switch. |
![]() Scopes that tell the truth. The waveform and vectorscope are computed from the graded frame. All grading happens in linear light, in 32-bit float. |
NASA's Earth Views from the ISS with a look applied, and the Effects browser open on the dissolves.
An eased push-in on the title card: the value graph, the velocity graph and the Bezier influence handle.
ebur128 filter to the tenth of a LU.No FFmpeg inside. The video codecs, AAC, Opus and the containers are our own Rust code, implemented from the public ITU-T, ISO and IETF specifications and tested frame by frame against ffmpeg as an external oracle.
| Decode | Encode | Notes | |
|---|---|---|---|
| H.264 / AVC | ✓ | ✓ | Decoder bit-exact on 37+ streams, 500–600 fps at 1080p. Encoder: High, Main and Baseline profiles, CABAC, B-frames, CRF/CBR/VBR/2-pass |
| HEVC / H.265 | ✓ | Main and Main 10, bit-exact on 41 streams (tiles, WPP, PCM, long-term references), about 225 fps at 1080p | |
| Apple ProRes | ✓ | ✓ | Decodes 422 Proxy to 4444 XQ; export writes 422 HQ |
| AAC-LC | ✓ | ✓ | |
| VP8 | ✓ | Every coding tool, bitstream versions 0–3, hidden altref frames, alpha layer of transparent WebM; bit-exact with libvpx on its published VP8 test vectors; in WebM/Matroska and MP4 | |
| VP9 | ✓ | Profiles 0–3, 8/10/12-bit, 4:2:0 to 4:4:4, tiles and superframes; bit-exact on 50+ streams; in WebM/Matroska and MP4 | |
| Opus | ✓ | SILK, CELT, hybrid and multistream surround; range-exact on every RFC 8251 conformance vector; in WebM/Matroska and MP4 | |
| AV1 | ✓ | Main profile, 8/10-bit 4:2:0 and monochrome, every coding tool incl. film grain, superres and spatial layers; bit-exact with libdav1d on the libaom vectors tested; in MP4 and WebM/Matroska | |
| DNxHD / DNxHR | ✓ | ✓ | All SMPTE ST 2019-1 CIDs (LB to 444, 8/10/12-bit); export writes DNxHR in MOV |
| MJPEG, PCM | ✓ | ✓ | |
| MP3, FLAC, ALAC, Vorbis | ✓ | Via the symphonia crate (MPL-2.0) for now, to be replaced by our own | |
| MP4 / MOV | ✓ | ✓ | Fragmented MP4, edit lists, timecode tracks |
| Matroska / WebM | ✓ | Lacing, Cues, header stripping, HDR colour metadata | |
| AVI | ✓ | AVI 1.0 and OpenDML (files past 1 GB); Motion JPEG, H.264, HEVC and uncompressed RGB / YUV with PCM, MP3, MP2 or AC-3. DivX / Xvid and DV not yet | |
| Stills | ✓ | ✓ | Import PNG, JPEG, GIF, WebP, TIFF and BMP (animated GIF and APNG as clips, with transparency); export PNG sequences and animated GIF |
Also imported: MPEG-2 / MPEG-1 video, AC-3, MP2, MXF (OP1a / OP-Atom), MPEG transport and program streams (AVCHD, broadcast, DVD), Ogg and image sequences. Not yet: AV1 export, camera RAW, E-AC-3. Hardware decoding works on macOS (VideoToolbox), Windows (Media Foundation) and, for H.264 and HEVC, Linux (VA-API); H.264 export can use NVIDIA's encoder on Windows and Linux (opt-in), and H.265 (HEVC Main, 8-bit) export works through it (NVENC on Windows, VideoToolbox on macOS) (#30).
Export mode, set to write the trailer as H.264 MP4.
Move timelines between FilmCraft and every other editor:
metadata.filmcraft.M2) and one EDL per track.Import merges the document's bins, media and sequences into your project as one undoable step, and links each media file it finds on disk.
Every menu item, button, slider and drag in FilmCraft is a command with an id, typed parameters and an enabled state. There are more than 650 engine commands (filmcraft-cli commands lists them), with more commands continuously added. The UI, the CLI, a JSON control channel and an MCP server all dispatch the same commands, so Claude or any agent can cut, trim, grade, mix and export exactly the way a person does. The UI can also be driven at the level of mouse and keyboard: every widget has an automation id, and agents can click, drag, type and take screenshots.
// over the control channel (JSON lines on TCP) or as MCP tool calls
{"method": "engine.execute", "params": {"command": "timeline.place",
"params": {"item": 1, "track": "V1", "seconds": 0, "sourceIn": 284298240000000, "duration": 1270080000000}}}
{"method": "engine.execute", "params": {"command": "effects.setParam",
"params": {"clip": 87, "effect": "lumetri", "param": "curve_luma", "value": [[0,0],[0.25,0.21],[0.75,0.82],[1,1]]}}}
{"method": "ui.screenshot", "params": {"path": "frame.png"}}
The trailer and the grades in these screenshots were built exactly this way, by an agent driving the running app.
apps/filmcraft-web, see docs/web.md); every release ships it as filmcraft-web-<version>.zip.ui-egui) over the engine, so a different front end can replace it without touching editing logic.| CONTRIBUTING.md · docs/contributing.md | Setup, quality gates, commit conventions, how to add commands, effects, codecs, panels and assets |
| AGENTS.md | The rules every contributor must follow: assets, clean room, licences |
| docs/architecture.md | Layers, data model, time base, command system, render and export pipeline |
| docs/testing.md | Unit, property and ffmpeg-oracle tests, accuracy criteria, benchmarks |
| docs/agents.md | Driving FilmCraft over MCP and the control channel; how agents develop it |
| docs/control-protocol.md | Control-channel and MCP reference |
| docs/project-files.md | .fcproj format, schema migrations, auto-save and crash recovery |
| docs/graphics.md · docs/captions.md | Text engine, graphic clips and tools; caption tracks and formats |
| ROADMAP.md | Stage, parity numbers, languages, what's next and the progress log |
| docs/target-app-parity.md · docs/gaps.md · docs/roadmap.md | Parity assessment, the ranked list of shortfalls, milestones and current focus |
| docs/codec-parity.md · docs/file-format-parity.md · docs/hardware-parity.md · docs/ui-parity.md · docs/localization-parity.md | Parity checklists by dimension |
FilmCraft is young and moving fast. Editing, trimming, multicam, colour, keyframes, effects, titles, captions, mixing, codecs and export work today.
FilmCraft is in alpha. We track two numbers (docs/target-app-parity.md, re-measured 2026-10-10):
The biggest gaps today:
.prproj project import. .prproj files can't be opened yet; bring sequences over as FCP7 XML, AAF or OTIO.Bug reports with real footage are the most useful thing you can send us: open an issue or tell us in Discord.
A layered Cargo workspace:
| Layer | Crates |
|---|---|
| Codecs and containers | h264, h264enc, hevc, vp9, prores, aac, opus, isobmff, matroska, avi, bitstream |
| Foundations | time, geom, color, frame, media, text, project, audio-dsp |
| Editing and interchange | edit, codecs, captions, format (project files), interchange |
| Rendering and output | render, gpu, export |
| Engine | engine: command registry, session, undo, jobs |
| Front ends | ui-egui, automation (MCP), apps/filmcraft, apps/filmcraft-cli |
| Test support | testkit (ffmpeg oracles, fixtures), golden (golden-image tests) |
Nothing below the front ends depends on a UI toolkit or OS API. cargo xtask ci checks formatting, lints, tests, the layering rules, asset attribution and the wasm build.
New to FilmCraft? Download it from the FilmCraft 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.
| Build | Installer | Portable |
|---|---|---|
| x64 (64-bit Intel/AMD) | filmcraft-<ver>-windows-x64.msi | filmcraft-<ver>-windows-x64-portable.zip |
| arm64 (Snapdragon and other ARM PCs) | filmcraft-<ver>-windows-arm64.msi | filmcraft-<ver>-windows-arm64-portable.zip |
| x86 (32-bit) | filmcraft-<ver>-windows-x86.msi | filmcraft-<ver>-windows-x86-portable.zip |
Installers and executables are code-signed.
If the app doesn't open on Windows: the desktop app initializes only Vulkan and DirectX 12 by
default, not OpenGL. 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"
& .\filmcraft.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.
A PC whose GPUs were installed from different driver packages of one vendor (a laptop with an
integrated and a discrete AMD GPU, for example) can list one GPU twice, once through each installed
version of the Vulkan driver, and a window drawn through the stale one crashes inside the driver
(amdvlk64.dll, exit code 0xc0000005). FilmCraft draws with the newer one and says so in
%APPDATA%\FilmCraft\Logs\filmcraft.log; installing one driver package for every GPU removes the
duplicate. With one driver per GPU the adapter is the one wgpu picks, as before.
| Build | File | Notes |
|---|---|---|
| App, universal (Apple silicon + Intel) | filmcraft-<ver>-macos-universal.dmg | Signed and notarized |
| Command-line tool, universal | filmcraft-cli-<ver>-macos-universal.zip | Signed and notarized |
| Format | x86_64 | aarch64 (ARM64) | Notes |
|---|---|---|---|
| AppImage | filmcraft-<ver>-linux-x86_64.AppImage | filmcraft-<ver>-linux-aarch64.AppImage | Runs anywhere; updates itself with AppImageUpdate (.zsync files) |
| Flatpak | filmcraft-<ver>-linux-x86_64.flatpak | filmcraft-<ver>-linux-aarch64.flatpak | Sandboxed; flatpak install --user <file> |
| Debian/Ubuntu | filmcraft-<ver>-linux-x86_64.deb | filmcraft-<ver>-linux-aarch64.deb | |
| Fedora/RHEL/openSUSE | filmcraft-<ver>-linux-x86_64.rpm | filmcraft-<ver>-linux-aarch64.rpm | |
| Tarball | filmcraft-<ver>-linux-x86_64.tar.gz | filmcraft-<ver>-linux-aarch64.tar.gz | Unpack and run ./install.sh |
RISC-V (riscv64): filmcraft-<ver>-linux-riscv64.tar.gz (tarball only; needs glibc 2.39+, e.g. Ubuntu 24.04
or Debian 13).
The tarball installer places FilmCraft, its command-line tool and desktop integration in
~/.local, without administrator permissions. For all users, run
sudo ./install.sh --prefix /usr/local instead. Running the installer again updates the installation.
Gentoo (community-maintained): the ::snakebyte overlay
packages the Linux release as media-video/filmcraft-bin. It is maintained by the community, not by the
FilmCraft team, so report packaging problems to the overlay:
eselect repository add snakebyte git https://github.com/switch87/snakebyte-overlay.git
emaint sync -r snakebyte
echo 'media-video/filmcraft-bin ~amd64' >> /etc/portage/package.accept_keywords/filmcraft
emerge --ask media-video/filmcraft-bin
| Build | File |
|---|---|
| x86_64 | filmcraft-<ver>-freebsd-x86_64.tar.gz |
| Build | File | Notes |
|---|---|---|
| Static site | filmcraft-web-<ver>.zip | Runs in a modern browser; host it on any static server |
FilmCraft 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 · you are here | 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 |
And ArtCraft itself, our AI image and video studio for artists who want real control.
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 · FilmCraft
FilmCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the FilmCraft 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. Builds made with craft-fonts (all official releases) also embed its fonts (OFL-1.1), listed in its ATTRIBUTION.md.
Footage and music in the screenshots: NASA's Apollo 11 film and television footage from images.nasa.gov (launch, Launch Control Center, lunar surface and recovery) and the Apollo 11 air-to-ground voice transcript, all US Government works in the public domain (NASA does not endorse this project); Night of the Living Dead (1968), Carnival of Souls (1962) and Charade (1963), all in the US public domain; Earth Views from the ISS by NASA; Chopin's Nocturne Op. 48 No. 1 and Ballade No. 1, performed for Musopen and released under CC0. The media itself is not in this repository. Sources and details for every asset are in ATTRIBUTION.md.
FilmCraft is an independent implementation. It contains no proprietary code, icons, images, presets or LUTs, and no GPL or LGPL code; every icon is drawn in code and every asset is openly licensed and attributed (AGENTS.md), apart from the ArtCraft name and logos, which are trademarks of the ArtCraft Team used under docs/brand/LICENSE-brand.txt. ffmpeg is used only as an external test oracle.
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 FilmCraft, under docs/brand/LICENSE-brand.txt.
Forks and modified versions must remove them.
Made by the ArtCraft team and community.