How to reverse video playback in your browser
- Step 1Open the reverser and drop your clip — Drag a video onto the drop zone above, or click to browse. Accepted inputs are MP4, MOV, MKV, WebM, AVI, M4V and TS. There is nothing to configure — the reverser has no options panel beyond a one-line note, because reversal takes no parameters.
- Step 2Let FFmpeg.wasm load on first run — The first time you process a clip in a fresh tab, the FFmpeg WebAssembly core (a few MB) loads and caches. Subsequent reversals in the same session skip that step. Everything from here runs locally — the file is read from disk into browser memory, never uploaded.
- Step 3Processing reverses both streams — Under 60 seconds, JAD runs a single pass:
-vf reverse -af areversere-encoding to H.264 (libx264, preset medium, CRF 20) with AAC audio at 192 kbps. The video plays end-to-start and the audio is reversed to match. - Step 4Long clips switch to the chunked path automatically — If the probed duration exceeds 60 seconds, JAD splits the clip into 8-second segments, reverses each one (preset ultrafast for speed), then concatenates the segments in reverse order with a stream copy. The end result is identical to a single reverse, but the browser heap never has to hold the whole clip's frames at once.
- Step 5Watch the progress stage — The progress label shows either a single re-encode or
Chunked reverse · N/M chunksfollowed byConcatenating chunks. You can cancel mid-run; the chunked path checks for abort between segments and cleans up its temporary files. - Step 6Download the reversed MP4 — The output is an H.264 MP4 you can save and use immediately. Want a forward-then-back loop instead of a straight reverse? That needs the original plus the reversed copy joined together — see the boomerang recipe.
What the reverser does (and what it does not)
Verified against the processing code. The reverser takes no user options — every parameter below is fixed.
| Aspect | Behaviour | Configurable? |
|---|---|---|
| Video filter | reverse — every frame is decoded, buffered, and emitted back-to-front | No |
| Audio filter | areverse — the audio track is reversed and time-aligned to the picture | No (audio is always reversed, never muted) |
| Output container | Always MP4, regardless of input container | No |
| Video codec / quality | H.264 (libx264), preset medium, CRF 20 on the single-pass path | No |
| Audio codec | AAC at 192 kbps | No |
| Long-clip handling | Above 60 s: split into 8 s chunks, reverse each (preset ultrafast), concat in reverse order with stream copy | Automatic (no toggle) |
Accepted inputs and tier limits
Reversal works on any of these containers; size and batch limits come from the video tier. Durations are unbounded — limits are by file size, not minutes.
| Item | Detail |
|---|---|
| Input containers | MP4, MOV, MKV, WebM, AVI, M4V, TS (unknown extensions are treated as MP4) |
| Output | Single H.264 MP4 |
| Free tier | Up to 1 GB per file, 1 file at a time |
| Pro tier | Up to 10 GB per file, up to 5 files |
| Pro-media tier | Up to 100 GB per file, up to 50 files |
| Developer tier | Up to 100 GB per file, unlimited file count |
Cookbook
Concrete reversal recipes. The commands shown mirror exactly what JAD runs under the hood with FFmpeg.wasm — there is nothing to configure in the UI.
Straight reverse of a short clip
The single-pass path for any clip under 60 seconds. Both streams are reversed in one re-encode to MP4.
Input: pour.mov (12 s, H.264 + AAC)
What JAD runs internally:
ffmpeg -i in.mov -vf reverse -af areverse \
-c:v libx264 -preset medium -crf 20 \
-c:a aac -b:a 192k out.mp4
Output: out.mp4 (12 s, plays end-to-start, audio reversed)Long clip auto-routed through the chunked pipeline
A clip over 60 seconds triggers the memory-safe path. You do not choose this — JAD probes the duration and switches automatically.
Input: drive.mp4 (3 min 20 s = 200 s) JAD probes duration > 60 s, so: • split into 8 s chunks -> 25 chunks • reverse each chunk (preset ultrafast, crf 20) • concat the chunks in REVERSE order, stream-copy Progress: Chunked reverse · 25/25 chunks -> Concatenating chunks Output: out.mp4 (200 s, fully reversed, RAM stayed bounded)
Reverse a silent clip
If the source has no audio track, areverse has nothing to act on and the video is still reversed normally. The output is a silent MP4.
Input: screen_capture.mp4 (no audio track) Reverse runs on video only; areverse is a no-op. Output: out.mp4 (reversed video, still silent)
Want the audio muted instead of reversed?
The reverser always reverses audio — it has no mute option. If you want reversed picture with NO sound, strip the audio first or after with a sibling tool.
Step 1: reverse the clip here -> out.mp4 (reversed video + reversed audio)
Step 2: remove the audio track with the audio-track-extractor's
'remove audio' path, or mute a range with
/video-tools/audio-mute-region
Result: reversed video, no soundtrackReverse, then make a boomerang loop
The reverser produces a one-way reverse. To get the Instagram-style forward-then-back loop, join the original and the reversed copy in the merger.
1. Reverse clip.mp4 here -> clip_reversed.mp4
2. Open the video merger and add:
clip.mp4
clip_reversed.mp4
3. Merge in order -> boomerang.mp4 (plays forward, then back)
Full walkthrough: /video-tools/solutions/create-boomerang-effect-from-mp4Edge cases and what actually happens
Very long 1080p clip on a low-RAM device
By designThe reverse filter buffers every frame before it can emit the first output frame, so a long clip would blow the WASM heap. JAD avoids this by switching to the chunked pipeline above 60 seconds — 8-second segments are reversed individually and concatenated in reverse order, keeping memory bounded. You do not need to do anything; the switch is automatic based on the probed duration.
Source has no audio track
Supportedareverse simply has nothing to reverse. The video is reversed normally and the output is a silent MP4. No error is raised.
You wanted reversed video with the original (forward) audio
Not supportedThe reverser reverses both streams together — it cannot keep audio playing forward while the picture runs backwards. There is no option for this. Reverse the video here for a silent result (strip audio afterward), then mux your forward audio back in with a separate editing step if you need that combination.
Output is MP4 even though you uploaded a MOV/MKV/WebM
ExpectedBecause reversal is a full re-encode, JAD always writes H.264 MP4. Your MOV, MKV, or WebM is decoded and the reversed result is encoded back to MP4 at CRF 20. If you need a different container, re-package the MP4 afterward.
Variable-frame-rate (VFR) source
Preserved orderFFmpeg's reverse filter emits frames in reverse decode order. VFR phone footage reverses correctly, but if timing looks slightly off in a downstream editor, the cause is the original VFR timestamps, not the reversal. Converting to a constant frame rate before reversing avoids the ambiguity.
Probe cannot read the duration
Falls back to single passThe chunked decision relies on a probed duration. If the container's metadata is missing or unreadable, the duration reads as 0 and JAD runs the single-pass reverse. That is fine for short clips but may strain memory on a long file with no duration metadata — re-mux it so the duration is present, then reverse.
Clip exceeds your tier's file-size cap
RejectedFree tier caps each video at 1 GB, Pro at 10 GB, Pro-media and Developer at 100 GB. There is no minutes limit — only file size. A file above your cap is rejected before processing; upgrade the tier or compress the source first.
You cancel mid-reverse
Clean abortOn the chunked path, JAD checks for an abort signal between segments and cleans up its temporary chunk files before stopping. Nothing is left behind and no partial output is produced.
Frequently asked questions
Is my video uploaded anywhere?
No. The reverser runs FFmpeg compiled to WebAssembly directly in your browser tab. Your file is read into browser memory, reversed locally, and the result is offered as a download. Nothing is sent to a server, so there is no upload step and no privacy exposure.
Does it reverse the audio too?
Yes — always. The reverse filter reverses the picture and areverse reverses the soundtrack, run together so they stay aligned. The audio plays end-to-start in step with the video. There is no option to keep audio forward or to leave it unreversed.
Can I mute the audio in the output?
Not in the reverser itself — it has no options panel. If you want reversed picture with no sound, reverse the clip here and then remove the audio with the audio-mute-region tool, or extract/strip audio with the audio-track-extractor.
Is there a length limit on the input?
There is no duration cap. Limits are by file size, not minutes: 1 GB on Free, 10 GB on Pro, 100 GB on Pro-media and Developer. Clips over 60 seconds are reversed via an automatic chunked pipeline so memory stays bounded regardless of length.
Why is the output always an MP4?
Reversal requires decoding and re-emitting every frame, which is a full re-encode. JAD encodes the result to H.264 MP4 at CRF 20 with AAC audio at 192 kbps — a universally compatible format. Whatever container you upload, the reversed result comes back as MP4.
What input formats are supported?
MP4, MOV, MKV, WebM, AVI, M4V and TS are all decoded by the same FFmpeg build. Unrecognised extensions are treated as MP4. If a codec inside the container is unusual, the reverse may fail — re-mux to standard H.264 first.
Will reversing reduce my video quality?
There is a single generation of re-encoding because reversal cannot be done by stream copy. CRF 20 is visually near-lossless for most content, so the quality drop is small. If you plan further edits, do the reverse last to avoid stacking re-encodes.
Can I set the quality or bitrate?
No. The reverser exposes no settings — quality is fixed at CRF 20 (single pass) / ultrafast CRF 20 (chunked). If you need a specific bitrate or smaller file, run the reversed MP4 through the video-bitrate-set or a compressor tool afterward.
How do I make a boomerang or ping-pong loop?
A boomerang is the original plus its reverse joined together. Reverse the clip here, then open the video merger and add the original followed by the reversed copy. Step-by-step in the boomerang recipe.
Why did a long clip take longer and show 'Chunked reverse'?
Above 60 seconds, JAD splits the clip into 8-second segments, reverses each, and concatenates them in reverse order. This keeps the browser heap from overflowing on long footage. The progress label reflects which chunk is being processed; the final concat is a fast stream copy.
Can I reverse several clips at once?
Batch count depends on tier: Free processes 1 file, Pro up to 5, Pro-media up to 50, Developer unlimited. Each file is reversed independently into its own MP4.
Does it work offline?
After the first run loads and caches the FFmpeg.wasm core, processing happens locally and does not need a round-trip to a server for the reversal itself. The page still has to be loaded, but your media never leaves the device.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.