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.