Backwards or boomerang
| Choose | What you get | Good for |
|---|---|---|
| Backwards | The whole clip from the last frame to the first | Rewind effects, water flowing up, a dive out of the pool, a smashed object reassembling |
| Forwards, then backwards | The clip plays normally, then runs back to the start, without repeating the turning frame | Boomerang loops for stories and reels, product spins, a toast or a jump |
For the sound you can reverse it along with the picture (the classic backwards-speech effect), keep it playing forwards so music or narration stays normal over the reversed picture, or remove it. In a boomerang the sound follows the picture: forwards, then backwards.
Why online reversers have size limits
Video is compressed so that most frames are stored as small changes from the frames before them.
It can only be decoded forwards, from a key frame onwards. To play it backwards, the simple
approach — and FFmpeg's own reverse filter — decodes the whole clip and
keeps every frame in memory, then writes them out in the opposite order (FFmpeg's documentation
warns that the filter buffers the entire clip). A 1080p frame is about 8 MB uncompressed, so a
one-minute clip at 30 frames per second needs around 15 GB. That is why many online reversers cap
files at around 200 MB, and why long clips can crash a browser tab.
This page works from the end instead. It takes the last few dozen frames, decodes them starting from the key frame just before them, writes them out in reverse, throws them away and moves to the next piece. Memory use depends on the frame size, not on the length of the video. When key frames are far apart, some frames are decoded more than once; the result tells you how many times on average.
Measured
| Test clip | Frames out | Time |
|---|---|---|
| 60-second 1080p phone video, 30 fps, sound reversed | 1,800 of 1,800 | 27.5 s |
| 5-second 720p clip with a single key frame | 150 of 150 | about 1 s |
| 2-second 360p clip, reversed | 60 of 60 | 1.9 s |
Times are from a desktop browser with hardware video decoding; phones are slower. The one-minute 1080p clip decoded each frame 1.9 times on average, because it had a key frame only every two seconds, and the page's script memory was 58 MB when it finished. As a boomerang, the 2-second clip came out as 119 frames: 60 forwards and 59 back, with the turning frame shown once. Each test clip had the frame number drawn into the picture, and the output was read back frame by frame to confirm the order is exactly reversed.
Timing and length stay the same
Phone videos don't always have evenly spaced frames: the camera speeds up and slows down with the light. Reversing frames but giving them all the same duration makes motion jerky and changes the length. Here every frame stays on screen for exactly as long as it did in the original, just in mirror order; on a test clip whose frame spacing alternated between 20 and 53 milliseconds, every duration came back mirrored to the millisecond. The reversed sound has the same length as the picture, so a reversed clip can be laid back over the original in an editor.
Quality and format
Because the frames are stored in a new order, the video has to be encoded again; there is no way to reverse compressed video without decoding it. It is encoded once, as H.264 at a high bitrate, into an MP4 that plays on every phone, computer and social network. The resolution is kept, portrait videos stay portrait, and nothing is added to the picture. An odd width or height, which H.264 doesn't allow, gets one pixel added and the result says so.
Tips
- Reverse only the part you need. Cut the clip first with Trim video; a 3-second reverse is quicker to make and to share than a 3-minute one.
- Boomerangs work best short. One or two seconds of continuous movement loops best; a camera pan looks like a sway.
- For slow motion in reverse, reverse first, then slow it down with Change video speed.
- For a loop on a website or in chat, turn the boomerang into an animated image with Video to GIF.
- If the file is too big to send afterwards, Compress video brings it down to a target size.