~/allthedamn.tools

Flip & Rotate Image

Mirror or turn any photo a quarter at a time, and see the result before you save it.

runs entirely in your browser

Mirror and turn are two different things

Rotating moves the whole picture around its centre: a photo that came off the camera sideways stands upright after one quarter turn, and every letter in it stays readable. Mirroring swaps left for right without turning anything, which is what you want for a selfie that came out reversed, a design you need facing the other way, or a pose you want to match on the opposite side. Text in a mirrored image reads backwards, and that is the honest tell that you asked for a mirror rather than a rotation.

The four buttons cover all of it. Rotate left and rotate right move in quarter turns, so pressing the same one four times brings you back where you started. Mirror flips left-to-right; flip vertical flips top-to-bottom. The two flips together are the same as turning the image upside down, which is why the readout describes where you have ended up rather than listing the buttons you pressed.

Everything composes. Turn the photo a quarter and then mirror it, and the mirror applies to what you are looking at now, not to the original orientation. That sounds obvious and is the single most common bug in tools like this one: press rotate then mirror and a careless implementation flips the image the wrong way, along the axis the picture used to have.

What the file looks like afterwards

A quarter turn genuinely transposes the image, so a 4000 by 3000 photo comes out 3000 by 4000. The dimensions beside the output size slider update as you go, so you can see the shape you are about to save. Half turns and mirrors leave the dimensions alone.

The output format is yours to pick. JPG is the default because photographs are the common case and a full-size PNG re-encode can be several times heavier than the JPG you dropped in. JPG is lossy, so choose PNG when preserving every pixel or keeping transparency matters more than file size. Pressing the buttons does not compound that loss: every redraw starts from the image you dropped rather than from the last result, so however many times you turn a photo before saving it, the file you download is still only one encode away from the original. WebP sits between them. Because JPG cannot store transparency, any transparent area is filled with white rather than turning black, and the page says so while JPG is selected.

The output size slider decides how big the saved image is. It starts at 100 percent, which draws every pixel of the original exactly once, and slides down to a tenth of it. Both dimensions shrink together, so the picture keeps its proportions, and the size it will come out at appears beside the slider as you drag. The file size on the end of that same line waits for the redraw to finish, so it is never a guess: while the image is being redrawn the line says it is redrawing rather than quoting a weight for a file that does not exist yet. If the result is still too large, dropping it to half makes a quarter of the pixels; choosing PNG instead can move in the opposite direction because a full-size lossless photo can run to tens of megabytes.

The result is rendered on the page at full width, not hidden behind a download button, so you can check the orientation before committing to it. Right-click and Save As works on the preview exactly as it would on any other image, and the download button names the file after what you did to it, so cat.jpg becomes cat-rotated-90.jpg. Scale it down and the size goes into the name too, as cat-rotated-90-1500x2000.jpg, so a smaller save never quietly overwrites the full one.

Nothing is uploaded, which matters more than it sounds

Your image is decoded, redrawn, and re-encoded by your own browser. There is no upload step, no queue, and no copy of your photo on anyone's server, which is why the result appears the moment you click rather than after a round trip. It also keeps working with the network off once the page has loaded.

Most of the free flip and rotate pages on the web do send your file somewhere and then show you an ad while it comes back. That is a poor trade for an operation a browser has been able to do locally for over a decade, and a worse one when the picture is a passport scan, a whiteboard photo from a meeting, or a screenshot of something private.

HEIC files from an iPhone work too. Those are decoded with a WebAssembly decoder that is fetched only when you actually drop a HEIC, so everyone else's page stays light. Screenshots need no file at all: press Ctrl or Cmd and V anywhere on the page and the image on your clipboard loads straight in.

fair questions

What is the difference between flipping and rotating an image?
Rotating turns the picture around its centre, so a sideways photo stands upright and any text in it stays readable. Flipping mirrors it across an axis, swapping left with right or top with bottom, which leaves text reading backwards. If your photo is on its side, rotate it; if it came out reversed, mirror it.
How do I mirror an image horizontally?
Drop the image on this page and press the mirror button. It swaps left and right immediately and the preview updates, so you can see the result before downloading. Pressing it a second time puts the image back the way it was.
Does rotating change my image quality?
At 100 percent output size the rotation itself is exact: quarter turns just move whole pixels, so nothing is interpolated or blurred. Two things can cost quality. Pulling the output size slider below 100 percent resamples the image, which is the whole point of it. And the re-encode on the way out matters: saving as JPG or WebP compresses the image again. Leave the size at 100 percent and choose PNG if you want the saved file to be pixel-identical to a turned version of the original.
Will a rotated photo change size?
The dimensions swap on a quarter turn, so a 4000 by 3000 image becomes 3000 by 4000. A half turn or a mirror leaves the dimensions unchanged. The file size can change substantially either way, because the image is re-encoded when you save it. JPG is the smaller default for photographs; choosing lossless PNG can produce a considerably larger file than the JPG you started with. Pull the output size slider down if you want fewer pixels as well.
How do I make the rotated image smaller?
Drag the output size slider, which runs from 100 percent of the original down to 10 percent. It scales both dimensions together, so the proportions hold, and the new dimensions and file size appear beside the slider before you download anything. JPG is already the default because it is usually much smaller than lossless PNG for photographs; WebP is another compact option. Format and dimensions combine, and using both controls is how you get a small file out of a big phone photo.
Can I flip and rotate the same image?
Yes, and the operations combine in the order you press them. Each button acts on what you are currently looking at, so mirroring after a quarter turn mirrors the picture as it appears on screen. The line beside the output size slider names the orientation you have ended up in whenever it differs from the original, however many presses it took to get there, and says nothing there once you are back where you started.
Is my photo uploaded anywhere?
No. The image is decoded and redrawn by your browser on your own device. There is no upload, no server processing, and no stored copy, so the only version of your photo is the one already on your machine.
What image formats can I flip or rotate?
Anything your browser can decode, which covers JPG, PNG, WebP, GIF, AVIF, and BMP, plus HEIC and HEIF files from an iPhone via a decoder that loads only when one is dropped. You can save the result as JPG, PNG, or WebP regardless of what you started with. One caveat on animation: an animated GIF or WebP is read as a still, so you get its first frame turned rather than the whole animation.