PDF Splitter
Extract specific pages or page ranges from a PDF into a new document.
Reviewed by Aygul Dovletova · Last reviewed
Drop a PDF file here or click to upload
Split and extract specific pages
How to Split a PDF
- Upload a single PDF through the dropzone. The tool reads its page count and pre-fills the range input with the full document range, for example
1-42. - Refine the range. Type a comma-separated expression like
1-5, 8, 10-12to pick pages 1 through 5, page 8, and pages 10 through 12, or click individual page number buttons to toggle them on and off. - Watch the live preview. Selected pages highlight in the grid, and the counter at the bottom tells you how many pages the new PDF will contain.
- Click "Extract & Download" to generate the new document. It downloads as
split.pdfand contains only the pages you selected, in the order you selected them.
What Splitting Does to the Page Tree
Under the hood the tool loads the source PDF with pdf-lib's PDFDocument.load, which parses the binary header, the XRef table, and the catalog. It constructs an empty target document and loops through the selected page indices, calling copyPages to pull each page dictionary (including its content stream, resources dictionary, and any inline annotations) into the target's object pool. The new pages are appended to the target's page tree with addPage. A final save serializes the target into a fresh byte stream with a regenerated cross-reference table, then a Blob download is triggered. The whole operation is pure page-graph surgery in memory; no image re-rendering, no text re-flow, and no server communication.
Concrete Workflows That Need a Splitter
- Pulling just the signature page out of a fifty-page contract to send back to a counterparty.
- Extracting individual invoices from a monthly statement PDF that arrived as one concatenated document.
- Carving a single chapter out of a textbook PDF so a student can read without loading the whole book into a slow tablet.
- Isolating the three pages of a tax return that a lender asked for, without handing over the full filing.
- Splitting a product datasheet into front-matter and technical specifications for two different landing pages.
- Pulling the page that contains a medical lab result out of a packet that includes PHI the patient does not want to share further.
Pitfalls and Edge Cases to Know
The tool's range parser accepts 1-5, 8, 10-12 but rejects reversed ranges like 5-1; type the pages in the order you want them instead. Duplicate entries (3, 3) are deduplicated silently. If your PDF uses logical page numbering (Roman numerals on front matter, then 1 from the introduction), the tool still counts physical pages starting at 1, which can feel off by a few pages on books. Annotations attached to the extracted pages carry over, but link annotations that pointed at pages outside your selection become dangling and may render as plain text in a reader. Form fields spanning multiple pages (such as an AcroForm continuation) are carried through but may show odd numbering because the AcroForm fields dictionary is deduplicated. Encrypted inputs are rejected at load because pdf-lib cannot read ciphertext without a key.
PDF Page Trees and XRef Tables
ISO 32000-2 defines the PDF page tree as a balanced tree of /Pages nodes whose leaves are /Page objects. Splitting does not move bytes; it rebuilds the tree with only the leaves you requested and lets the serializer lay them out in a new XRef. Every page references its content via a /Contents stream that contains the PostScript-like operators ("BT ... ET" for text blocks, "Do" for image XObjects), and its drawable resources through a /Resources dictionary. Because pdf-lib copies those references rather than re-rendering, the extracted pages look pixel-identical to the source. For archival submissions that require PDF/A (ISO 19005), both the input and the output must satisfy the subset; splitting a PDF/A-compliant document preserves compliance as long as the extracted page graph does not orphan any structure-tree elements.
CLI and Desktop Alternatives
For batch splitting, qpdf --pages source.pdf 1-5,8,10-12 -- output.pdf gives the same result at the command line with full support for encrypted sources via --password. pdftk source.pdf cat 1-5 8 10-12 output output.pdf is slightly more verbose but equally reliable on older files. mutool poster -x 1 -y 1 source.pdf page-%d.pdf can split into one file per page if you need that pattern instead of a single consolidated extract. Preview on macOS supports drag-to-desktop on individual thumbnails and is often enough for a one-page pull. Adobe Acrobat Pro is the only tool that keeps the parent document's bookmarks pointed correctly at pages in the split output without manual intervention, which matters for regulated or heavily cross-referenced documents.
Frequently Asked Questions
Can I extract a single page?
Yes. Type the page number on its own (for example, "7") in the range input, or click the page 7 button in the visual grid to toggle only that page. Extracting produces a one-page PDF that reads exactly like the source page would have rendered in context, including fonts, images, and annotations tied to that page.
What is the syntax for the range input?
Comma-separated ranges with hyphens for continuous spans: "1-3, 5, 8-10" pulls pages one through three, page five, and pages eight through ten, in that order. Whitespace around the commas is optional. Ranges must go in ascending order (5-1 is rejected); reverse-order output is not supported here because it would confuse cross-page annotations.
Does splitting change image or text quality?
No. pdf-lib copies page content streams byte-for-byte into the new document, so fonts stay embedded at their original encoding, images keep their source resolution, and vector graphics retain every path. The output PDF is a true subset, not a re-render, which is why it is indistinguishable from the original when you open a single extracted page in a viewer.
Are annotations and hyperlinks preserved?
Annotations attached to an extracted page (highlights, comments, stamps) carry through. Link annotations that pointed at pages you did not extract become dangling and may render as plain underlined text in strict readers. Cross-document references are untouched because they pointed outside the file to begin with. If you depend on an internal table of contents, verify it still resolves after extraction.
Why does the page count show a different number than my reader?
Readers sometimes display logical page numbers from the document (Roman numerals for front matter, then Arabic from the introduction) while this tool counts physical pages starting at one. A book whose reader shows "page 12" may actually be physical page 16 if four pages of front matter come first. Cross-check by scrolling to the top of the document to see what physical index the reader assigns there.
Can I split a password-protected PDF?
No, because pdf-lib refuses to load encrypted content without a key and this page does not prompt for passwords. Unlock the file first through the PDF Unlocker (once that feature ships) or run qpdf --decrypt --password=YOURPASS input.pdf out.pdf locally, then feed the unlocked copy into the splitter. We treat decryption as a deliberately separate operation so passwords are never entered on the wrong page.
Does the file get uploaded anywhere?
No. The splitter reads your PDF via the File API into an ArrayBuffer and keeps it in the tab memory for the duration of the session. There is no fetch to a backend service, no websocket, and no service worker that intercepts reads. You can run the split offline after the page has loaded; it does not need the network at all to produce the output.
Why do some PDFs produce slightly larger output than expected?
pdf-lib copies whatever font and image resources each selected page references, even if those resources were shared widely in the source document. An extracted three-page chunk of a six-hundred-page book can still drag along the full CJK font subset if one glyph on your pages came from it. Run the output through the PDF Compressor to drop unused fragments if size matters.
Can I split into one file per page automatically?
This UI produces a single consolidated extract per click. For a one-page-per-file split, run the tool once per page (tedious for long documents) or use mutool poster -x 1 -y 1 input.pdf page-%d.pdf on the command line. We kept the UI simple because the most common use case is pulling a handful of pages; a batch-per-page mode is a candidate for a future update.
Is splitting reversible?
The original file on your disk is never touched; the tool only reads it. If you want to reverse a split you have already saved, drop the original back into the splitter with a different range selection, or use the PDF Merger to combine the extract with the remaining pages. Think of split and merge as inverse operations on the same page graph.
More PDF Tools
Image to PDF
Combine multiple JPG and PNG images into a single PDF document.
Open toolPDF Compressor
Compress PDFs with Ghostscript image downsampling. Pick a quality preset. Files auto-deleted after 15 minutes.
Open toolPDF Merge (Server-Side)
Merge up to 20 PDFs into a single document on our EU servers using qpdf. Files auto-deleted after 15 minutes. Handles large or password-cleared inputs the in-browser merger cannot.
Open toolPDF Merger
Merge multiple PDF files into a single document with drag-and-drop reordering.
Open toolPDF Page Reorder
Rearrange pages in a PDF document with a visual drag-and-drop interface.
Open toolPDF Password Protect
Add AES-256 password protection to PDF files via qpdf. Files auto-deleted after 15 minutes.
Open tool