How to rotate or resize an image on this page
- Read the limit note above the square first. About 80 MB. Desktop Chrome or Firefox. iPhone and large files may fail.
- Drop one JPEG, PNG, WebP, or HEIC on the square, click it, or paste from the clipboard with Ctrl/Cmd+V. Nothing leaves the tab.
- Pick 90°, 180°, or 270° if the shot is sideways. Tick Flip H or Flip V if you need a mirror.
- Leave resize off to keep the pixel size. Or pick Max edge (longest side, aspect kept) or Box (width and/or height). Aspect stays locked unless you untick it.
- Pick JPEG or PNG. For JPEG, quality 0.90 is the default.
- Click Rotate / resize, then download. There is no watermark and no signup.
Need a different format without turning the pixels? Use Convert image. Same drop, no geometry. A HEIC that is already upright belongs there. Need to cut a still? Use Crop image.
What this page actually does
The browser decodes the still in this tab. HEIC goes through a maintained libheif build (the heic-to library). JPEG, PNG, and WebP use the browser decoder. We draw the pixels onto a canvas with the rotation and flip you picked, then scale to the size you asked for, then encode a new JPEG or PNG. Close the tab and the bytes are gone.
This is a new file of the pixels, not a lossless JPEG transpose and not an EXIF orientation flag. Metadata is not copied. A transparent PNG keeps alpha. JPEG fills empty pixels with white.
Rotate, flip, and resize
Rotate is quarter turns only: 90, 180, 270. That is the sideways phone photo and the scan that landed on its side. Arbitrary angles are not on this page. Crop is a separate verb at /crop-image.
Flip is a mirror of the already-rotated picture. Horizontal is the usual selfie / sign-text fix. Vertical is rarer; it is there so you do not need another app.
Max edge keeps aspect and only shrinks. A 4000 × 3000 still with max edge 1920 becomes 1920 × 1440. A shot already inside the edge is left as-is (after rotate). Box with aspect locked fits inside the width and height you typed — or, if you fill only one side, scales to that side. Untick Keep aspect only when you really want to squash the picture.
Why the limits are loud
A browser is not Photos.app. Keep the drop under about 80 MB. Use a desktop. An iPhone tab has a tight memory ceiling. A 48 MP HEIC can decode into hundreds of megabytes of raw RGBA before we draw anything. If the tab reloads or the page goes white, the browser gave up. That is not a silent upload.
Output is capped at an 8192-pixel edge and about 25 megapixels so a typed-in 30000 × 20000 does not take the machine with it. The readout says when we cap. That is a safety ceiling, not a print shop.
What you should expect
JPEG is lossy. Even a 90° turn is a re-encode, so a second pass is a little softer. Quality 0.90 is visually close to a phone snapshot. PNG is lossless and often larger. HEIC in becomes JPEG or PNG out — we do not write HEIC.
Orientation baked in by the decoder should already look upright for most iPhone stills. If a shot is still sideways, that is what the 90° control is for. Live Photos: we read the still.
What this is not
This is not a batch folder app, not a crop tool, and not ImageMagick. Crop lives at /crop-image. One still at a time. Hundreds belong in Preview or magick mogrify -rotate 90 on a machine you control. Convert format without turning the pixels on /convert-image. PDFs have their own clinic at /pdf.
FAQ
Does the photo leave my computer?
No. Decode, rotate, and encode run in this tab. The privacy page says the same thing.
Can I paste a screenshot?
Yes. Focus this tab and press Ctrl+V (Cmd+V on a Mac). We take the first image on the clipboard. HEIC rarely lands there; drop those.
Why is a 90° JPEG not the same bytes?
The canvas writes a new file. We do not rewrite JPEG MCU blocks in place. For a form, a slide, or WhatsApp, it is the same picture. For a bit-exact archive, rotate on a desktop tool that can transpose without re-encoding.
Can I crop here?
No. This page turns and scales. Cut a still on Crop image — free, 1:1, 4:3, 16:9, or 9:16. Same kinds of still, still local.
Does keep-aspect stay on?
Yes, by default. Max edge always keeps it. Box keeps it unless you untick the box. Stretching is a choice, not a surprise.
Do you add a watermark or ask for an email?
No. The download link is a normal file.
Is my job counted?
Each successful apply increments a number in localStorage, key once:jobs. Nothing is posted to a server.