To rotate multiple images in bulk without uploading them, run each file through a local image rotator that accepts JPG, PNG, and WebP up to 25 MB, choose a 90° left, 90° right, or 180° turn, and download a full-resolution PNG per file with the rotation and output dimensions reported on screen. This guide uses the Image Rotator, a single-file browser tool that does exactly that pass for each input. A bulk rotation through this kind of in-browser tool is really a repeated one-at-a-time loop: pick file 1, rotate, save; pick file 2, rotate, save; and so on, with the rotation choice, output pixel dimensions, and resulting file size displayed before you download, so you can verify each result instead of trusting a silent batch job. That workflow is slower than handing a folder to a server and waiting for a ZIP, and it is meant to be: it gives you a visible preview of every output, the exact final pixel dimensions for every image, and the certainty that no bytes of your photos leave the current tab. The sections below walk through what the tool accepts, how the geometry changes for quarter turns versus a half turn, why the PNG download can be larger than the original JPEG or WebP, and how to handle a folder of images efficiently while keeping every step on your own machine.

What "Rotating Multiple Images" Looks Like in a Local Browser Tool
A bulk rotation through an in-browser rotator is a repeated single-file loop, not a server-side batch job. For each picture you want to turn, you pick the file, choose 90° left, 90° right, or 180°, glance at the reported rotation, dimensions, and file size on the result panel, and download a PNG. The next picture starts a clean run: a fresh temporary object URL, a fresh canvas plan, a fresh PNG export. There is no shared queue and no shared ZIP, and the only thing carrying over from one file to the next is your rotation choice.
That shape is slower than handing a folder to a server and waiting for a ZIP, and it is built that way on purpose. Each step shows you exactly what is about to be written before it is written. If a photo was 4000×3000 and you turn it 90°, the result panel reports 3000×4000; if you turn it 180°, the panel reports 4000×3000 again. If a file is unsupported, empty, oversized, or has too many decoded pixels, you get a clear message and the screen clears instead of leaving a stale preview behind. This pattern — one file at a time, full preview, explicit limits — is the same one used by other local image tools for multiple files, and it is documented for adjacent jobs like picking colors out of a folder of images locally.
What the Image Rotator Accepts and Outputs
The Image Rotator is strict about what it will decode and what it will hand back. Inputs are limited to three formats and a hard set of safety bounds; the output is always one format with predictable behavior. These limits are explicit and reported, not silent caps. A file that is too large, too many pixels, or in the wrong format produces a message rather than a degraded result. Because compressed bytes do not predict canvas memory — a small JPEG can decode into a huge bitmap — the tool checks both the file size and the decoded pixel dimensions before it draws anything.
| Setting | Value |
|---|---|
| Accepted input formats | JPEG, PNG, WebP |
| Deliberately excluded | SVG (can reference external content, not an ordinary bitmap) |
| Maximum compressed file size | 25 MB |
| Maximum decoded pixels | 40 megapixels |
| Maximum side length | 20,000 pixels on either dimension |
| Output format | PNG (lossless) |
| Resizing, cropping, or stretching | None applied |
| Preserved metadata | Not guaranteed — EXIF, color profiles, and animation are not preserved |
The downloadable PNG is drawn at the full output canvas, not from the on-page preview. The preview is visually constrained by CSS only; the file you save is built from the complete rotated pixel grid planned for the angle you chose. That separation is the reason a 1200×800 source can be shown small on screen and still save as a clean 800×1200 PNG after a quarter turn.
How to Rotate a Folder of Images One at a Time
Treat each image as one pass through the same three-step workflow. The loop is short, and each pass produces a visible result before you move on.
- Pick the next file. Open a JPG, PNG, or WebP from your folder. Confirm the displayed pixel dimensions, for example 1200×800 or 4032×3024, and the accepted file size.
- Choose a rotation. Click Rotate left 90°, Rotate right 90°, or Rotate 180°. The result panel updates the rotation, output dimensions, and file size immediately, so you can see the new shape before saving.
- Inspect the orientation and output dimensions, then download the PNG. Check that the picture is right-side up, that the printed dimensions match what you expected, and that nothing important is sitting on the edges. Save the PNG and move on to the next file in your folder.
- Repeat for every image. The next file replaces the previous one. The temporary object URL from the old file is released, and a fresh decode-and-rotate cycle begins.
- Verify in the destination app. Open the saved PNGs in the program where you intend to use them and confirm orientation, dimensions, transparency, and edge content before you share or export further.
For a folder of, say, twenty photos, this is twenty short passes instead of one batch operation. The trade-off is that every output is verified individually and no file ever leaves your machine.
How Output Dimensions Change: 90° vs 180° Turns
The geometry is deterministic and easy to predict. The rotation plan in the tool chooses the output canvas before drawing the source into it, so what you see on the result panel is exactly what the saved PNG will be. A clockwise turn maps the source's top edge onto the output's right edge; a counterclockwise turn maps it onto the output's left edge; a half turn maps opposite corners onto each other.
| Rotation chosen | Output dimensions from a 1200×800 source | What happens to the axes |
|---|---|---|
| Rotate left 90° | 800×1200 | Width and height swap |
| Rotate right 90° | 800×1200 | Width and height swap |
| Rotate 180° | 1200×800 | Both axes reverse without swapping |
The same plan is used by the production renderer and the isolated tests, including the affine transform values passed to CanvasRenderingContext2D.setTransform, so the geometry you read in the result panel is the geometry written into the PNG. Golden assertions verify the four-corner mappings for non-square sources, which catches common errors such as the wrong translation, a clipped strip, or rotation around the wrong origin.
Why the Downloaded PNG Can Be Larger Than the Original
PNG uses lossless compression. JPEG and many WebP files use lossy compression. After a rotation, the pixel grid is either identical to the source (for 180°) or has its axes swapped (for 90°), so the PNG must store every visible pixel without throwing any away. That means a 1.4 MB JPEG of a phone photo can easily download as a 6 MB PNG, even though nothing in the picture changed except orientation.
This is normal and is not a bug. It is the price of preserving every pixel through the turn, and it is also why PNG is the right choice for the download — the browser gets a consistent, lossless bitmap regardless of whether the input was JPEG, PNG, or WebP. If you need a smaller file after rotation, the right next step is to run the PNG through a compressor or a format converter such as the Image Compressor; the rotation tool deliberately does not bundle that step in.
Local Processing, Object URLs, and What Leaves Your Machine
All decoding, canvas drawing, and PNG creation happen in the current browser tab. The selected file is represented by a temporary local object URL long enough for the browser to decode it, and that URL is released as soon as it is no longer needed. The generated PNG receives its own temporary download URL, which is replaced and released when you rotate again, pick a different file, or close the page.
No image content, filename, rotation choice, or output is sent to Lizely. That makes the workflow practical for ordinary photos, draft designs, scans, and screenshots where you would rather not have the file leave your machine, but it does not replace a visual check. Open the saved PNG and confirm orientation, dimensions, transparency, and edge content before sharing it.
Two safety details are worth knowing. First, compressed file size alone does not predict canvas memory — a 4 MB JPEG can decode to a 24-megapixel bitmap and a 22 MB PNG can decode to a 4-megapixel one — which is why both bytes and decoded dimensions are checked. Second, EXIF metadata, color profiles, camera orientation tags, and animation are not preserved through the rotation; the output is a newly encoded static PNG of the decoded pixels. Mounted-state and job guards also prevent a stale asynchronous decode or export from replacing a newer result on screen.
When a Different Local Tool Is the Better Fit
Rotation is one specific operation, and the tool is built to do that one thing with a visible output. If your actual need is different, the right tool is a different tool, even though the workflow will look similar. If you need a mirror image rather than a turn — left becomes right, but top stays top — use Image Flipper. If the orientation is correct but the dimensions are not, use Image Resizer. If you need to merge several rotated pictures into a single grid, use Photo Collage Maker. None of these bundle rotation silently behind another control, and none of them upload your files.
The same one-at-a-time local pattern is useful for other bulk and multi-file tasks too, such as cropping several images privately or applying photo filters to multiple files locally. The trade-off is consistent across all of them: you give up server-side batching in exchange for a visible, verifiable result on every single file.
For a deeper look, see Invert Image Colors Alternative: Run It Locally.