Rotate an image by 90° or 180° and mirror it horizontally or vertically — right in your browser.
A photo shot in portrait that shows up sideways, a scanned page upside down, a selfie whose text reads backwards: these are three different problems and they need two different fixes. Rotation turns the image around its centre and, at 90° or 270°, swaps its width and height — a 4000×3000 landscape becomes a 3000×4000 portrait. Mirroring reflects it across an axis and keeps the dimensions, which undoes the front-camera flip but also reverses any text in the picture. This tool gives you both, with a live preview so you can see which one you actually needed.
Under the hood each click updates a small transformation state — an angle plus two mirror flags — and the canvas redraws the source image from scratch with that transform applied. Nothing is applied on top of a previous result, so the transformations stack without ever accumulating quality loss, and Reset is genuinely a return to the original pixels. The buttons work in screen space, which is the part most tools get wrong: after a 90° rotation, mirroring horizontally still mirrors what you see horizontally rather than flipping along the original axis.
The output keeps the format you brought in — PNG stays lossless, JPEG is re-encoded at quality 0.92 and WebP stays WebP. Re-encoding always discards EXIF metadata, including the orientation tag, so the tool reads the file with createImageBitmap and the from-image orientation option (falling back to a plain decode where that is unavailable), which bakes the correct orientation into the pixels before you touch anything. Losing the metadata is also a privacy win: GPS coordinates and camera identifiers do not travel with the file you download. Everything happens on your device, with an 8000 pixel per side cap to keep browser memory sane.
Canvas transform: translate(w/2, h/2) → rotate(θ) → scale(±1, ±1) → draw the source centred on the origin. For θ of 90° or 270° the output canvas swaps width and height. A screen-space horizontal mirror at those angles is a vertical mirror in source space, which is how the flip buttons stay intuitive after a rotation.
No. The file is decoded and redrawn with the canvas API on your device — nothing is uploaded, stored or logged. The page keeps working with the connection off.
Rotating turns the image around its centre and swaps width and height at 90°; flipping mirrors it across an axis and keeps the dimensions. Use rotation for a sideways photo and a flip for a selfie whose text reads backwards.
Rotations of 90° and 180° move pixels without resampling them, so the geometry is lossless. The only loss comes from re-encoding a JPEG, which the tool does at quality 0.92 — visually safe. PNG output is lossless end to end.
Phone cameras usually store the picture in sensor orientation plus an EXIF orientation tag telling viewers how to turn it. The tool applies that tag on load, so what you see is what other correct viewers see.
No. Re-encoding through the canvas discards all metadata — orientation, GPS coordinates, camera model and timestamps. The orientation is already baked into the pixels, and the rest is usually something you would rather not share anyway.
Vai.la turns any URL into a short link with click statistics, QR Code and your own biolink.
Vai.la is not responsible for how the tools are used or for decisions made based on their results.