Skip to main content
ToolsHub

Rotate Image

Upload an image and rotate it in fixed steps or by a free angle, then download — all processed on a canvas in your browser.

Files never leave your browser
Files never leave your browser

Drop an image here, or click to browse

JPG, PNG, WebP · up to 50 MB

How to use Rotate Image

Rotate any image by 90°, 180°, 270°, or a free custom angle — all processed on a canvas in your browser with no server upload. When using a non-rectangular angle, the canvas automatically expands to a bounding box that fits the entire rotated image, preventing any pixel from being clipped. Supports JPG, PNG, and WebP; output is a lossless PNG.

  1. Upload your image using the file picker or drag-and-drop.
  2. Select a preset rotation angle (90°, 180°, 270°) for quick common rotations.
  3. Or enable "Custom angle" and enter any value from −360° to 360° for precise control.
  4. Preview the result on the live canvas — the canvas auto-expands for oblique angles.
  5. Click "Download Rotated Image" to save the result.

Your data never leaves your device — 100% private processing.

Preset vs. custom angle rotation

Preset angles of 90°, 180°, and 270° are the most common rotations — used to correct photos taken in portrait/landscape mode and to rotate scanned pages. At exactly 90° or 270° the canvas dimensions simply swap (a 1920×1080 image becomes 1080×1920). At 180° the dimensions stay the same. Custom angles (e.g. 15°, 37°) are useful for correcting horizon tilt in landscape photos. At oblique angles, the canvas must expand to a bounding box so no pixel is cropped — a 1000×500 image rotated by 45° requires a canvas of approximately 1061×1061 px.

AngleCanvas changeUse case
90° / 270°Width and height swapPortrait↔landscape correction
180°No changeUpside-down scan fix
Custom angleExpands to bounding boxHorizon tilt correction

Bounding-box maths for oblique rotations

When an image of width W and height H is rotated by angle θ, the resulting bounding box has width = |W·cos θ| + |H·sin θ| and height = |W·sin θ| + |H·cos θ|. The rotated image is drawn centred in this expanded canvas using translate(width/2, height/2) → rotate(θ) → drawImage(img, −W/2, −H/2). The background of the expanded area is transparent, making PNG the natural export format. For JPEG output, transparent pixels would become black — PNG is therefore the recommended format for rotated images with custom angles.

Glossary

Bounding box
The smallest axis-aligned rectangle that fully contains a rotated shape — its dimensions grow beyond the original when the angle is oblique.
Clockwise rotation
A rotation where pixels move in the direction of clock hands — positive angles in the Canvas API rotate clockwise.
Canvas translate
A Canvas 2D API operation that moves the coordinate origin, used to centre a rotated image on the expanded canvas.
Oblique angle
Any rotation angle that is not a multiple of 90°, resulting in the image not being axis-aligned.

Related reading

Frequently Asked Questions

Free · No spam

Get weekly tool tips & updates

New tools, power-user tips, and productivity hacks — delivered free every Friday.

No spam, ever. Unsubscribe with one click.

Why use Rotate Image?

  • Lossless and lossy compression options to balance quality vs file size
  • Supports all major formats: JPEG, PNG, WebP, AVIF, GIF
  • Batch operations keep filenames and folder structure intact
  • Runs client-side — no image data ever leaves your device

Common use cases

  • Resize product photos before uploading to an online store
  • Compress images to pass file-size limits on job application portals
  • Convert PNG screenshots to WebP for faster web pages
  • Create thumbnails for YouTube or social media posts
  • Remove backgrounds from profile photos

Related Image Tools

Explore all Image Tools.