Video Editor
betaJoin, trim, straighten, grade and score hours of footage up to 8K, then export for YouTube or anywhere else — all in the browser
How it works
Pick a project folder first — proxies, the autosave journal and the finished export live there, next to your footage. Drop your recordings: they are probed, ordered by the date-time and sequence number in their names (DJI, GoPro and phone files all carry them), reorderable afterwards, and joined end to end. The preview plays the originals; if scrubbing 8K stutters, pick a proxy size (360p, 720p or 1080p) and a small copy of each recording is rendered so a three-hour timeline scrubs smoothly, with sound. Split, trim and remove ranges on the timeline; Scan for stops finds every stretch where the picture stands still — a paused talk, an idle camera, a red light — from how little it changes between small frames, lists them with their lengths, and cuts out the ones you tick in one go, keeping a margin at each end so each cut still shows the picture settling and moving again; Merge with next rejoins the two halves of a split into one clip, or joins two different recordings so the cut disappears — no marker, no transition, one shared grade, crop and audio. Give any clip its own speed, from quarter-speed slow motion to a 16× time-lapse: it shortens or lengthens on the timeline, the export keeps the frame rate and drops or holds frames to match, and the original sound follows the speed up to 4×. Rotate in quarter turns, straighten by up to 10°, and crop. In Colour, choose a conversion: DJI's own Osmo Action 6 D-Log M → Rec.709 LUT applied as DJI ships it, a compact model of it, a Study look tuned for long-play study and focus videos (on DJI's file or on the model), a Natural or Vivid variant, D-Log from DJI's published curve and D-Gamut matrix, or your own .cube such as DJI's official download — then set exposure, temperature, tint, contrast and saturation, and apply the look to every clip. Music tracks drop onto three lanes, overlap into equal-power crossfades, and carry fades, mute and volume keyframes; the original sound mixes underneath. Add a whole folder of songs at once and Shuffle & fill lays them end to end in a random order to cover the entire video with crossfades, reshuffling when they run out so no song follows itself. Transitions — a 2 s cross dissolve by default, or dip to black or white, a zoom through, speed blur, a soft wipe and a push — go on any cut: add one at the playhead (the clip splits there if needed), click its marker to change or remove it, or stamp one onto every cut. Each is centred on its cut so nothing shifts in time — and sized to the footage: a dissolve needs spare footage beyond each clip’s edge, so where a side has none (a recording’s first frame, a clip trimmed to its last) the window slides onto the other side, and when both are tight it shrinks, so nothing ever freezes; the panel and the marker say when that happened. Intro scenes are cut with that spare room reserved and never shorter than their style’s transition. Export the whole timeline or just a from–to range. One JSON template covers the intro and the titles: download it from the Intro or Titles tab, let an LLM fill it in from your notes, and import it back to get both at once. The Intro tab builds a cold open from the footage itself — up to twenty scenes of 3 s each with 2 s transitions by default, both adjustable: one click lifts a handful of short scenes from across the footage — skipping the first and last few percent, and picking the liveliest moment in each stretch by motion and contrast when proxies or 4K-or-smaller recordings make that quick to judge, else spacing them evenly — cuts them together in one of ten looks (teaser cuts with a flash on every cut, cinematic letterbox with a slow push-in and warm grade, punch zoom, high-contrast mono, colour pop, retro film grain, glitch with RGB split and jitter, spotlight vignette, 8× hyper-lapse, or clean dips to black) and ends on a title card that dims the last scene under the project name. The scenes are ordinary clips at the head of the timeline, so you can reorder them, retime each one, lift another from wherever the playhead is, swap the look, change the card's text and subtitle, preview just the intro, or remove it; titles and the export range move with the main video while music stays put and plays under it, and the export re-encodes the scenes with their effects so the finished MP4 opens on them. Add an intro card, titles and lower thirds — several at once if you like, each with its own position, colour, backing box, font and size — and a logo watermark. Music that runs past the end of the video is cut there with a fade, and the part past the end is drawn hatched on the timeline so it is plainly not used; a track can never be placed to start after the video ends — a full lane hands it to the next, and the start field is capped. Export plans the timeline into spans: anything untouched passes through at source quality while graded, cropped or titled spans decode, grade on the GPU and re-encode through WebCodecs, hardware-accelerated where the browser provides it — so the estimate you see before exporting is honest. A rendered preview runs that same export at 180p to 720p on 30 s around the playhead, the intro, the export range or the whole timeline — from proxies when there are any — into the browser’s private storage and plays it in the preview box, so cuts, transitions, looks and steady lights can be checked exactly as they will come out. While it runs, a full panel shows position to the millisecond, frames, speed, bytes written, elapsed and remaining time and the expected finish, and lists every step — preparing, each video span, mixing and encoding the audio, finishing the file — with its own estimate, what the estimate rests on (a default guess, the speed of your last export at these settings, or measurement as the step runs), and once done the actual time against what was promised. Finishing the file has two stages, flushing the encoders and closing the file: Chrome reads the whole file back to check it before moving it into place, so that stage grows with the file size, and its estimate is sized from the bytes written and the close speed learned from your earlier exports. Steady lights holds LED lights — signs, displays, traffic and vehicle lights, which pulse faster than the shutter and blink on camera — at their brightest over the last two or three frames, so they stop blinking in the export (the preview shows it while playing). File tags — title, artist, album, genre, year, comment and a music-video media kind — go into the MP4 as the iTunes-style atoms ffmpeg writes from -metadata. The export can be paused and resumed. Save frame writes the frame under the playhead — graded, through any transition, with titles, from the source rather than the proxy — as a YouTube-ready 1280×720 JPEG thumbnail by default, or at full source resolution as JPEG or lossless PNG, into a frames folder beside the export. Space taps play and pause; holding it doubles the speed until it is released, and when the decoder cannot keep up with a held speed the preview eases down to what it can actually show rather than letting the clock run ahead of the picture. Holding Control skims the cuts: three seconds before and after each one, skipping the middle of every clip. The ? key lists every shortcut. The timeline ruler scrubs on click or drag and snaps to cuts (hold Alt to scrub freely), a hover shows the time under the pointer, ⌘ or Ctrl with the wheel zooms around the pointer while the zoom slider keeps the playhead on screen, the view follows playback, clips drag to a new place, the step buttons keep stepping while held, and the time readout can be clicked to type a time. Every edit autosaves; reopen the folder and unsaved work is recovered.
Questions
Does it really handle native 8K?
Yes, through WebCodecs, which uses the hardware encoders and decoders where the browser provides them. Export is 7680 × 4320 at the source frame rate in HEVC (or H.264). The practical limit is time: re-encoding 8K runs near real time on a recent computer, which is why untouched footage is copied rather than re-encoded.
How long does a three-hour video take to export?
It depends on how much you changed. Trim-and-join with music re-encodes nothing, so it takes minutes. A full colour grade re-encodes every frame — roughly real time, so expect about three hours. The Export tab shows the split before you start.
Which browser?
Chrome or Edge: they provide the File System Access API for the project folder and hardware-accelerated WebCodecs. Safari and Firefox lack one or both. Exports keep going when you switch tabs or minimise the window: the page holds a lock so the browser does not freeze it and keeps the display awake while visible; only closing the tab or putting the computer to sleep stops one.
Where are the D-Log LUTs from?
They are generated from DJI's published D-Log and D-Log M transfer curves and anchored so 18% grey lands at the conventional display value, matching the intent of DJI's official LUTs. You can also download them as .cube files.
How can I check a transition exactly as it will export without exporting everything?
Render preview, under the preview or in the Export tab, runs the real export pipeline at a small size (180p to 720p) on a chosen stretch — 30 s around the playhead by default, or the intro, the export range or the whole timeline — using proxies when there are any, writes it to the browser's private storage and plays it in the preview box with its own controls. Scrubbing the timeline seeks it, and playing it moves the playhead. It is the export itself, so what you see there is what the full export will contain.
Why do LED lights blink in my footage, and can it fix that?
LED lights pulse hundreds of times a second and the camera's shutter catches them at different points of the pulse, so on camera they flicker or drop out for a frame. In Export, LED flicker → Steady lights keeps every bright or strongly coloured light at its brightest over the last two or three frames on the GPU as the frames are encoded, so a light that drops out stays lit. It never darkens anything, resets at every cut and seek, and the preview shows it while playing. Fast-moving lights at night can leave a short trail; the 2-frame setting keeps that to one frame.
Can it cut out the stretches where nothing moves?
Yes. In Trim, Scan for stops decodes small frames through every recording and marks each stretch where the picture stays still for longer than the minimum you set (2 s by default) — a paused talk, an idle camera, a red light. The stops are listed with their lengths and hatched on the timeline; untick any you want to keep, set how much to keep at each end (half a second by default, so each cut still shows the picture settling and moving again), and Cut out removes the rest in one go. The scan is many times faster with proxies, and its results stay with the project.
How do I make an intro?
Open the Intro tab and press Make an intro from this video. It picks a handful of short moments spread across the footage — the liveliest in each stretch when it can scan quickly (proxies, or recordings up to 4K), otherwise evenly spaced — cuts them together in the chosen look and ends on a title card with the project name, all before the main video starts. Change the look among ten (teaser cuts, cinematic, punch zoom, mono, colour pop, retro film, glitch, spotlight, hyper-lapse, clean), retime or reorder scenes, add one from under the playhead with Use this moment, edit the card, and preview the intro on its own. The export renders the scenes with their effects, so the MP4 opens on the intro.
Can I follow an export from another window?
Yes. With notifications allowed (the editor asks the first time an export starts, and the setting lives in the Export tab), a notification shows the progress — a bar, the percentage, the phase, the time left and the expected finish — refreshed every ten seconds while the tab is hidden, replacing itself rather than piling up and without a sound; one more arrives when the export finishes or fails, and the tab title carries the percentage throughout.
What if the disk fills up during an export?
Before an export starts, the editor compares the expected file size with the space the browser reports (a conservative figure: Chrome keeps a reserve of about 1 % of the disk) and warns when it looks short — you can still go ahead. While it writes, a watchdog checks every few seconds: under 2 GB it pauses the export, turns the tab title into a warning, sends a notification if you allowed them and beeps twice. Free some space and it continues by itself once 3 GB are free, or press Resume. A write the disk refuses is retried after the pause rather than failing, so nothing written so far is lost.
What if an export fails, or I stop it, hours in?
Nothing finished is lost. The export writes its video in numbered parts to a folder next to the output (one every three minutes, plus whatever was done the moment it stopped) and keeps a small manifest with them. When an export fails or you cancel it, the Export tab says where it stopped and offers Resume, which carries on from the last finished part and then joins the parts into the file — a copy, not a re-encode — and mixes the audio; Discard removes the parts. The join needs no extra room: when the disk has less free space than the file plus the parts, each part is removed the moment its frames are in the file, so a 160 GB export needs about 160 GB plus one three-minute part; with room to spare the parts stay until the file is closed, which is safer. Should a join in that saving mode stop before the file is finished, only the parts it had already removed are exported again. The parts belong to the project as it was: change the edit and they cannot be continued. If a single frame fails (a decoder or GPU hiccup, say), the export pauses and asks: skip that frame — or every frame that fails from then on — and carry on, or stop and keep what is done. Skipped stretches are listed when the export finishes.
What happens if the browser crashes?
Every edit is written to an autosave journal in the project folder within two seconds. Reopen the tool, choose the same folder, and the journal is restored — the banner says so. Proxies are cached there too, so nothing is re-rendered. Files are remembered by their handle and by their place — the path inside the project folder, or inside any folder you ask the editor to remember (Remember a folder… when something is missing) — so recordings and music that live elsewhere are found again on reopen without a dialog, and a file you locate by hand has its place recorded too. The browser never reveals a file's absolute path, so a remembered folder plus the path inside it is as close as it gets.
Is anything uploaded?
No. Footage never leaves your computer; everything runs locally in the browser.