Subformer

Rotate & Flip Image

Rotate one image or a whole batch in 90° steps, mirror horizontally or vertically, and download. Works with JPG, PNG, WebP, HEIC straight from your iPhone, GIF, BMP, and SVG - all in your browser, no upload.

Files never leave your browser. All processing runs on your device.

Drop images here, or click to browse

JPG, PNG, WebP, HEIC, GIF, BMP, SVG - rotate in 90° steps.

How it works

Four steps from a sideways photo to a fixed file.

  1. 1. Drop your images

    Drag images anywhere on the page or click the drop zone. JPG, PNG, WebP, HEIC, GIF, BMP, and SVG all work.

  2. 2. Rotate

    Click the rotate buttons on any card for 90° steps. Use the Rotate-All controls to apply the same rotation across the whole batch.

  3. 3. Pick format

    Keep the original format with Auto, or convert to PNG / JPG / WebP. For JPG output, pick the background colour that fills any transparent corners.

  4. 4. Download

    Save each rotated image to your device. The whole batch downloads in sequence with a brief gap so the browser doesn't drop files.

When you need to rotate an image

Phone cameras and scanner apps record orientation through an EXIF flag. Some apps respect that flag and rotate on display; others render the literal pixels and your photo comes out sideways. Web platforms in particular are inconsistent - the same upload can look correct on one website and sideways on the next.

This tool rewrites the actual pixels so the orientation is baked in. JPG and WebP re-encode at quality 92 (~ visually identical); PNG and WebP-lossless preserve every byte. HEIC photos from an iPhone are decoded locally so you don't need a separate conversion step.

Everything runs in your browser via the 2D canvas API. Drop the file, click rotate, download - nothing is sent to a server, which matters for client photos, ID scans, and anything else you'd rather not hand off to a third party.

Under the hood

No server, no upload, no image-processing service. The rotation runs on standard browser APIs plus one WebAssembly module for the format your browser cannot read natively.

Canvas 2D API
Applies the transform and re-encodes the result. Rotation in 90 degree steps is a lossless pixel remap - the encoder is the only step that can lose quality, which is why PNG output is byte-perfect.
WebAssembly HEIC decoding
HEIC and HEIF files from an iPhone are decoded on your device. No browser ships a native decoder for that format, so a WebAssembly module handles it locally rather than shipping the photo to a conversion server.
Browser image codecs
JPEG, PNG, and WebP encoding use the codecs already built into your browser. That keeps the page small and means output matches what your browser produces anywhere else.
File and Blob APIs
Files you drop are read into memory as Blobs and handed straight back as downloads. Nothing is written to a server and nothing persists after you close the tab.

Frequently asked questions