Rotate image
Turn images 90, 180 or 270 degrees. Drop as many as you like.
Runs on your device. The file is never uploaded.
Rotate image turns a picture 90, 180 or 270 degrees clockwise by moving whole pixels, so nothing is resampled, and appends the angle to the name as scan-rot90.jpg. Arbitrary angles, mirroring and flipping are not offered. The re-encoded file carries no EXIF orientation tag, so an app that was auto-rotating your photo will show it differently.
Questions
Which angles can I rotate by?
Ninety, 180 or 270 degrees clockwise, chosen with the Rotation option, which defaults to 90. Arbitrary angles are not offered, and there is no mirror or flip here. A 90 or 270 degree turn swaps the width and height of the image; 180 keeps them. The pixels are moved one by one, so nothing is resampled or blurred.
Is rotating lossless?
The rotation itself is exact, but the file is re-encoded afterwards. For PNG that is lossless. For JPG and WebP the image is encoded again at the Quality option, default 80, so a JPG loses a little each time you run it. This is not a lossless JPEG transform of the kind jpegtran performs.
Will this fix a photo that only looks sideways in some apps?
It rotates the real pixels, which is a different fix. The re-encoded file carries no metadata at all, including no EXIF orientation tag, so every viewer will show it the same way. If an app was already auto-rotating your photo from that tag, check the result before deleting the original, since you might end up a quarter turn out.
Does it upload anything?
No. Decoding, the pixel rotation and encoding all happen in a Web Worker in this tab, using the jSquash WebAssembly codecs. Nothing is uploaded and no account is involved. After the first visit the page works with your network turned off.
What is the rotated file called?
Your name with the angle appended, such as scan-rot90.jpg, scan-rot180.jpg or scan-rot270.jpg. The format stays the same as the input, and the extension is re-derived from it, so PHOTO.JPG comes back as PHOTO-rot90.jpg. Drop as many files as you like and each is rotated by the same angle and returned separately.
Which formats does it read?
JPG, PNG and WebP, decided from the file extension. Anything else stops with "only JPG, PNG and WebP are supported". Transparency in a PNG or WebP survives the rotation, since the alpha channel moves with each pixel along with its colour. HEIC, AVIF, GIF and BMP are not read here, so convert them first.