fileformer
search⌘KtranslateENexpand_moreupload_fileConvert
Converters8 file families · 44 direct conversions
What changes in a conversionarrow_forward
home/video-tools/video-editor

Free Online Video Editor

Layer, cut and mix videos into one MP4.

Put up to four videos on one frame, trim and split them on a timeline, give each layer its own volume, speed, voice pitch and reverb, then export a single MP4 at up to 4K. Everything runs in this tab.

lockNothing leaves your deviceFrames are drawn and encoded in this tab with the browser's own H.264 encoder.
layersUp to four layers on one canvasDrag to move, drag a corner to resize, or pick split-screen, picture-in-picture or a grid.
graphic_eqThe preview plays the export's soundSpeed, pitch and reverb are rendered by the same code before you press play, not approximated.
CANVAS
16:99:161:14:3
LAYOUT
picture_in_picturePicture in pictureview_columnSide by sideview_agendaStackedgrid_viewGrid
undoUndo
play_arrow0:00.0 / 0:00.0content_cutSplitdeleteDeleteAdd a video to start. Everything runs in your browser.
touch_appSelect a layerClick a video on the canvas or its name in the timeline to set its position, order, volume, speed, pitch and reverb.
flip_to_backflip_to_frontdelete
POSITION ·
Fill the canvasFit the whole video
Volume
Speed−+
Pitch follows speed
Pitch
Reverb
TOP LAYER FIRST
0:000:010:020:030:040:050:060:07
No layers. Add a video below.
0 of 4 layers · click a clip to add it
EXPORT
4K1080p720p480p
1920×1080 · 0.0 smovieExport MP4
~/speed-pitch-reverb

Six sound effects, run and measured here.

A 3-second test voice goes through the same code the export uses. Each card then measures the result: how long it lasts, which note it sits on, and how long the sound rings on after the voice stops. Speed without a pitch change uses time-stretching (WSOLA); a pitch change without a speed change stretches first, then resamples.

Original test voice3.00 s · 219.2 Hz (A3) · eight syllablesplay_arrowPlay
Bars cover 4.4 s on every card, so longer results and reverb tails show up as extra width.
Custom speed1.5× · pitch staysplay_arrow
2.00 slength (was 3.00)220 HzA3 · +0.0 st0.00 srings on after
Time-stretching drops whole waveform cycles instead of reading faster, so the voice is shorter but sits on the same note.north_westUse on the selected layer
Voice pitch−5 semitones · same speedplay_arrow
3.00 slength (was 3.00)164 HzE3 · −5.0 st0.00 srings on after
Stretched to 1.33× then resampled back: same length, five semitones lower, the "deeper voice" setting.north_westUse on the selected layer
Reverb60% wet · same speed and pitchplay_arrow
3.00 slength (was 3.00)219 HzA3 · +0.0 st1.09 srings on after
The voice is convolved with a 2.6 s decaying room response and mixed with the dry signal. Length and note stay; the sound keeps ringing.north_westUse on the selected layer
Nightcore1.25× · pitch followsplay_arrow
2.40 slength (was 3.00)274 HzC♯4 · +3.9 st0.00 srings on after
Read 25% faster, like a record spun up: shorter and about four semitones higher.north_westUse on the selected layer
Daycore0.8× · pitch followsplay_arrow
3.75 slength (was 3.00)175 HzF3 · −3.9 st0.00 srings on after
Read 20% slower: longer and about four semitones lower, a heavier version of the same clip.north_westUse on the selected layer
Slowed + reverb0.85× · pitch follows · 45% reverbplay_arrow
3.53 slength (was 3.00)186 HzF♯3 · −2.8 st0.78 srings on after
A gentle slowdown with the pitch drop it brings, washed in reverb: the short-form feed sound.north_westUse on the selected layer
~/what-gets-exported

Your edit is a list of instructions until you export.

Nothing in your source files is changed. Each row below says which file to read, from where to where, how fast, how it sounds and where it sits on the canvas. Export reads that list once per frame, 30 times a second, and draws the layers bottom to top. It updates as you edit above.

1920×108016:9 canvas, 1080p
0.0 slength
1frames at 30 fps
0 / 0layers / clips
layersource in → outspeed · pitch · reverbon timelineon canvas (px)
~/keyboard

Edit without reaching for the mouse.

All eight work in the editor above. On a Mac, use Cmd for Ctrl.

SpacePlay / pausePlays the rendered mix from the playhead.
SSplitCuts the selected layer’s clip at the playhead into two.
DeleteDeleteRemoves the selected clip, or the layer if it is the last clip.
Ctrl ZUndoSteps back through up to 60 edits.
← →Seek 1 sHold Shift to step one frame (1/30 s).
[ ]Send back / forwardChanges which layer is drawn on top.
HomeJump to startPuts the playhead at 0:00.0.
EndJump to endGoes to the last frame of the edit.