Bulk Image Rotate
Rotate mixed batches with orientation filters, per-photo overrides, and before/after previews.
Choose images or drag & drop
JPEG, PNG, WebP — up to 100 images, 100 MB each
Need to rotate a single image with live preview? Image Rotator
Runs locally in your browser. Nothing is uploaded or sent to a server.
Choose up to 100 JPEG, PNG, or WebP images, select an operation, and click Rotate all to get individually downloadable results or a ZIP. Apply the shared edit to all images, portraits, or landscapes, then override exceptions with per-file controls. Preview before processing. Lossless JPEG edits preserve compressed pixels and metadata by default; Auto bakes EXIF orientation into pixels, while Remove metadata (incl. GPS) re-encodes without source metadata. Processing stays in your browser.
Updated
Related Tools
Image Rotate
Rotate by a custom angle, mirror an image, or keep JPEG pixels untouched with lossless turns.
image-toolsBulk Image Resizer
Resize a batch by size, percentage or longest edge, then rename and download individual files or a ZIP.
image-toolsBulk Image Cropper
Crop up to 50 images with shared ratios and individual focal points, then download a ZIP.
How do you rotate a mixed batch and handle exceptions?
Choose your JPEG, PNG, or WebP images, select the shared Operation, and click Rotate all. Download each result separately or collect the batch with Download ZIP. Use Apply to when only portrait or landscape images need the shared correction. Each file also has controls for exceptions, so differently oriented photos can stay in the same batch.
For a worked example, add three PNG files whose displayed dimensions are 1200 × 1800, 1800 × 1200, and 1200 × 1200 pixels. Select Portrait only and Rotate 90° right, leaving metadata removal off. The portrait becomes a landscape, while the other two files are skipped and copied unchanged. Now choose 180° on the landscape file: that override replaces the shared turn and bypasses the filter.
| Input | Per-file choice | Result | Output dimensions |
|---|---|---|---|
| 1200 × 1800 PNG | Use shared | 90° clockwise | 1800 × 1200 |
| 1800 × 1200 PNG | 180° | Half turn | 1800 × 1200 |
| 1200 × 1200 PNG | Use shared | Skipped, unchanged | 1200 × 1200 |
Click a thumbnail to select its Before and After current settings preview. Per-file 90° left, 90° right, and 180° are absolute choices for that processing run, not buttons that accumulate turns. Auto normalizes existing EXIF orientation without adding a rotation. Use shared removes the override. Run Rotate all after reviewing your choices; a preview alone does not finish the batch.
How do the orientation filters and flips work?
Portrait only matches images whose decoded height exceeds their width. Landscape only matches those whose width exceeds their height. The filter reads dimensions with image orientation applied, rather than relying on the filename or the uncorrected stored JPEG grid. A square matches neither restricted filter. Select All images to include squares in the shared edit, or give a square its own override.
A right turn is 90 degrees clockwise; a left turn is 270 degrees clockwise. A half turn is 180 degrees. Flip H swaps left and right, while Flip V swaps top and bottom. Flipping does not exchange width and height. These operations suit sideways scans, upside-down camera exports, and mirrored product photographs. The bulk interface offers right-angle operations, not a free-angle slider. For an arbitrary angle, use Image Rotator.
How does lossless JPEG rotation preserve your photos?
JPEG images contain compressed pixels and may also contain EXIF metadata describing their display orientation. The Orientation tag supports eight values, covering rotations and mirrored variants. With Lossless (JPEG only) selected, this tool combines the existing orientation with your chosen edit. It patches an existing tag or inserts a minimal EXIF segment when no usable tag exists. The compressed pixel payload is retained, introducing no additional JPEG compression loss.
This is a metadata edit: the stored pixel grid is not physically turned. Your destination viewer must honor EXIF orientation to display the result correctly. If another application ignores the tag, bake orientation into pixels instead. Lossless mode also retains existing metadata, potentially including camera details and location. Keeping compressed pixels intact and removing source metadata are different goals; choose the setting that matches your delivery requirements.
When should you bake EXIF orientation into pixels?
Enable Auto-fix orientation from EXIF for physically oriented pixels. Select EXIF correction only when you want to keep the existing displayed direction without adding a turn or flip. You can also combine baking with a shared rotation: camera orientation is handled before the selected edit. With metadata removal off, JPEG output receives an explicit Orientation value of 1 so compatible readers do not rotate already-corrected pixels again.
Baking overrides lossless mode because the encoder creates new pixels. JPEG and WebP canvas output use quality 0.92. This encoder parameter does not mean that 92 percent of the original detail or file size is retained. PNG output keeps its format and transparency, with lossless PNG compression. A quarter turn swaps displayed width and height; a half turn keeps those dimensions. The bulk settings add no resize or crop.
Auto is not subject recognition. If incorrect metadata already makes the image appear sideways, normalizing that metadata cannot discover the intended upright direction. Inspect the preview and choose a manual per-file turn. This is especially useful when a collection combines camera photographs with scans that have no useful orientation tag.
What happens to metadata and filtered-out images?
Remove metadata (incl. GPS) starts a new encoding from rendered pixels instead of copying source metadata. It overrides lossless JPEG handling even if that checkbox remains checked. It also changes filtering behavior: a file outside the selected orientation group is re-encoded without an additional turn, rather than copied unchanged. Thus the whole batch follows the removal setting, while the shared rotation still applies only to matching files.
Each row reports EXIF and GPS inspection results. Treat No GPS detected as a detection result, not proof about every possible embedded field. The inspector can report that only the first 512 KB were checked, or that inspection failed. Review these indicators before deciding whether to preserve metadata. When removal is enabled, the JPEG finalization step does not add the otherwise explicit Orientation 1 tag.
What are the format, count, and memory limits?
The uploader accepts JPEG, PNG, and WebP and allows up to 100 files in the batch. The per-image size limit is labeled 100 MB and checked against 104857600 bytes. Empty files, unsupported MIME types, and files above that threshold receive errors. If adding a selection would exceed the count limit, none of that additional selection is added; choose a smaller group or use Clear all before starting a separate batch.
PNG and WebP always go through rendering and encoding. The tool requires the output MIME type to match the source and reports an error if the browser cannot encode it, rather than silently changing formats. Animated WebP is rendered as a still image; animation is not preserved. The byte limit is not a promise that every image will fit available memory. Decoded images and retained output blobs still consume memory, so smaller batches help on constrained devices.
How do progress, errors, and ZIP downloads work?
Files are processed sequentially. The completed / total counter advances for successes, skips, and errors, so reaching the total does not mean every file rotated successfully. Review each row. An unreadable image reports its own failure while the queue continues. Download ZIP includes completed results and skipped originals; errored files are excluded. The archive is named rotated-images.zip and is assembled locally, without uploading image data for processing or ZIP creation.
Output names preserve the source stem with a -rotated suffix. For two files named scan.png, the assigned names are scan-rotated.png and scan-rotated-2.png. Collision checks ignore letter case. A skipped original also uses its assigned download name, so that suffix alone does not establish that its pixels changed. Read the row status and inspect the preview when checking a delivery.
Changing shared settings makes existing results stale and disables their downloads until you run Rotate all again. A per-file override clears that file's previous result. Reprocessing starts from the selected original file, avoiding repeated compression of earlier output. If ZIP creation fails, use individual downloads or try a smaller batch.
Which tool should you use after rotating a batch?
Use Bulk Image Resizer when corrected photos need consistent dimensions, or Bulk Image Cropper when they need a shared aspect ratio. Rotation here preserves the complete frame. Review direction and metadata choices before moving to those separate tasks, and keep the original files if you need to revisit a correction later.
How to Use Bulk Image Rotate
-
Choose images or drag & drop
Select JPEG, PNG, or WebP files, up to 100 images and 100 MB per image. Use Add more images to extend the batch within that limit.
-
Shared rotation settings
Under Apply to, select All images, Portrait only, or Landscape only. Under Operation, choose Rotate 90° right, Rotate 90° left, Rotate 180°, Flip H, Flip V, or EXIF correction only. Review Lossless (JPEG only), Auto-fix orientation from EXIF, and Remove metadata (incl. GPS).
-
Rotation for this image
Use 90° left, 90° right, 180°, or Auto for exceptions. Use shared restores the common settings. Click a file thumbnail to inspect Before and After current settings.
-
Rotate all
Process the batch, review each result and error, then use Download for individual files or Download ZIP for the archive. Run Rotate all again after changing shared settings to update the downloadable results.