Rotate PDF pages
The page the scanner fed upside down comes out upright — and stays selectable text, because a rotation is a page attribute, not a new picture.
🔒 100% client-side · zero server upload
Choose a PDF — every page appears here as a card.
The pages in your file
Every page is a card: click one to keep or remove it, drag it to change the order, or use the arrows on it. Nothing is uploaded — a picture on a card is the image taken out of your PDF, and a page that is text is drawn as an empty frame at its real size, not as a picture of the words.
Drag a card to move a page. The page numbers renumber as the pages move.
Result
The PDF is read with pdf-lib inside this tab. No page, no byte and no filename is sent anywhere.
Malaysian rules & edge cases
What this does to a Malaysian office document
A PDF page is an object inside the file, not an image. This tool copies the page objects into a new document and leaves their content streams exactly as they were — so text stays selectable, a scanned page keeps its resolution, and the file does not grow a second JPEG generation of itself.
- Rotation is added, not replaced. A page that already carries
/Rotate 270turned another 90° becomes 0°, which is what "turn it upright" means when the scanner wrote the wrong value. The row reports the angle that was applied and how many pages it turned. - Deleting a page shifts the numbering. Removing page 2 of 5 gives you a 4-page file where the old page 3 is now page 2. If you need the original numbers, split first and rename afterwards.
- A number that is not a page is named, not ignored. Typing
1-2, 9into a six-page file gives you pages 1-2 and the result line quotes9. A typo costs you the typo, never the rest of the request — and never a page you did not ask for. - Measured in pages, not megabytes. A bank site that caps uploads at 5 MB is really asking you to remove pages: a 300 dpi A4 scan is roughly 1–2 MB per page, so a 40-page bundle has to lose most of its pages, not be compressed.
- Password-protected files are refused by name. An encrypted PDF — including one that only carries an owner (permissions) password — cannot be opened here, and pretending otherwise would hand you a blank document. Open it in Chrome or Edge, press Ctrl+P and choose "Save as PDF", then drop that copy — you do not need to remember the password to do this.
- Filled forms keep their text. Copying pages carries a page's visible annotations but not the document's form definition, so a filled LHDN or bank form is flattened first: the answers are burned into the page instead of silently disappearing.
- Nothing leaves the tab. The file is read with pdf-lib, which runs in this page; there is no upload endpoint on this site, and the network tab stays empty apart from this site's own assets.
- Split makes a ZIP, not 40 downloads. One click, one file, one entry per page named
page-01.pdfso the folder sorts in reading order. The Pages field is hidden for split, because splitting means every page.
Before and after
Before
kontrak-ssm.pdf — 12 pages, 8.4 MB, appendix pages 2-3 and 5 not needed After
kontrak-ssm-clean.pdf — 9 pages, 2-3 and 5 removed, the other nine untouched at their original resolution How it works
- Drop the PDF. Its page count and size are read from the file itself and shown before you press anything.
- Choose rotate, keep some pages, remove some pages, or split — and fill in the Pages field if the action needs one.
- Press the button, check the page count on the result line, then download the new PDF or the ZIP.
FAQ
Does rotating re-render the page?
No. The page keeps its content and gains a /Rotate value, which every PDF reader applies when drawing it. The file size barely changes and the text stays sharp at any zoom.
Can I rotate only one page?
Yes — type its number in the Pages field, or a list like 2, 5. Leave the field empty to turn every page, which is what a whole bundle scanned sideways needs.
What if the page is already rotated?
The angle is added to what the page already carries: a page with /Rotate 270 turned another 90 becomes 0. That is the useful behaviour for a scanner that wrote the wrong direction, and the row reports the resulting angle.