freecut is a free, open source photo & video editors project written in TypeScript and released under MIT. It has 2,186 GitHub stars, 341 forks and 12 open issues, and was last pushed 19 days ago. On this registry it ranks #26 of 29 tracked projects in Photo & Video Editors, with 5 head-to-head comparisons available.

What is freecut?

FreeCut is an MIT-licensed, browser-based multi-track video editor written in TypeScript for editors who want professional timeline, compositing, and export tools without installing desktop software or uploading media to a server.

What it is

FreeCut is a browser-based, multi-track video editor that runs entirely in the client through WebGPU, WebCodecs, Web Workers, OPFS, and the File System Access API. It is a React and TypeScript application published under the MIT licence and hosted at freecut.net, where editing, preview, analysis, transcription, AI generation, and export all run in the browser rather than on a remote service. Development happens in the open, with a Discord community used for feature requests, bug reports, and feedback on browser-based editing workflows.

The problem it solves is the install-and-upload cycle of conventional video editing. Nothing needs to be installed, and media is never uploaded: projects and source media stay local, while the application writes projects, linked media metadata, thumbnails, waveforms, generated AI assets, transcripts, scene cuts, and caches as plain files inside a workspace folder chosen on disk. The workspace therefore stays inspectable and portable, and those plain files remain the durable copy of a project instead of an opaque remote store.

Key capabilities

  • Multi-track timeline with video, audio, text, image, shape, mask, Lottie, and compound clip items, plus multiple timelines per project handled as Sequences with tabs.
  • Editing tools for split, join, ripple, rolling, slip, slide, and rate-stretch, with a source monitor offering mark in/out, patch destinations, insert edits, and overwrite edits.
  • WebGPU-first effects: blur (gaussian, box, motion, radial, zoom), color tools including LUT files in .cube format, distortion, stylize, and chroma key with tolerance, softness, and spill suppression, plus 25 blend modes.
  • Keyframe animation with a Bezier graph editor, dopesheet, split view, and multi-curve overlays.
  • Audio with clip and track EQ, a six-band floating EQ panel, per-clip pitch shift in semitones and cents using SoundTouch preview, track faders, master bus fader, and stereo LED meters.
  • Frame-accurate playback through a custom Clock and composition runtime, with GPU color scopes for waveform, vectorscope, and histogram, decoder prewarming, and adaptive preview quality.
  • Export that preserves pitch, EQ, fades, volume, and transition audio paths as heard in preview.

Who uses it and how

  • Editors on machines where installing desktop software is impractical, since the whole application runs from a browser at freecut.net.
  • Privacy-sensitive work, because media is never uploaded and project files, thumbnails, waveforms, and transcripts live in a workspace folder on local disk.
  • Multi-sequence projects, using compound clips opened as their own sequences and two-up or four-up edit panels for ripple, rolling, slip, and slide operations.
  • Teams and individuals who want repeatable setups, using project templates, canvas and FPS auto-matched from the first media, and configurable keyboard shortcuts.

Getting started

Open freecut.net in a browser; no installation and no upload step is required. The user guide at https://freecut.net/docs covers first use, and the Discord server is the support and feedback channel.

How it compares

The facts name no comparable editors and no paid products that FreeCut replaces, so on this evidence it stands alone in this registry. What distinguishes it here is the MIT licence, a client-only architecture with no server component or upload path, and project data owned locally as plain files.

When to use it — and when not to

FreeCut fits when the browser is the only available runtime, when media cannot leave the machine, or when the workspace should stay a folder of ordinary files; it does not fit workflows needing a server-side render or collaboration backend, since no such component is described, and browsers without WebGPU or WebCodecs support fall back to Canvas 2D paths. Operational guidance in the supplied facts is thin: the README excerpt documents features but gives no build or deployment instructions and lists no released version, so the hosted site and the user guide are the practical entry points, and the twelve open issues are worth reviewing before depending on it. A self-hoster operates nothing, as no database, storage service, or SMTP dependency appears anywhere in the facts.

project readme (upstream, from github) — read inline

FreeCut

freecut.net

Edit videos. In your browser.

License: MIT Discord

FreeCut editor workspace

FreeCut is a browser-based, multi-track video editor. No install, no uploads: projects and media stay local, while editing, preview, analysis, transcription, AI generation, and export run in the browser through WebGPU, WebCodecs, Web Workers, OPFS, and the File System Access API.

FreeCut writes projects, linked media metadata, thumbnails, waveforms, generated AI assets, transcripts, scene cuts, and caches as plain files inside a workspace folder you choose on disk.

User Guide

New to FreeCut? Start with the user guide.

Community

Join the FreeCut Discord to share edits, request features, report bugs, and give feedback on browser-based editing workflows.

Screenshots

Timeline
Keyframes
Semantic scene search
Export
Audio EQ
Hotkeys

Features

Timeline & Editing

  • Multi-track timeline with video, audio, text, image, shape, mask, Lottie, and compound clip items
  • Multiple timelines per project as Sequences with tabs, unified with compound clips (open a compound clip as its own sequence)
  • Linked audio/video editing with split, join, ripple, rolling, slip, slide, and rate-stretch tools
  • Cut-centered transitions with live resize, alignment, source-time anchoring, and preview overlays
  • Track mute/visibility/lock controls, linked sync badges, track push/pull, and close-gap workflows
  • Filmstrip thumbnails, stereo waveforms, snap guides, markers, timecode, and undo/redo
  • Source monitor with mark in/out, patch destinations, insert edits, and overwrite edits
  • Project templates, auto-match canvas/FPS from first media, and configurable keyboard shortcuts

Preview & Playback

  • Real-time preview with transform, crop, corner-pin, mask, and group gizmos
  • Frame-accurate playback through FreeCut's custom Clock and composition runtime
  • Fast scrub overlays, decoder prewarming, adaptive preview quality, and source warming
  • Two-up and four-up edit panels for ripple, rolling, slip, and slide operations
  • GPU color scopes: waveform, vectorscope, and histogram
  • Separate project master bus and monitor/device volume

Audio

  • Clip volume, audio fades, track faders, master bus fader, and stereo LED meters
  • Per-clip pitch shift in semitones/cents with SoundTouch preview playback
  • Clip EQ and track EQ stages, including a compact six-band floating EQ panel
  • Pitch, EQ, fades, volume, and transition audio paths are preserved in preview and export

Effects, Masks & Compositing

All visual effects and compositing paths are WebGPU-first, with fallbacks where practical.

  • Blur: gaussian, box, motion, radial, zoom
  • Color: brightness, contrast, exposure, hue shift, saturation, vibrance, temperature/tint, levels, curves, color wheels, gradient map, LUT (.cube), grayscale, sepia, invert
  • Distortion: pixelate, RGB split, twirl, wave, bulge/pinch, kaleidoscope, mirror, fluted glass, ripple glass, glass mosaic, droste
  • Stylize: vignette, film grain, sharpen, posterize, glow, edge detect, scanlines, halftone, ASCII art, color glitch, block glitch, VHS, CRT, ink, pixel sort
  • Keying: chroma key with tolerance, softness, and spill suppression
  • 25 blend modes, including multiply, screen, overlay, soft light, difference, hue, saturation, color, and luminosity
  • Clip masks and pen paths with keyframeable geometry transforms
  • Color picker with hex and alpha input, plus an in-app eyedropper with loupe

Transitions

  • Fade, wipe, slide, 3D flip, clock wipe, and iris transitions with directional variants
  • Dissolve, sparkles, glitch, light leak, pixelate, chromatic aberration, and radial blur
  • Adjustable duration, alignment, source anchoring, and Canvas 2D fallback for non-WebGPU paths

Keyframe Animation

  • Bezier graph editor, dopesheet, split view, and multi-curve overlays
  • Easing presets (linear, ease-in/out, cubic-bezier, spring) with a live-preview editor and saved custom presets
  • Procedural motion modifiers (drift, sway, breath, spin, shake) evaluated at render time, with one-click bake to keyframes
  • Motion text: per-character, per-word, and per-line text animation
  • Auto-keyframe mode, tangent mirroring, property accordions, and marquee selection
  • Animated transform, crop, mask, text, effect, and color properties

Media & Import

  • Import videos, audio, images, GIFs, SVGs, Lottie animations, and generated assets without copying originals
  • Edit imported Lottie animations (.json and .lottie): remap colors and themes, edit text, and adjust value slots with live preview
  • Apple ProRes decode for import, preview, and thumbnails, including variants browsers cannot natively decode
  • Proxy generation, thumbnail extraction, waveform caching, and media relinking

Local AI & Analysis

Runs on-device in the browser — nothing is uploaded.

  • On-device transcription with the Parakeet engine (Whisper fallback) and generated caption text items
  • AI captioning with local vision-language providers and configurable sample cadence
  • Scene detection with fast histogram or frame-accurate adaptive content analysis and optional model verification
  • Scene Browser for searching captioned media and reusing detected moments
  • Local Kokoro text-to-speech voiceovers
  • Local MusicGen music generation with presets, progress, and cancellation
  • Local model cache controls and unload controls in settings

Projects & Storage

  • Workspace folder persistence via the File System Access API
  • Multi-workspace switcher with known workspace management
  • Projects stored as plain files on disk, with legacy browser-storage migration
  • Project soft-delete, restore, empty-trash, and permanent delete flows
  • Project ZIP bundle export/import with Zod-validated schemas
  • Auto-save, project thumbnails, workspace cache mirroring, and orphan cleanup

Export

  • In-browser rendering through WebCodecs and worker-backed render paths
  • Export any sequence, not just the main timeline
  • Video containers: MP4, WebM, MOV, MKV
  • Video codecs: H.264, H.265, VP8, VP9, AV1 (where the browser provides an encoder)
  • Audio export formats: MP3, AAC, WAV/PCM
  • Subtitles: off, burn-in, sidecar file, or embedded soft track (container-dependent)
  • Quality presets from low to ultra, with runtime capability checks and fallbacks

Quick Start

Prerequisites: Node.js 22+ recommended, npm 11+, and a modern Chromium browser.

git clone https://github.com/walterlow/freecut.git
cd freecut
npm install
npm run dev

Open http://localhost:5173 in Chrome, Edge, Brave, or Arc.

Workflow

  1. Pick a workspace folder when prompted.
  2. Create a project from the projects page.
  3. Import media by dragging files into the media library.
  4. Drag clips to the timeline, then trim, arrange, add effects, transitions, masks, captions, and audio work.
  5. Use the source monitor, keyframe editor, scene browser, AI tools, and preview overlays as needed.
  6. Export directly from the browser.

Browser Support

Chrome or Edge 113+ is recommended. FreeCut depends on WebGPU, WebCodecs, OPFS, and the File System Access API, so a modern Chromium browser is required for the full workflow.

Brave

Brave may disable the File System Access API. To enable it:

  1. Navigate to brave://flags/#file-system-access-api
  2. Change the setting from Disabled to Enabled
  3. Click Relaunch to restart the browser

Tech Stack

Development

Most commands are npm scripts backed by vite-plus (vp).

npm run dev                 # Dev server on port 5173
npm run build               # Production build
npm run preview             # Preview the production build
npm run perf                # Build + serve a production-like perf target

npm run lint                # Oxlint through Vite+
npm run format              # Oxfmt
npm run test:run            # Run the test suite once (npm run test to watch)
npm run verify              # Full gate: static/arch/unit/build + portable headless contracts
npm run headless:test       # Build once, then run the complete portable headless suite

npm run routes              # Regenerate the TanStack Router route tree

npm run verify runs the complete quality gate, including architecture and dead-code checks scoped to the current diff, all Node headless contracts, the built-harness Chrome regression, every public edit operation, and generated media/audio rendering. Real-GPU effects remain an explicit operator/release gate because hosted PR CI does not provide a portable WebGPU adapter.

Performance Checks

  • npm run dev is best for correctness and iteration, but includes React/Vite dev overhead, HMR, and debug instrumentation.
  • npm run perf is the better check for real playback or rendering performance because it serves a production build locally.
  • npm run dev:quiet keeps HMR while hiding the editor debug panel.
  • npm run dev:compare starts http://localhost:5173 and http://localhost:4173 together for side-by-side dev vs production-like checks.

Environment

VITE_SHOW_DEBUG_PANEL=true   # Show debug panel in dev

Project Structure

The src/ tree is organized into a few layers:

  • features/ — user-facing UI modules (editor, timeline, preview, media library, effects, keyframes, export, projects, settings, scene browser, and more)
  • runtime/ — playback and rendering engines (composition runtime, player, clock) that are not user-facing UI
  • infrastructure/ — platform adapters for GPU (effects, transitions, compositor, masks, text, scopes), analysis, audio, browser, storage, and thumbnails
  • shared/ — framework-agnostic primitives and cross-feature state (transition engine, schema migrations, Zustand stores, utils)
  • app/, components/, config/, routes/, types/ — bootstrap, shadcn/ui components, configuration, file-based routes, and shared types

Feature modules use their local deps/ adapters for cross-feature imports. Platform-coupled code (GPU, ML, audio, storage, browser) lives in @/infrastructure/* and is imported directly; there is no separate lib/ layer.

Contributing

FreeCut welcomes contributions that match the current priorities.

Current development priorities, in order:

  1. Bug fixes across FreeCut.
  2. Performance improvements for the live editor and playback, plus faster exports.
  3. New features that have been discussed first.
  • Report bugs: open an issue with reproducible steps, your browser version, and screenshots or recordings
  • Report performance problems: include the editing or export workflow, source media details, project size, and when the slowdown begins
  • Discuss feature ideas: join the FreeCut Discord or start a GitHub Discussion before implementation. New features may be considered, but bug fixes and performance work take priority

License

MIT

Frequently asked questions

Is freecut free to use?

freecut is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does freecut do?

FreeCut is a professional-grade video editor that runs entirely in your browser. Professional video editing, zero installation. Create stunning videos with mult

What is freecut written in?

freecut is primarily written in TypeScript. Its source is publicly available at https://github.com/walterlow/freecut, and it has 2,186 GitHub stars.