Cut a montage
Short clips (a few seconds each) and a song with a clear beat work best.
Shortcuts
- Space
- Play or pause
- ← →
- Previous or next frame
- ↑ ↓
- Previous or next cut
- Shift ← →
- Move the selected cut
- Alt ← →
- Slip the cut one frame (with Shift: ten)
- ⌫ Del
- Delete the cut; later cuts close the gap
- Ctrl Z
- Undo (⌘ Z on a Mac)
- + −
- Zoom the timeline
- Drag a cut
- Reorder
- Alt drag
- Slip
- Hover
- Skim: the viewer shows that moment
- Drag the ruler
- Scrub
- Ctrl scroll
- Zoom at the pointer; plain scroll pans
How it works
Find the beats
Web Audio decodes the song. The JavaScript tracker implemented here builds an onset-strength envelope from the mel spectrogram, estimates tempo from the envelope's autocorrelation, and uses dynamic programming to place beats on strong onsets at a steady tempo. Beats are tracked across the whole song, then aligned to the chosen music start/end window.
Read the framing
One middle frame per clip is resized to 256 px and centre-cropped to 224. DINOv3-small, fine-tuned on film stills, classifies 7 shot sizes. The 22 MB int8 ONNX model runs in ONNX Runtime Web via WebAssembly and downloads once, with your first own clip. Sample clips use precomputed labels.
Render the edit
Each beat marks a cut. Clips take turns, each cut from a fresh stretch of its clip, rendered at 360p with the shot size label burned into the top-right corner. WebCodecs encodes 24 fps H.264 video and AAC or Opus audio from the chosen music window. Mediabunny writes the MP4. Nothing is uploaded.
Refine the cut
The timeline keeps every cut on its beat. Drag cuts to reorder them, slip a cut to choose a different moment of its clip, or delete it and let the rest close the gap. Hover to skim, undo any step, then render again. Each clip card marks the stretches the edit uses.