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
- 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.
- Set Flip direction to Horizontal (mirror left-right) to fix reversed selfie footage, or Vertical (upside down) for an inverted camera mount.
- Press Flip / Mirror Video. The tool inspects the file first, then starts the encode.
- 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.