Rotate individual pages or all pages in a PDF
Rotate individual pages or the entire document by 90, 180, or 270 degrees. Perfect for fixing sideways scans or upside-down pages.
Initializing in your browser…
A few landscape scans inside a portrait PDF appear sideways on screen.
Input
mixed.pdf · rotate pages 3 and 7 by 90° CW
Output
mixed.pdf with those pages permanently upright
The rotation is written into the page so every viewer shows it correctly, not just ones that honour a transient view setting. You can rotate specific pages or the whole document.
Rotate individual pages or the entire document by 90, 180, or 270 degrees. Perfect for fixing sideways scans or upside-down pages.
If a scanner fed a single page in landscape, tick just that page to select it, then use Rotate Selected 90deg CW. Only that page's /Rotate metadata is set; the rest of the document is untouched and quality is unchanged.
Use the Rotate All Pages 90deg CW (or CCW) buttons to apply the same rotation to every page at once, including pages past the 20-page thumbnail cap, then click Apply Rotation to download the corrected file.
PDF Rotator changes page orientation by editing the PDF's rotation metadata rather than re-drawing pixels. When you click Apply Rotation, the tool calls pdf-lib's page.setRotation(degrees(n)) on each affected page, which writes that page's /Rotate entry in the document structure. Nothing is rasterized or re-encoded, so there is no image-quality loss and the change is fully reversible by rotating back to 0deg. Only the angles 90, 180, and 270 are supported (no arbitrary degrees), and the chosen rotation is written as an absolute value from zero, so the result is the net rotation you set in the editor rather than an increment on top of any orientation already baked into the source file.
The editor gives you three independent ways to rotate. Each page thumbnail carries its own clockwise (90deg) and counter-clockwise (270deg) buttons, plus 180deg in list view; a 'Rotate All Pages' block applies 90deg CW, 180deg, or 90deg CCW to every page at once; and when you tick pages a 'Rotate Selected' panel rotates just that multi-selection. All three paths feed the same rotation state, which is tracked per page and normalized modulo 360 in the React Map: rotating a page by 90 four times returns it to 0deg and the entry is dropped from the pending set, so the 'Rotated' counter and the orange angle badge always reflect the true net angle. A header summary shows Total Pages, Selected, and Rotated counts, and you can Reset All to clear pending rotations before applying.
Thumbnails are rendered client-side with pdfjs-dist at scale 0.3 and exported as 60%-quality JPEGs, but only for the first 20 pages as a performance cap; pages beyond 20 (and any page whose render fails) fall back to a numbered placeholder that still rotates visually in the preview and rotates correctly in the output, since Apply Rotation operates on the full page range, not just thumbnailed pages. The preview rotation is a CSS transform on the thumbnail only; the actual file is produced by reloading the original via PDFDocument.load and saving a new <name>_rotated.pdf. Because only the /Rotate flag is changed, the page's underlying MediaBox width and height are not swapped, so compliant viewers display a rotated 90deg landscape page as portrait while the stored dimensions stay as the original document defined them.
Yes. Select only the page you want to rotate and leave the others unchanged.
PDF parsing and editing happen in your browser. Documents, and everything inside them, are never uploaded or stored remotely.