The free, open-source desktop video editor in the style of CapCut.
Timeline editing · offline auto captions · GPU effects and transitions · text to speech · music and stock libraries · an AI assistant that edits for you.
No account. No subscription. No watermark.
Windows 10 / 11 · 64-bit · about 120 MB · all versions

Real playback in the CapRocket player: Comic Cut and Flare Wipe transitions, a green-screen cat (chroma key) and text templates.
- Why CapRocket?
- Download and install
- Tour of the app
- Features
- How it is built
- Run from source
- API keys and privacy
- Contributing
- Support the project
- License and credits
Most "free" editors lock their best tools behind a paid plan. CapRocket is built so that everything is free: features that are premium elsewhere are part of the app, with no limit and no watermark.
| Usually paid elsewhere | In CapRocket |
|---|---|
| Auto captions | ✅ Free and offline with Whisper (Arabic and Darija included) |
| Background removal (green screen) | ✅ Chroma key with colour picker, feather and spill removal |
| Masks | ✅ Split, filmstrip, circle, rectangle, stars, heart, text |
| Animated effects and transitions | ✅ Rendered on the GPU, same picture in the player and the export |
| Text to speech | ✅ Free voices on your PC, or ElevenLabs with your own key |
| AI editing assistant | ✅ RocketPilot, with your own key |
| 4K export, audio-only export | ✅ No watermark, no limit |
It is a desktop app for Windows built with Electron, React, WebGL and FFmpeg. Your media stays on your computer; online libraries are only contacted when you search them.
⬇ Download CapRocket-Setup-0.1.0.exe (Windows 10 / 11, 64-bit, about 120 MB)
Older and newer versions are on the Releases page.
- Download
CapRocket-Setup-0.1.0.exewith the link above. - Run it, pick the install folder and finish. CapRocket appears on the Desktop and in the Start menu.
- The first time, Windows SmartScreen may say "Windows protected your PC": the installer is not code-signed yet. Click More info, then Run anyway.
Big optional parts are downloaded only when you first use them: the speech model for auto captions (about 150 MB) and each text-to-speech voice (about 60 MB). Uninstall from Settings > Apps like any program.
The window follows the layout CapCut users already know:
┌───────────────┬──────────────────────────────┬────────────────┐
│ Library │ Player │ Inspector │
│ Media, Audio, │ move · resize · rotate │ settings of │
│ Text, Effects,│ pictures right on the video │ the selection │
│ Transitions… │ │ │
├───────────────┴──────────────────────────────┴────────────────┤
│ Toolbar │
│ Timeline: Effects · Stickers · Text · Overlay · Main · Audio │
└────────────────────────────────────────────────────────────────┘
Click any picture in the player to select it, drag to move (it snaps to the centre), pull a corner to resize and the round handle to rotate.
Every tile is a live preview: hover it to see the effect or the transition play before you use it.
![]() Effects: VHS Noise, Snow Storm, Fire Burn, Limelight… |
![]() Transitions: Comic Cut, Phone Reveal, Mosaic Wipe… |
![]() Remove BG: chroma key |
![]() Masks with feather and invert |
![]() Transition: type, duration, apply to all |

Right-click a clip to copy / paste attributes, split, extract audio and more. Free effects sit on their own Effects lane.
![]() Media, Pixabay stock, favorites |
![]() Text and caption templates |
![]() Music and sound effects |
![]() Text to speech |
![]() RocketPilot: ask in your own words |
![]() Settings: optional keys, stored encrypted |
✂️ Editing
- Timeline like CapCut: Main track (magnetic), Overlay, Text, Stickers, Effects and Audio tracks, with filmstrip thumbnails and waveforms
- Per-track magnet (ripple editing) and auto snapping to clip edges, markers and the playhead
- Toolbar: Select / Razor tool, split, delete left / right of the playhead (Q / W), duplicate, markers (M), voice-over recording, fit to window, zoom
- Right-click menu: copy / cut / paste, copy / paste attributes, extract audio, export clip audio, move between main and overlay tracks, deactivate clip
- Direct manipulation in the player: select, move, resize and rotate pictures on the video
- Undo / redo for everything, drag and drop from the panels and from Explorer
- Resizable panels and a CapCut-style library: tabs on top, categories on the left
- Smooth preview of heavy files: 10-bit, HEVC or above-1080p videos get a light preview copy automatically; the export always uses the original
🖼️ Picture
- Transform: scale, position, rotation, alignment, opacity and 13 blend modes
- Remove background (chroma key) with colour picker, feather and spill removal
- Masks: split, filmstrip, circle, rectangle, stars, heart and text, with feather and invert
- Overlay track for picture-in-picture (videos and photos, with their sound)
- Filters, adjustments (brightness, contrast, saturation, hue, blur) and speed from 0.25× to 4×
✨ Animated effects and transitions
Our own versions of popular effects, written from scratch:
- Two ways, like CapCut: on a clip (it lasts the whole clip), or free on the Effects track, where you move it, stretch it over several clips, split or delete it
- Effects: VHS Noise, Striped Erosion, BW Grit, Zoom Blast, Snow Storm, Limelight, Fire Burn, Burning Glow, plus Mirror, Flip, Vignette, Grain, Blur, Pixel…
- Transitions: Mosaic Wipe, Snap Back, Flare Wipe, Comic Cut, Brush Cuts, Phone Reveal, Finger Swipe, plus crossfade, fade to black / white, wipes, slides, circle and dissolve
- Transition settings: change the type and the duration, reset, apply to all cuts or remove
- Live preview tiles for every effect, transition and filter
🔤 Text and captions
- Auto captions with Whisper, running locally (whisper.cpp): Arabic (Darija included), French, English, Spanish and more
- Caption and text templates (Hormozi, Karaoke, Word Box, Neon, Arabic Bold, Big Title…), word-by-word highlights, fonts including Arabic ones, outline, shadow, background, bubbles and animations
- One click applies a style to all captions
🎵 Audio and voice
- Music library (Jamendo, through Openverse) and sound effects (SFXMint and Freesound): only sounds that are free to use in videos (CC0, public domain, CC BY), with categories, search and preview
- 20 built-in sound effects generated with FFmpeg, available offline
- Credits for CC BY tracks, ready to copy into your video description
- Volume, fades, voice-over recording, extract audio from a video, export audio only (MP3, WAV, M4A)
- Text to speech:
- Free voices on your PC (Piper): English, French, Spanish, German and Arabic, downloaded once, no account
- ElevenLabs voices with your own API key (29 languages, Arabic included)
- The voice goes on the Audio track at the playhead, or where the selected text starts; the same text is cached, so trying again costs nothing
📦 Stock media and favorites
- Pixabay videos and photos (green screen, backgrounds, nature, travel…) right in the Media tab, with your own free API key
- Star any sound, stock video, photo or file to find it again in Yours > Favorites, in every project
🚀 RocketPilot, the AI assistant
Ask in your own words, in any language: remove the silences, add captions in Arabic, add a title, make it 9:16. RocketPilot edits the project with real editing tools, and every request can be undone in one click. It works with Google Gemini for now; the Settings already store keys for Ollama (local), OpenAI-compatible services and Claude.
📤 Export
- MP4 (H.264 + AAC), from 480p to 4K, any aspect ratio (16:9, 9:16, 1:1, 4:5…), 24 to 60 fps
- Audio only: MP3, WAV or M4A
- What you see is what you get: text, effects and transitions use the same renderers in the player and the export
CapRocket is an Electron app. The interface is React (built with Vite). Everything heavy runs in the main process with FFmpeg, and every visual effect runs on the GPU with WebGL2.
flowchart LR
subgraph UI["Renderer (React)"]
LP["Library<br/>Media · Audio · Text · Effects"]
PV["Player<br/>video + WebGL + text canvas"]
TL["Timeline"]
IN["Inspector"]
RP["RocketPilot"]
ST[("store.js<br/>project · undo / redo")]
LP --> ST
TL --> ST
IN --> ST
RP --> ST
ST --> PV
end
IPC{{"preload.cjs<br/>safe IPC bridge"}}
subgraph MAIN["Main process (Node)"]
FF["ffmpeg.cjs<br/>probe · proxies · export"]
FX["fxjobs.cjs<br/>effects pass"]
WH["whisper.cjs<br/>captions"]
TTS["tts.cjs<br/>Piper · ElevenLabs"]
LIB["library.cjs · stock.cjs<br/>music · SFX · Pixabay"]
SET["settings.cjs<br/>keys encrypted (DPAPI)"]
AI["ai.cjs<br/>Gemini and others"]
end
UI <--> IPC
IPC <--> MAIN
The interface has no Node access and never sees an API key: it talks to the main process only through the small
bridge in electron/preload.cjs. Online services are called from the main process, which adds the key there.
Each effect and transition is written once in a tiny expression language (src/fx/expr.js). The same source
is compiled two ways:
flowchart TB SRC["Effect source<br/>(expression language)"] --> P["Parser"] P --> JS["JS closures<br/>(tests, tools)"] P --> GL["GLSL shader<br/>(src/fx/gl.js)"] GL --> PL["Player and live tiles<br/>WebGL2, real time"] GL --> EX["Export<br/>same shader, frame by frame"]
That is why the exported video looks exactly like the player. The compiler never uses eval or new Function,
so it works under the app's strict Content Security Policy.
sequenceDiagram participant UI as Interface participant M as Main process participant F as FFmpeg UI->>M: export(project, settings) M->>F: decode the frames that need effects (raw RGBA) F-->>UI: frames UI->>UI: WebGL2 draws effects and transitions UI-->>M: processed frames M->>F: store them losslessly (FFV1) M->>F: one filter graph: clips, overlays, chroma key, masks, text, audio mix F-->>M: MP4 (H.264 + AAC) M-->>UI: progress, then done
flowchart LR
T["Text + voice + speed"] --> C{"Already made?"}
C -- yes --> A["Audio file"]
C -- no --> E{"Engine"}
E -- Free --> P["Piper on this PC<br/>(engine and voice downloaded once)"]
E -- ElevenLabs --> X["ElevenLabs API<br/>(your key, from the main process)"]
P --> A
X --> A
A --> TL["Audio track at the playhead"]
| Path | Role |
|---|---|
electron/main.cjs |
Main process: window, IPC, import, export, captions, libraries, settings, AI |
electron/preload.cjs |
The only bridge between the interface and the main process |
electron/ffmpeg.cjs |
Probing, preview proxies and FFmpeg filter graphs for the export |
electron/fxjobs.cjs + src/fxExport.js |
Effects pass: FFmpeg decodes frames, WebGL draws the effects, FFmpeg stores them |
electron/whisper.cjs |
Downloads whisper.cpp and transcribes audio for captions |
electron/tts.cjs |
Text to speech with Piper (local) and ElevenLabs |
electron/library.cjs, electron/stock.cjs |
Audio library (Openverse, SFXMint, built-ins) and Pixabay stock media |
electron/settings.cjs |
Settings and API keys, encrypted with Windows DPAPI |
electron/ai.cjs, src/agent/ |
RocketPilot: model providers, tools and agent loop |
src/store.js |
Project model, reducer, undo / redo, magnet and ripple logic |
src/fx/ |
Effect and transition catalog, expression language, WebGL renderer, live previews |
src/text/ |
Text renderer shared by the player and the export, templates |
src/components/ |
Interface: library, player, timeline, inspector, settings |
scripts/ |
Automated tests |
| Layer | Tools |
|---|---|
| Desktop shell | Electron, electron-builder (NSIS installer) |
| Interface | React 18, Vite, Lucide icons, Fontsource fonts |
| Graphics | WebGL2 shaders, Canvas 2D for text |
| Media | FFmpeg and FFprobe (ffmpeg-static, ffprobe-static) |
| Speech | whisper.cpp (captions), Piper (voices), ElevenLabs (optional) |
| AI | Google Gemini (optional, your key) |
Requirements: Windows 10/11 and Node.js 18 or newer.
git clone https://github.com/medhachim/CapRocket.git
cd CapRocket
npm install
npm startFFmpeg comes with the project (ffmpeg-static), nothing else to install. The first time you use auto captions,
CapRocket downloads whisper.cpp and the base speech model (about 150 MB) to %APPDATA%\CapRocket\whisper.
npm run devChanges in src/ appear instantly without losing your project; changes in electron/ restart the app.
npm run distThe installer is written to release/CapRocket-Setup-<version>.exe. It lets the user pick the folder and adds
Desktop and Start menu shortcuts. It is not code-signed, so SmartScreen may ask for confirmation the first time.
npm run test:exportOther suites: test:captions, test:magnet, test:toolbar, test:clipmenu, test:layers, test:fx,
test:library, test:stock, test:favorites, test:tts, test:ai, test:agent.
UI tests drive the real app with FVE_SMOKE=<folder> FVE_SMOKE_MODE=<mode> npx electron . (see electron/smoke.cjs)
and never touch your real settings. The screenshots and animations in this README come from the readme mode
(electron/smoke-readme.cjs).
- Open Settings (gear icon, top right) to add keys for the AI assistant (Gemini, Ollama, OpenAI-compatible, Claude), for Pixabay and for ElevenLabs.
- All keys are optional: everything else works without an account.
- Keys are encrypted with Windows secure storage (DPAPI) in
%APPDATA%\CapRocket\settings.json: never written in plain text, never logged, never sent to the interface. - Captions run offline. Online services only receive what you send them (a search, the text to speak, a request to RocketPilot).
- Never commit a key to this repository. If a key is ever exposed, revoke it and create a new one.
Issues and pull requests are welcome. Please:
- keep the app free of paywalls and trackers;
- keep interface text in English;
- never add code or assets taken from CapCut or other apps;
- run the tests that cover your change before opening a pull request.
CapRocket is free and will stay free. If it saves you time or money, you can support its development:
Starring the repository and sharing the app also help a lot.
CapRocket is released under the MIT License.
- FFmpeg comes from
ffmpeg-static, a GPL build: if you distribute CapRocket, you must also follow FFmpeg's GPL license. - Speech recognition: whisper.cpp and OpenAI's Whisper models (MIT).
- Voices: Piper (MIT) with voices under CC0, public domain or CC BY (the Arabic voice's dataset states no licence); ElevenLabs with your own key, under its terms.
- Online content: music from Jamendo through Openverse, sound effects from SFXMint and Freesound, stock media from Pixabay. Each item keeps its own license; CapRocket only lists sounds that may be used in videos and shows the credits CC BY requires.
- The demo footage in these screenshots comes from Pixabay (Pixabay Content License).
- Fonts from Fontsource (Open Font License). Icons from Lucide (ISC).
CapRocket is an independent project. It is not affiliated with, endorsed by, or connected to CapCut or ByteDance, and it contains no CapCut code or assets. "CapCut" is a trademark of its owner, used here only to describe the style of the app.
![]()
Made with ♥ by MedHachim
If CapRocket helps you, give it a ⭐ on GitHub or buy me a coffee:












