Source and program monitors, a real timeline and every trim mode, in a native editor written in pure Rust – down to its own codecs.

A timeline you already know

Source and program monitors, three-point editing, every trim mode, and J/K/L dynamic trimming.

Frame-exact time

An integer timebase keeps 23.976 and 29.97 drop-frame exact. No drift, no rounding, no mystery frames.

Its own codecs

No FFmpeg inside. Native H.264, HEVC, ProRes, VP9, AAC and Opus, with bit-exact decoders.

Color grading

Curves, color wheels, HSL secondaries, LUTs, HDR and log workflows, plus scopes to check your work.

Effects and keyframes

About 55 video effects and 30 transitions, keyframes with value and velocity graphs, and a linear-light GPU compositor.

Broadcast-ready audio

EBU R128 loudness meters, a mixer with automation, and native DSP effects.

What's New

  • Windows on ARM64: release builds, PE header check, install test on ARM64 hardware by @echelon in #69
  • codecs: resampled MP4 audio reads apply the edit list once by @punkhop in #42
  • engine: file.exportInterchange refuses an unknown format by @punkhop in #46
  • interchange: an export names every title it cannot carry by @punkhop in #51
  • engine: a project saved after an interchange import opens again by @punkhop in #43
  • engine: sequence.inspect reports clip ends, gain and marker comments by @punkhop in #48
  • engine: sequence.inspect reports a reversed clip by @punkhop in #59
  • engine: clip.replaceFromBin can keep the clip's source In by @punkhop in #49
  • engine: Replace With Clip reports clips that run past the new media by @punkhop in #50
  • engine: a command whose targets are named in the parameters does not need a selection by @punkhop in #52
  • filmcraft: --help prints usage and an unknown option is an error by @punkhop in #47
  • engine: naming a track that does not exist is an error by @punkhop in #44
  • engine: timeline.place on an audio track places the sound there by @punkhop in #60
  • engine: timeline.move takes linked partners along by @punkhop in #45
  • edit: a ripple trim takes a later split edit along by @punkhop in #56
  • edit: ripple delete closes one gap for a clip with a split edit by @punkhop in #57
  • edit: a speed change with ripple moves later clips once by @punkhop in #58
  • i18n: Japanese interface language (uses an installed system font) by @midasdf in #38
  • MEM1 – MEM4 + HW1: clip memory on a timeline from 12 GB to 1.9 GB; hardware decode actually on by @justjohn12345 in #41
  • Docs: hardware decode correction; log the 2026-10-06 community batch by @echelon in #72
  • Fonts: use craft-fonts as an optional build input (Japanese UI and title fallback) by @echelon in #81
  • Tests: fix seed_sweep overflow and the speed-dependent export progress test by @justjohn12345 in #77
  • interchange: an FCP7 master clip lands in its bin when a sequence used it first by @punkhop in #64
  • project: Clear deletes a bin it is given, with everything in it by @punkhop in #68
  • timeline.move: report the clips an overwrite move covers by @punkhop in #96
  • codecs: look video frames up by the nearest timestamp unit (WebM at 30 fps drops every third frame) by @EthanSuquet in #83
  • h264enc: strict ffmpeg oracle that sees damaged slices (#74) by @EthanSuquet in #101
  • codecs: an MP4/MOV clip lasts as long as its edit list plays it by @EthanSuquet in #102
  • codecs: MP4/MOV pixel format and alpha come from hvcC, avcC and the ProRes frame header (#103) by @HEOJUNFO in #118
  • gpu: upload and composite the alpha plane of Y'CbCr frames by @dcarnelutti in #109
  • graphics: all eight layer handles scale towards the pointer by @justjohn12345 in #79
  • Timeline: the wheel scrolls as in Premiere, and the view cannot be lost by @justjohn12345 in #120
  • Packaging: describe FilmCraft, not PhotoCraft, in package metadata (#94, #100) by @carlitosteso3 in #126
  • i18n: Spanish interface language (Español) by @carlitosteso3 in #127
  • Icons: draw straight lines on whole device pixels by @punkhop in #128
  • docs: add star history chart to README by @coygeek in #122
  • Window ▸ Workspaces: save your own workspaces, like Premiere by @punkhop in #121
  • Ripple trim: a shorter head on a J-cut take is no longer refused by @punkhop in #104
  • Ripple trim: a shorter head after an L cut keeps the earlier sound in place by @punkhop in #124
  • Control: close the connection on input that isn't a request (#119) by @Luskish in #123
  • Sequence: Add Tracks… opens Premiere's dialog (amount, placement, track type) by @justjohn12345 in #117
  • HE-AAC plays at its output rate; AAC export caps the bitrate (#108, parts 1 – 2) by @carlitosteso3 in #129
  • Audio: mix playback 200 ms ahead so a busy Mac doesn't drop sound by @punkhop in #131
  • Audio: play a sequence on a device at another rate without phase jumps by @punkhop in #132
  • Nested sequences: interchange (AAF compositions, OMF rendered sound, EDL reel AX) by @justjohn12345 in #116
  • NEST4 – NEST8: nest toggle, sequences as sources, Reveal in Project, Multi-Camera submenu by @justjohn12345 in #112
  • Timeline: sequence tabs, Premiere-style clip menu, Nest name dialog by @justjohn12345 in #78
  • NEST1 – NEST3: nested sequences safety and Premiere-matching Nest (fixes two crashes) by @justjohn12345 in #82
  • Nested sequences: rendering fidelity (sizes, speed, effects, captions, waveforms) by @justjohn12345 in #113
  • Nested sequences: Timeline tabs (view per sequence, tab menu, reorder, restore on open) by @justjohn12345 in #115
  • Codecs: add clean-room APV (RFC 9924) decoder, encoder, container support, and export presets by @mweinbach in #105
  • Theme: interface type closer to Premiere's by @punkhop in #130
  • Hardening: hostile MP4 edit lists and cyclic subclip chains (#66) by @echelon in #142
  • Tests: image-sequence oracle fixtures are written atomically (#125) by @echelon in #143
  • MCP: render_frame and render_preview leave the playhead where it was (#114) by @echelon in #144
  • Transcripts: builds without speech-to-text say so (#97, #98, #89) by @echelon in #146
  • Packaging: the rpm requires glibc >= 2.35, as the deb does (#93) by @echelon in #147
  • Bridge: a blocking export runs as an app job, so it neither times out nor freezes the app (#91, #92) by @echelon in #154
  • Transcripts: disabled, not failing, in builds without speech-to-text (#89, #97, #98) by @carlitosteso3 in #151
  • Docs: releasing guide, CLI export options, README and CLAUDE.md drift (#85, #86, #87, #88, #99) by @echelon in #156
  • Packaging: the Flatpak can read a project's media wherever it lives (#107) by @echelon in #158
  • Web: window.filmcraft rejects with Error objects everywhere (#90) by @echelon in #159
  • Rename PrintCraft to PdfCraft by @echelon in #177
  • Graphics: point text and paragraph text, as Premiere has them by @justjohn12345 in #166
  • Graphics: only selected layers have a box, and a hidden layer has none by @justjohn12345 in #182
  • Graphics: New Layer from File anchors the picture at its own centre by @ajsongpilot in #190
  • Color Matte: pick the color on creation and change it later (#29) by @carlitosteso3 in #145
  • h264enc: 1-pass bitrate modes no longer starve the opening second by @EthanSuquet in #148
  • Playback: a stalled audio device no longer freezes the playhead (#136) by @carlitosteso3 in #155
  • Media Browser: probing a file doesn't read it whole (#157) by @carlitosteso3 in #165
  • Shortcut recorder accepts modifier chords; Add Edit cuts only selected clips (#164, items 1 and 5) by @carlitosteso3 in #173
  • i18n: add Brazilian Portuguese (pt-br) UI translation by @RicSchonfelder in #176
  • platform: opt-in hardware H.264 encoding with VideoToolbox by @dcarnelutti in #183
  • render: composite only what overlays cover, and reuse the float images by @dcarnelutti in #184
  • export: show the estimated time left of a render next to its percentage by @dcarnelutti in #185
  • platform: H.265 (HEVC) export with VideoToolbox by @dcarnelutti in #186
  • Engine: project.selectAll and project.deselectAll for the Project panel (#168) by @Luna161 in #189
  • Windows: Media Foundation/D3D11 hardware H.264 + HEVC decode by @SaymonMaster14 in #141
  • M10: choose vertical titles from the Type tool flyout by @midasdf in #195
  • Engine: file.import refreshes the offline-missing list (#110) by @Luna161 in #175
  • Windows: VP9 + AV1 hardware decode (Media Foundation / DXVA) by @SaymonMaster14 in #162
  • Windows: NVENC H.264 hardware encoding for Export (opt-in) by @SaymonMaster14 in #180
  • Q/W ripple trim only the selected clips' tracks (#164) by @carlitosteso3 in #207
  • Ripple delete names the sync-locked track in the way; playhead snaps to cuts (#164, items 2, 3 and snap) by @carlitosteso3 in #203
  • Stabilize project lifecycle, timeline, audio and export workflows by @cirocueto2013-wq in #192
  • #199: make Ctrl+C / Ctrl+X / Ctrl+V work on Windows and Linux by @DWAA1660 in #204
  • fix: support integer CPAL devices and recover voice-over/audio failures by @cirocueto2013-wq in #209
  • Web: Link Media Locate… links the chosen file to the selected missing clip (#111) by @Luna161 in #174
  • #188: regression test – a copied Graphic clip pastes at the playhead by @echelon in #212
  • fix: validate hostile project, export and MXF inputs by @cirocueto2013-wq in #210
  • About: contributor and model credits compiled in (grab bag + table, self-submitted names) by @echelon in #215
  • Speed/Duration opens its dialog; dragging an effect parameter is one undo step (#201) by @carlitosteso3 in #213
  • Release: FreeBSD, Flatpak x86_64/aarch64, AppImage zsync; README Downloads by @echelon in #267
  • README Downloads: where to get it, then builds (Windows first) by @echelon in #271