PDF Splitter

Split a PDF into separate files by page range, every N pages, or one per page.

🔒 PDFs are processed locally in your browser — never uploaded.

Related Tools

0 comments

How it works

Your PDF is loaded into an ArrayBuffer and parsed by pdf-lib. For each output, the tool creates a fresh PDFDocument, copies the selected page indices from the source, and saves the result. When the output contains more than one file (per-page or multi-range modes), files are zipped via JSZip into a single download.


              for group in groupsByMode():
  out = new PDFDocument()
  pages = await out.copyPages(src, group)
  pages.forEach(p => out.addPage(p))
            

Common use cases

  • Extracting an appendix from a long report to share separately.
  • Splitting a multi-page invoice into one PDF per customer for distribution.
  • Pulling specific chapters from a textbook PDF for assigned reading.

Frequently asked questions

Why is the output a ZIP file when I split into multiple PDFs?

Browsers can only trigger one download per user action. Bundling multiple output PDFs into a single ZIP via JSZip lets you save them all in one click.

What page-range syntax does it accept?

Comma-separated ranges and single pages: "1-3, 5, 7-9". Spaces are ignored. Page numbers are 1-based and must be within the document.

Is the original PDF modified?

No. Splitting only reads the source — the original file on your disk is untouched. Each output is a new PDF generated in your browser.

Does it work for password-protected PDFs?

Not currently. Encrypted PDFs need to be decrypted before splitting; the tool surfaces a clear error so you can decrypt with Acrobat or qpdf first.