Flip / Mirror Video

Mirror a video left to right, or turn it upside down, in your browser. Fixes reversed selfie-camera footage in one pass, free and with no upload.

🌐 Español

Drop your file here (.mp4, .mov, .m4v, .webm)

🔒 Private by design: your files are processed locally in your browser and never uploaded to any server.

Front cameras, mirrored previews and backwards text

Selfie cameras show you a mirrored preview while you record, because that is what people expect from a reflective surface. Plenty of phones and apps then save the clip in that mirrored state rather than flipping it back to match reality. Nothing looks wrong until something asymmetric enters the shot: lettering on a shirt, a whiteboard, a sign in the background, a watch that has moved to the other wrist. Then the whole clip reads as slightly off even to viewers who cannot say why.

The other common case has nothing to do with selfies. A camera mounted upside down, a dashcam bolted at an odd angle, a microscope or telescope rig with an inverting optical path: all of them produce footage where the top and bottom, or the left and right, are simply the wrong way round.

Both are one filter away from correct, which is all this page does.

hflip and vflip move pixels, and no flag can fake that

Pick Horizontal (mirror left-right) and the video goes through ffmpeg’s hflip filter; pick Vertical (upside down) and it goes through vflip. Both rewrite the actual picture, which is why this tool always re-encodes.

That is the real difference between mirroring and rotating. Container formats carry a display matrix, so Rotate Video can often just write a new rotation value into that matrix and stream-copy the rest, so not one frame is re-compressed. There is no matching “this video is mirrored” field that players agree on, so a mirror has to be baked into the frames.

The encode leans towards quality rather than size: libx264 at CRF 20 with the fast preset, and the moov atom moved to the front so the result starts playing before it has finished downloading. Those are the same settings Crop Video and Change Video Speed use, for the same reason. You asked for a geometric fix, not for compression, so the encoder is told to spend bits. Why Video Re-encoding Loses Quality explains what a single pass at that setting does and does not cost.

Choosing a direction and running the mirror

  1. Drop your clip on the panel or press Choose a file. MP4, MOV, M4V and WEBM are accepted, and anything else is refused before processing starts.
  2. Set Flip direction to Horizontal (mirror left-right) to fix reversed selfie footage, or Vertical (upside down) for an inverted camera mount.
  3. Press Flip / Mirror Video. The tool inspects the file first, then starts the encode.
  4. Download the result, which arrives as an MP4 with the direction in its name.

What the encode does to the audio track

Before any encoding starts, the tool runs the file through a bare inspection pass and reads the resulting stream dump, looking for a line that declares an audio stream. What it finds decides the rest of the command.

If there is audio, it is re-encoded to AAC at 128 kbps. It is not copied across, which is a small honest cost that is easy to overlook: mirroring a video also re-compresses its sound. If there is no audio, the encoder is told to drop audio explicitly, which avoids the failure you would otherwise get from asking it to map a stream that does not exist. Screen recordings and clips that have already been through Remove Audio from Video both land in that second branch.

Pairing a mirror with a rotation

Footage from a badly mounted camera sometimes needs both corrections. This page only mirrors, so run the two tools back to back. Which one you run first genuinely changes the outcome for a quarter turn, since a mirror and a 90 degree rotation do not commute, so if the first attempt comes out wrong, run the pair the other way round. What does not vary is compatibility. Mirroring outputs MP4, and the rotation tool accepts MP4, MOV and M4V, so flipping first always leaves you with a file it can open.

Worth knowing before you queue up three passes: the mirror and the crop are each a fresh encode, and only the rotation can avoid one, because its default fast mode rewrites the rotation flag instead of the pixels. If the clip needs a mirror, a rotation and a crop, do them in as few runs as you can and keep the untouched original somewhere.

Every input leaves as an MP4

Whatever container you started with, the download is an MP4, named after the source with the direction appended. beach.mov becomes beach-flipped-horizontal.mp4, and a vertical run on the same file would give beach-flipped-vertical.mp4. Standardising on MP4 costs nothing here, because the re-encode has to happen regardless, and MP4 plays on more devices than anything else.

Still images work differently and much faster. Flip / Mirror Image does the equivalent job on JPG, PNG and WebP files through the browser’s own canvas, takes several files at once, and keeps each one in the format it arrived in.

If a run stops with an error, the panel shows a single neutral sentence no matter what went wrong, because the underlying error is written to the browser console instead. Opening the console is the fastest way to see what stopped the run, though for a failed encode that message is the encoder’s exit code rather than a description of the problem.

Frequently asked questions

Does the mirrored copy keep my original audio untouched?

No, and it is worth knowing before you start. The tool checks whether the source carries an audio stream, and when it finds one it re-encodes it to AAC at 128 kbps alongside the video. That is transparent for speech and most music, but it is a second lossy pass, so a clip whose audio you care about is better mirrored once than mirrored repeatedly.

What happens to a screen recording that has no sound at all?

The inspection pass looks for an audio line in the stream dump, finds nothing, and adds an explicit disable-audio switch to the encode instead of trying to map a track that is not there. The run finishes normally and the result is a silent MP4. Mapping a missing stream is exactly the kind of thing that would otherwise abort the whole command.

Is a horizontal mirror the same as turning the clip 180 degrees?

No. A mirror swaps left and right while leaving top and bottom alone, so a face stays upright but any writing reads backwards. A 180 degree turn moves both axes, which is why the rotate tool's pixel re-encoding path builds that angle out of a horizontal flip followed by a vertical one. Doing both directions here, one run after the other, lands on the same picture.

Can I flip a WEBM file?

Yes. WEBM sits in the accepted list next to MP4, MOV and M4V, and it is worth noting that the rotate tool on this site does not take WEBM at all. Since a mirror here always writes MP4, running the flip first is a practical way to get a WEBM into a shape the rotation tool will then accept.

Why does the progress bar crawl on a long recording?

Every frame has to be decoded, mirrored and re-encoded, and the WebAssembly build of the encoder runs on a single thread because the headers that would unlock multiple threads break advertising iframes. A short phone clip is over quickly. A twenty minute screen capture at high resolution is a coffee-break job, and closing the tab in the middle cancels it.

Can I mirror the clip back to how it started?

Running the same direction a second time does return the original framing, since two mirrors cancel out geometrically. The pixels are not identical to where you began, though, because each pass re-encodes video and audio again. Keep the source file rather than relying on a double flip to undo a mistake.

Related tools