PDF pages — split, rotate and delete without uploading

Drop a 40-page scanned bundle and keep only the pages a bank asked for. Pages are copied, not re-rendered, so every page keeps its own bytes and resolution.

🔒 100% client-side · zero server upload

Choose a PDF — every page appears here as a card.

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 270 turned 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, 9 into a six-page file gives you pages 1-2 and the result line quotes 9. 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.pdf so 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

    1. Drop the PDF. Its page count and size are read from the file itself and shown before you press anything.
    2. Choose rotate, keep some pages, remove some pages, or split — and fill in the Pages field if the action needs one.
    3. Press the button, check the page count on the result line, then download the new PDF or the ZIP.

    FAQ

    Does my document get uploaded?

    No. pdf-lib reads and writes the PDF inside this tab and the browser receives the result as a download. There is no server endpoint for files on this site — cut the network after the page has loaded and it still finishes.

    Will the pages lose quality?

    No. The page objects and their embedded images are copied byte for byte; nothing is re-rendered or re-compressed. A 12-page 8.4 MB scan trimmed to 9 pages comes back at roughly three quarters of the size, with every remaining page at its original resolution — the opposite of a "PDF compressor".

    Can I split a 100-page file?

    Yes, but the pages are held in memory while the ZIP is assembled, so the peak is several times the file size — an estimate of 5–6× on a 40 MB bundle with shared letterheads, not a measured figure. On a phone, split in two passes. The result line states how many files and how many bytes were produced before you download.

    Why does it refuse my PDF?

    Three reasons are named on the page: the bytes do not start with %PDF, the file is password-protected, or it is truncated. A password-protected file cannot be decrypted in the browser — open it in Chrome or Edge, press Ctrl+P and choose "Save as PDF", then drop that copy. A truncated file has no page tree to copy.