Skip to content

🔄 Image Rotate / Flip

Rotate images by 90 degrees (clockwise / counter-clockwise), flip horizontally or vertically, or rotate by any angle with a slider. Processed in-browser via Canvas API.

100% Free No signup Browser-only 5 languages Dark mode

🔒 About Privacy

📂

Drag & drop, click to select, or paste an image

📖 Where people get stuck

Rotate an image in ninety-degree steps, flip it horizontally or vertically, and turn it to any angle with the slider. Processing uses the Canvas API entirely in the browser. Going through a canvas always redraws the image — it does not rotate your original file so much as build a new image from it. Consequently EXIF, the colour profile and the original compression settings do not carry over. What looks like merely changing the orientation is in fact a rebuild, and that is where everything below starts.

Case What happens What to do
A simple ninety-degree turn degrades the image JPEG applies lossy compression every time it is saved, so simply loading, redrawing and saving degrades it. In fact a ninety-degree rotation can be done losslessly on a JPEG — it is just a rearrangement of blocks, which is what jpegtran -rotate 90 does. The canvas route cannot use that optimisation, because it expands to pixels and recompresses. One pass is essentially invisible; five or ten passes put noise along the edges that anyone can see. Export as PNG when you do not want any degradation: the compression is lossless, so the pixels survive any number of rotations, at the cost of file size. For original photographs or bulk work, use jpegtran or exiftran -a, which genuinely lose nothing. As a rule of thumb, this tool for fixing one image to share, the command line for archives and deliverables. The most important habit is never to round-trip the same file repeatedly — if you are iterating on an angle, reload the original each time, because the degradation accumulates.
Free rotation leaves jagged edges, or the wrong fill colour Rotating off-axis never lines the new pixels up with the old ones, so interpolation — resampling — is unavoidable. That is why thin lines and letterforms soften, and there is no way around it: unless the angle is a multiple of ninety, the information is rebuilt. Rotation also leaves triangular margins in the corners. Those margins are transparent in PNG and white in JPEG, but JPEG cannot hold transparency, so in some implementations the transparent area comes out black — that is the route by which someone expecting white gets black corners. Decide the correction angle in one pass. Dragging the slider back and forth resamples every time and costs you quality — the correct procedure is to settle on the angle roughly, then reset and apply it once from the original. The cleanest treatment for the corner margins is to crop them away afterwards (image crop tool). Where the fill colour matters — print, or placement on a white page — either export PNG and leave it transparent, or crop so there is no margin at all. Treat the JPEG fill colour as environment-dependent and do not rely on it.
A phone photo shows a different orientation in other apps A phone camera saves the image in the sensor orientation and records the fact that it is really rotated ninety degrees in the EXIF Orientation tag. Browsers read that tag and display the correct way up, so what you see on screen is right. Drawing to a canvas bakes that visible orientation into the pixels and drops the EXIF tag. The output file is therefore correctly oriented, but to older software that relied on EXIF to rotate, it is an image whose orientation information has simply gone. This is generally the behaviour you want. With the orientation fixed in the pixels, the image displays correctly even where EXIF is not read — think of it as guaranteeing the same orientation everywhere. The one thing to be careful of is not overwriting the original. Some photo managers keep rotation non-destructively, relying on EXIF, so replacing a file inside such a library directly can result in the image being rotated twice. Always save the output as a separate file and re-import it — which is why this tool appends _rotated to the filename.

As a side effect, going through a canvas strips all EXIF — including GPS coordinates, the capture timestamp, the camera model and its serial number. Posting a phone photo straight to social media or a blog can reveal where you live or work, so running it through this tool first is genuinely useful in that respect. That said, the purpose here is orientation, so if removal matters, verify with a dedicated EXIF tool that the data is actually gone — operating on the assumption that it should be will eventually meet an exception. One more thing: loading an animated GIF or WebP processes only the first frame, because a canvas holds a still image, and there is no way to rotate one while keeping the animation.

📖 How to Use

  1. 1
    Load an image
    Drag and drop, click to select, or paste from clipboard with Ctrl+V.
  2. 2
    Pick a transform
    Click 90°, 180°, or flip buttons. You can press them multiple times.
  3. 3
    Fine-tune with free angle slider
    Free rotation from -180° to 180° in 1° steps. Great for fixing tilt.
  4. 4
    Download
    Download as PNG (transparent background) or JPEG (white background). Filename gets _rotated suffix.

❓ Frequently Asked Questions

Is my image uploaded to your server?
No. All processing happens in your browser via Canvas API. Image data never leaves your device.
Does free-angle rotation shrink the image?
No. The canvas is auto-expanded to fit the rotated bounding box, so no pixel information is lost.
Is EXIF Orientation respected?
Modern browsers auto-apply EXIF Orientation when rendering, so the image is processed as displayed. For full EXIF removal, combine with the EXIF tool.

🔗 Related Tools

🐛 Found a bug or issue with this tool?

Free to use, no signup. Even just the steps to reproduce are helpful. Reports go directly to the operator and help us fix issues.

* Browser info (UA / screen / language / URL) is sent automatically to help reproduce the issue