No installation. No uploads. No subscriptions. Everything runs locally using WebGPU, WebCodecs, and the File System Access API.

KubeezCut is a fully client-side, multi-track video editor that runs without a backend. Your media never leaves your machine — everything from decoding to rendering to export happens locally inside the browser tab, powered by modern web platform APIs.
Media generation — Kubeez is the media generation platform for creating AI-generated assets you can bring into KubeezCut (see Generate media in Screenshots).
Landing images live in public/assets/landing/:
| File | What's shown |
|---|---|
timeline.png | Multi-track timeline (video + audio, tools, waveforms) |
keyframe.png | Keyframe editor — graph / sheet / split view |
projects.png | Video settings — resolution presets (YouTube, Shorts, etc.) and custom canvas |
ai-generation.png | Kubeez (Generate media) — model catalog and prompt panel |
local-tts.png | AI sidebar — Text to Speech (local WebGPU, Kitten TTS) |
| Timeline & editing | Keyframe editor |
|---|---|
![]() | ![]() |
| Video settings (project canvas) | Kubeez — Generate media |
|---|---|
![]() | ![]() |
| Local AI — Text to Speech |
|---|
![]() |
Export — Encoding runs in the browser (WebCodecs: MP4, WebM, MOV, MKV; see Export under Features). Output size matches your project canvas; the Video settings screenshot above is where preset resolutions and custom width/height are chosen.
All visual effects run as WebGPU shaders — zero CPU overhead during preview.
| Category | Effects |
|---|---|
| Blur | Gaussian, box, motion, radial, zoom |
| Color | Brightness, contrast, exposure, hue shift, saturation, vibrance, temperature/tint, levels, curves, color wheels, grayscale, sepia, invert |
| Distortion | Pixelate, RGB split, twirl, wave, bulge/pinch, kaleidoscope, mirror, fluted glass |
| Stylize | Vignette, film grain, sharpen, posterize, glow, edge detect, scanlines, color glitch |
| Keying | Chroma key (green/blue screen) with tolerance, softness, and spill suppression |
25 GPU-accelerated blend modes — normal, darken, multiply, color burn, linear burn, lighten, screen, color dodge, linear dodge, overlay, soft light, hard light, vivid light, linear light, pin light, hard mix, difference, exclusion, subtract, divide, hue, saturation, color, luminosity.
In-browser export via WebCodecs — no server required.
| Options | |
|---|---|
| Containers | MP4, WebM, MOV, MKV |
| Video codecs | H.264, H.265, VP8, VP9, AV1 |
| Audio formats | MP3, AAC, WAV (PCM) |
| Quality presets | Low (2 Mbps) → Ultra (20 Mbps) |
| Format | Supported |
|---|---|
| Video | MP4, WebM, MOV, MKV |
| Audio | MP3, WAV, AAC, OGG, Opus |
| Image | JPG, PNG, GIF (animated), WebP |
| Max file size | 5 GB |
Prerequisites: Node.js 18+ and Chrome or Edge 113+
git clone https://github.com/MeepCastana/KubeezCut.git
cd KubeezCut
npm install
npm run dev
Open http://localhost:5173 in Chrome.
Chrome or Edge 113+ is required. KubeezCut relies on WebGPU, WebCodecs, OPFS, and the File System Access API — all of which need a modern Chromium browser.
Brave users — Brave disables the File System Access API by default. Navigate to
brave://flags/#file-system-access-api, set it to Enabled, and relaunch.
| Action | Shortcut |
|---|---|
| Play / Pause | Space |
| Previous / Next frame | ← / → |
| Previous / Next snap point | ↑ / ↓ |
| Go to start / end | Home / End |
| Split at playhead | Ctrl+K |
| Split at cursor | Shift+C |
| Join clips | Shift+J |
| Delete selected | Delete |
| Ripple delete | Ctrl+Delete |
| Freeze frame | Shift+F |
| Nudge item | Shift+Arrow / Ctrl+Shift+Arrow |
| Undo / Redo | Ctrl+Z / Ctrl+Shift+Z |
| Copy / Cut / Paste | Ctrl+C / Ctrl+X / Ctrl+V |
| Selection tool | V |
| Razor tool | C |
| Rate stretch | R |
| Rolling edit | N |
| Ripple edit | B |
| Slip | Y |
| Slide | U |
| Toggle snap | S |
| Add / Remove marker | M / Shift+M |
| Add keyframe | A |
| Toggle keyframe editor | Ctrl+Shift+A |
| Mark In / Out | I / O |
| Insert / Overwrite edit | , / . |
| Zoom in / out | Ctrl+= / Ctrl+- |
| Zoom to fit | \ |
| Save | Ctrl+S |
| Export | Ctrl+Shift+E |
See the in-app shortcuts dialog for the complete list.
| Layer | Technology |
|---|---|
| UI | React 19, TypeScript 5.9, Tailwind CSS 4, shadcn/ui |
| Routing | TanStack Router (file-based, type-safe) |
| State | Zustand 5 + Zundo (undo/redo) |
| GPU | WebGPU — effects, compositing, transitions, scopes |
| Decoding | Mediabunny (WASM-accelerated media decode) |
| Encoding | WebCodecs — browser-native encode and export |
| Storage | OPFS + IndexedDB via idb |
| Parallelism | Web Workers for export, decode, transcription, scene detection |
| Build | Vite 6 with manual chunk splitting |
npm run dev # Dev server on port 5173
npm run dev:quiet # Dev server without debug panel
npm run dev:compare # Run dev + perf preview side-by-side
npm run build # Production build
npm run lint # ESLint
npm run test # Vitest (watch mode)
npm run test:run # Vitest (single run)
npm run test:coverage # Coverage report
npm run routes # Regenerate TanStack Router route tree
npm run verify # Full CI gate: boundaries + lint + tests + build
npm run check:boundaries # Feature isolation boundaries
npm run check:deps-contracts # Deps contract seam routing
npm run check:legacy-lib-imports # Block direct @/lib/* usage
npm run check:deps-wrapper-health # Unused pass-through deps wrappers
npm run check:edge-budgets # Feature seam coupling budgets
npm run perf # Build + serve a production-like local target (port 4173)
npm run dev:compare # Compare dev (5173) vs prod-like (4173) side-by-side
Use npm run perf to distinguish real regressions from dev-mode noise (React overhead, HMR, debug instrumentation).
src/
├── app/ # App bootstrap, providers, debug panel
├── domain/ # Framework-agnostic domain logic
│ └── timeline/ # Transitions engine, registry, and renderers
├── infrastructure/ # Browser/storage/GPU adapters
├── lib/
│ ├── gpu-effects/ # WebGPU effect pipeline + shader definitions
│ ├── gpu-transitions/ # WebGPU transition pipeline + shaders
│ ├── gpu-compositor/ # WebGPU blend mode compositor
│ ├── gpu-scopes/ # Waveform, vectorscope, histogram renderers
│ ├── masks/ # Mask texture management
│ ├── analysis/ # Optical flow and scene detection
│ ├── thumbnails/ # GPU-accelerated thumbnail renderer
│ ├── fonts/ # Font loading
│ ├── shapes/ # Shape path generators
│ └── migrations/ # Versioned data migration system
├── features/
│ ├── editor/ # Editor shell, toolbar, panels, stores
│ ├── timeline/ # Multi-track timeline, actions, services
│ ├── preview/ # Preview canvas, transform gizmo, GPU scopes
│ ├── player/ # Playback engine (Clock, composition)
│ ├── composition-runtime/ # Rendering sequences, items, audio, transitions
│ ├── export/ # WebCodecs export pipeline (Web Worker)
│ ├── effects/ # GPU effect system and UI panels
│ ├── keyframes/ # Keyframe animation, Bezier editor, easing
│ ├── media-library/ # Media import, metadata, OPFS proxies, transcription
│ ├── project-bundle/ # Project ZIP export/import
│ ├── projects/ # Project management
│ └── settings/ # App settings, keyboard shortcut editor
├── shared/ # Shared UI, state, and utilities
├── components/ui/ # shadcn/ui base components
├── config/hotkeys.ts # Keyboard shortcut definitions
├── routes/ # TanStack Router (file-based, auto-generated)
└── types/ # Shared TypeScript types
KubeezCut is a combined fork — built on top of FreeCut as its base, with selected features and UX patterns adapted from OpenCut, plus our own optimizations on top of both.
Our additions on top:
If you like KubeezCut, please go star FreeCut and OpenCut too — this project would not exist without their work.
MIT — free to use, modify, and distribute.
50 commits
6 commits
TypeScript
98.9%
No installation. No uploads. No subscriptions. Everything runs locally using WebGPU, WebCodecs, and the File System Access API.

KubeezCut is a fully client-side, multi-track video editor that runs without a backend. Your media never leaves your machine — everything from decoding to rendering to export happens locally inside the browser tab, powered by modern web platform APIs.
Media generation — Kubeez is the media generation platform for creating AI-generated assets you can bring into KubeezCut (see Generate media in Screenshots).
Landing images live in public/assets/landing/:
| File | What's shown |
|---|---|
timeline.png | Multi-track timeline (video + audio, tools, waveforms) |
keyframe.png | Keyframe editor — graph / sheet / split view |
projects.png | Video settings — resolution presets (YouTube, Shorts, etc.) and custom canvas |
ai-generation.png | Kubeez (Generate media) — model catalog and prompt panel |
local-tts.png | AI sidebar — Text to Speech (local WebGPU, Kitten TTS) |
| Timeline & editing | Keyframe editor |
|---|---|
![]() | ![]() |
| Video settings (project canvas) | Kubeez — Generate media |
|---|---|
![]() | ![]() |
| Local AI — Text to Speech |
|---|
![]() |
Export — Encoding runs in the browser (WebCodecs: MP4, WebM, MOV, MKV; see Export under Features). Output size matches your project canvas; the Video settings screenshot above is where preset resolutions and custom width/height are chosen.
All visual effects run as WebGPU shaders — zero CPU overhead during preview.
| Category | Effects |
|---|---|
| Blur | Gaussian, box, motion, radial, zoom |
| Color | Brightness, contrast, exposure, hue shift, saturation, vibrance, temperature/tint, levels, curves, color wheels, grayscale, sepia, invert |
| Distortion | Pixelate, RGB split, twirl, wave, bulge/pinch, kaleidoscope, mirror, fluted glass |
| Stylize | Vignette, film grain, sharpen, posterize, glow, edge detect, scanlines, color glitch |
| Keying | Chroma key (green/blue screen) with tolerance, softness, and spill suppression |
25 GPU-accelerated blend modes — normal, darken, multiply, color burn, linear burn, lighten, screen, color dodge, linear dodge, overlay, soft light, hard light, vivid light, linear light, pin light, hard mix, difference, exclusion, subtract, divide, hue, saturation, color, luminosity.
In-browser export via WebCodecs — no server required.
| Options | |
|---|---|
| Containers | MP4, WebM, MOV, MKV |
| Video codecs | H.264, H.265, VP8, VP9, AV1 |
| Audio formats | MP3, AAC, WAV (PCM) |
| Quality presets | Low (2 Mbps) → Ultra (20 Mbps) |
| Format | Supported |
|---|---|
| Video | MP4, WebM, MOV, MKV |
| Audio | MP3, WAV, AAC, OGG, Opus |
| Image | JPG, PNG, GIF (animated), WebP |
| Max file size | 5 GB |
Prerequisites: Node.js 18+ and Chrome or Edge 113+
git clone https://github.com/MeepCastana/KubeezCut.git
cd KubeezCut
npm install
npm run dev
Open http://localhost:5173 in Chrome.
Chrome or Edge 113+ is required. KubeezCut relies on WebGPU, WebCodecs, OPFS, and the File System Access API — all of which need a modern Chromium browser.
Brave users — Brave disables the File System Access API by default. Navigate to
brave://flags/#file-system-access-api, set it to Enabled, and relaunch.
| Action | Shortcut |
|---|---|
| Play / Pause | Space |
| Previous / Next frame | ← / → |
| Previous / Next snap point | ↑ / ↓ |
| Go to start / end | Home / End |
| Split at playhead | Ctrl+K |
| Split at cursor | Shift+C |
| Join clips | Shift+J |
| Delete selected | Delete |
| Ripple delete | Ctrl+Delete |
| Freeze frame | Shift+F |
| Nudge item | Shift+Arrow / Ctrl+Shift+Arrow |
| Undo / Redo | Ctrl+Z / Ctrl+Shift+Z |
| Copy / Cut / Paste | Ctrl+C / Ctrl+X / Ctrl+V |
| Selection tool | V |
| Razor tool | C |
| Rate stretch | R |
| Rolling edit | N |
| Ripple edit | B |
| Slip | Y |
| Slide | U |
| Toggle snap | S |
| Add / Remove marker | M / Shift+M |
| Add keyframe | A |
| Toggle keyframe editor | Ctrl+Shift+A |
| Mark In / Out | I / O |
| Insert / Overwrite edit | , / . |
| Zoom in / out | Ctrl+= / Ctrl+- |
| Zoom to fit | \ |
| Save | Ctrl+S |
| Export | Ctrl+Shift+E |
See the in-app shortcuts dialog for the complete list.
| Layer | Technology |
|---|---|
| UI | React 19, TypeScript 5.9, Tailwind CSS 4, shadcn/ui |
| Routing | TanStack Router (file-based, type-safe) |
| State | Zustand 5 + Zundo (undo/redo) |
| GPU | WebGPU — effects, compositing, transitions, scopes |
| Decoding | Mediabunny (WASM-accelerated media decode) |
| Encoding | WebCodecs — browser-native encode and export |
| Storage | OPFS + IndexedDB via idb |
| Parallelism | Web Workers for export, decode, transcription, scene detection |
| Build | Vite 6 with manual chunk splitting |
npm run dev # Dev server on port 5173
npm run dev:quiet # Dev server without debug panel
npm run dev:compare # Run dev + perf preview side-by-side
npm run build # Production build
npm run lint # ESLint
npm run test # Vitest (watch mode)
npm run test:run # Vitest (single run)
npm run test:coverage # Coverage report
npm run routes # Regenerate TanStack Router route tree
npm run verify # Full CI gate: boundaries + lint + tests + build
npm run check:boundaries # Feature isolation boundaries
npm run check:deps-contracts # Deps contract seam routing
npm run check:legacy-lib-imports # Block direct @/lib/* usage
npm run check:deps-wrapper-health # Unused pass-through deps wrappers
npm run check:edge-budgets # Feature seam coupling budgets
npm run perf # Build + serve a production-like local target (port 4173)
npm run dev:compare # Compare dev (5173) vs prod-like (4173) side-by-side
Use npm run perf to distinguish real regressions from dev-mode noise (React overhead, HMR, debug instrumentation).
src/
├── app/ # App bootstrap, providers, debug panel
├── domain/ # Framework-agnostic domain logic
│ └── timeline/ # Transitions engine, registry, and renderers
├── infrastructure/ # Browser/storage/GPU adapters
├── lib/
│ ├── gpu-effects/ # WebGPU effect pipeline + shader definitions
│ ├── gpu-transitions/ # WebGPU transition pipeline + shaders
│ ├── gpu-compositor/ # WebGPU blend mode compositor
│ ├── gpu-scopes/ # Waveform, vectorscope, histogram renderers
│ ├── masks/ # Mask texture management
│ ├── analysis/ # Optical flow and scene detection
│ ├── thumbnails/ # GPU-accelerated thumbnail renderer
│ ├── fonts/ # Font loading
│ ├── shapes/ # Shape path generators
│ └── migrations/ # Versioned data migration system
├── features/
│ ├── editor/ # Editor shell, toolbar, panels, stores
│ ├── timeline/ # Multi-track timeline, actions, services
│ ├── preview/ # Preview canvas, transform gizmo, GPU scopes
│ ├── player/ # Playback engine (Clock, composition)
│ ├── composition-runtime/ # Rendering sequences, items, audio, transitions
│ ├── export/ # WebCodecs export pipeline (Web Worker)
│ ├── effects/ # GPU effect system and UI panels
│ ├── keyframes/ # Keyframe animation, Bezier editor, easing
│ ├── media-library/ # Media import, metadata, OPFS proxies, transcription
│ ├── project-bundle/ # Project ZIP export/import
│ ├── projects/ # Project management
│ └── settings/ # App settings, keyboard shortcut editor
├── shared/ # Shared UI, state, and utilities
├── components/ui/ # shadcn/ui base components
├── config/hotkeys.ts # Keyboard shortcut definitions
├── routes/ # TanStack Router (file-based, auto-generated)
└── types/ # Shared TypeScript types
KubeezCut is a combined fork — built on top of FreeCut as its base, with selected features and UX patterns adapted from OpenCut, plus our own optimizations on top of both.
Our additions on top:
If you like KubeezCut, please go star FreeCut and OpenCut too — this project would not exist without their work.
MIT — free to use, modify, and distribute.
50 commits
6 commits
TypeScript
98.9%