FlipPictureA PictureEditor.com tool
The mirror runs in this tab, on your own file.

Flip an image

Reflect across the upright axis, the horizontal one, or both. The samples are the ones your file already had — read out in the opposite order, never resampled.

Mirrored
EAST SIDEPRINT WORKS
Original
EAST SIDEPRINT WORKS
Drop a file on this panel, or click to open the pickerOpen an image. Choose an axis. The result is drawn from the same pixels, in reverse order.

Nothing to hand? and watch the words reverse.

Nothing has been read yet. The two panels above are a drawing, not a file — the sign on the right is the one on the left reflected, which is the whole operation.

The transform

What the operation does

A reflection is not a filter and it is not a redraw. The decoder hands over a grid of samples; this tool reads that grid back along one axis in reverse order and writes it into a new one at whole-pixel positions with smoothing turned off. Nothing is interpolated, nothing is averaged, and no colour is converted. Reflect the same file twice on the same axis and you have the file you started with, sample for sample.

Both axes at once is two reflections composed. It lands on the same grid a half turn would, which is why the two are so often confused, and they are still different operations: they have different inverses, different names in every graphics library, and different consequences for anything that is not a rectangle. Only the reflections are performed here.

Mirroring one half is the same matrix used differently. Choose a half, and its reflection replaces the other one. The line is movable rather than fixed to the centre, because a subject that was never centred does not become centred by being reflected about the middle of its frame, and up to eight pixels of feather will soften the join on a textured surface where a hard seam would announce itself.

Five steps

Running it

  1. Open a file. Drop it on the panel, click to use the picker, or paste it from the clipboard. Orientation is resolved at this point, before the tool sees a pixel.
  2. Choose an axis. H reflects left to right, V reflects top to bottom, B does both. S switches to mirroring one half and gives you the line and the feather.
  3. Read both panels. Drag the divider to wipe between the file you opened and the file you will get. Hold Space to see the original across the whole frame, and let go to come back.
  4. Set the container. The export keeps the kind of file you brought where the browser can write it. For a JPEG source the quality is read out of its own quantisation tables rather than guessed at.
  5. Save it. Save mirrored file, or Ctrl-S. The full-resolution pass runs the same code the preview ran, so the file matches the panel you approved.

What survives

Formats in, formats out

JPG, PNG, WebP, AVIF, GIF, BMP, TIFF and ICO are opened wherever the browser can decode them, and HEIC is opened through a WebAssembly codec that is fetched only when a HEIC is actually chosen. Writing is narrower than reading: a browser can produce JPEG, PNG and WebP and nothing else. The export therefore keeps your container when it is one of those three, and falls back to PNG when it is not, which is lossless but larger and honestly a different kind of file from the one you opened.

Colour is untouched. An embedded ICC profile is copied into the export as it was, because geometry has no bearing on colour, and a CMYK JPEG is decoded to sRGB by the browser before this tool ever sees it — the export will be sRGB and will not go back.

  • A reflected photograph is no longer a record of the scene. Watches change wrists, hair partings change sides, buttoning changes hand, signage becomes unreadable and every registration plate in shot becomes wrong. That is fine for a design and unacceptable for anything evidential, and nothing on this page can tell which one you are doing.
  • Writing a JPEG back costs a generation. The reflection is exact; the container is not. A JPEG has to be compressed again on the way out, and that is a real, if small, loss on top of whatever the file already carried. A reflection can be done on the compressed coefficients instead, avoiding the loss entirely, but only when the frame is a whole number of encoder blocks — that path is not built here yet, and pretending the current one is lossless would be a lie about the only number that matters.
  • Animation is read one frame deep. An animated GIF or WebP opens as its first frame and saves as a still. Reflecting every frame and re-encoding the animation is a separate job with its own colour cost, and it is not in this build.
  • A WebP export carries no metadata. Moving EXIF and an ICC profile into a WebP means writing an extended-format header around a stream the browser produced. A half-correct one is worse than an admitted gap, so WebP exports come out clean and the control says so before you press save.

The boundary

Operations this bench declines

An engine that reflects makes several neighbouring operations nearly free to add, and none of them are here. Turning a picture in quarter-turn steps is the one asked for most often and the one held out most firmly: it exchanges the width for the height, it has its own quarrel with the orientation flag, and a turn offered as a fifth button on a mirror is worse than a turn offered by something that does nothing else. Levelling against a horizon, choosing a crop, and repairing a mis-set orientation flag as a job in its own right sit outside the same fence, for the same reason.

Three more are out because they are compositing rather than geometry. Repeating a reflection into a kaleidoscopic pattern is an effect. Setting the reflected copy beside the original as one wider file is a join. Mixing the reflection back into the original sample by sample is a blend. Each of those takes a reflection as its first ingredient and then does the part that makes it interesting somewhere this page does not follow. Reversing lettering while leaving the photograph alone is out for the plainest reason available: by the time the decoder has finished there is no text layer left to reverse, only pixels that used to be one.

Asked often

Common questions

Does flipping an image lose quality?
The reflection does not. It is a permutation of the samples the decoder produced, so every value survives it. What can cost quality is the file it is written back into: a JPEG has to be compressed again, and a second generation of compression is never free. PNG and WebP are written without loss, and choosing PNG is the way to keep a JPEG source pixel-exact at the cost of a much larger file.
Is flipping both axes the same as turning the picture 180 degrees?
The grids match. Reflect left to right, then top to bottom, and every sample lands where a half turn would have put it. They are still different operations with different names, different inverses and different behaviour on anything that is not a rectangle, and only the reflections are performed here.
Why is the text in my picture backwards now?
Because a reflection reverses reading order along the axis you chose. That is the intended result when the file is going onto transfer paper, where the press flips it back, and it is a defect everywhere else. There is no way to reflect a photograph and keep the lettering forwards: the letters are pixels like everything else.
Is the picture uploaded anywhere?
No. The file is read by the browser, decoded into memory, redrawn onto a canvas and handed back to you as a download. There is no server behind this page to send it to; the site is a static export with no interface that accepts a file.
Can I flip a folder of files in one go?
Not on this page. One file is opened at a time. Batch reflection with a name pattern and a ZIP of the results is a planned route and is not built yet, and saying so is more useful than a queue that turns out to be a loop over the same button.
Does the export keep the date, the camera and the GPS tag?
By default, yes, for a JPEG saved as a JPEG and a PNG saved as a PNG. A reflection invalidates exactly one field, the orientation flag, so that one is reset and the rest is copied across untouched. If the location data is the reason you are here, switch the metadata control to strip everything before saving.

Elsewhere on this site