PDF Splitter
100% LocalExtract specific pages or split your PDF into parts.
Upload a PDF and enter page ranges to extract. Split into separate files or download selected pages.
Learn More
The Mobile PDF Workflow: Scan, Sign, and Edit PDFs From Your Phone
PDF Compression Trade-offs: Quality vs. File Size Explained
Learn how to shrink your PDFs without making them unreadable. Understand DPI, image downsampling, and font embedding to find the perfect balance for your documents.
PDF Privacy: How to Scrub Metadata and Prevent Tracking
What is PDF Splitter?
Frequently Asked Questions
Technical Deep Dive
PDF Splitter
Extract individual pages or ranges from a PDF document. Whether you need just one page or multiple split parts, this tool handles it locally in your browser. Supports comma-separated ranges like '1-3, 5, 8-10'.
PDF-Native
Works with the real PDF specification, text, vectors, fonts, and metadata all preserved.
Stays Local
Documents never leave the browser, safe for confidential, regulated, or proprietary PDFs.
Surgical Precision
Targeted operations that don't re-encode or degrade the rest of the document.
Splitting a PDF Without Touching the Pixels
A PDF is a tree of page objects referenced by the document catalog. Splitting a PDF means creating a new document whose catalog references only some of the source's pages. The page content, text streams, embedded fonts, raster images, vector paths, is byte-copied from source to destination. No rendering, no rasterization, no quality change. The Splitter is structural surgery, not content transformation.
Range Syntax
The splitter accepts comma-separated ranges:
Order matters: 5, 1-3 produces page 5 first, then pages 1-3. The Splitter respects whatever order you specify, useful for reordering during extraction.
Pages are 1-indexed (the first page is 1, not 0) to match how PDFs are typically discussed.
Operations the Splitter Supports
Extract a single range. 1-10 from a 100-page PDF gives you a 10-page PDF.
Extract a non-contiguous set. 1, 5, 10, 20 gives a 4-page PDF.
Reorder during extraction. 5, 1-3 gives page 5, then 1, 2, 3.
Split into multiple files at boundaries. Define split points like "after page 10, after page 20" and get three PDFs: pages 1-10, 11-20, 21-end. Output is bundled as a ZIP.
Split every N pages. split every 5 pages from a 100-page PDF gives 20 PDFs.
What Gets Copied
The Splitter copies these from source to destination:
- Page objects, content streams, including all text, fonts, and inline content.
- Page resources, fonts and images referenced by extracted pages get copied with them; fonts/images not referenced are dropped.
- Page-attached annotations, comments, highlights, form fields on the extracted pages.
- Page rotation (
/Rotate). - Page boxes (
/MediaBox,/CropBox).
What Gets Dropped
- Outline tree (bookmarks). Dropped by default. Re-targeting bookmarks across a partial extraction is complex; pdf-lib doesn't do it. If you need bookmarks preserved, use qpdf:
qpdf --pages input.pdf 1-10 -- output.pdfpreserves outlines reachable from extracted pages. - Document-level JavaScript. Often safer to drop.
- Document-level metadata (creator, producer, title). The new PDF gets default values. Add metadata via the PDF Metadata Editor.
- Linearization. The "fast web view" optimization is broken by any structural change.
- Tagged structure tree. Accessibility tags pointing to extracted pages are retained; the rest is dropped. The result may not be a valid PDF/UA document.
Common Use Cases
Use case 1: Submitting a portion of a long doc. A 150-page contract; the reviewer only needs pages 12-25 with the relevant clauses. Extract them, share the small PDF.
Use case 2: Breaking a textbook into chapters. A 500-page PDF with known chapter boundaries (pages 1-30, 31-78, 79-110, ...). Split at boundaries, distribute chapters separately.
Use case 3: Removing pages without showing what was removed. Sensitive content on pages 50-55. Extract pages 1-49 and 56-end into a new PDF. The new PDF has no indication that pages were removed (no "page 50 redacted" placeholder).
Use case 4: Sample/preview extraction. Marketing wants the first 5 pages of a whitepaper as a teaser PDF. Extract 1-5.
Use case 5: Per-page distribution. Split every 1 page produces 100 single-page PDFs from a 100-page input. Useful for batch-processing pipelines where each page needs separate handling.
Pitfalls
Page numbering vs visible folio. The Splitter uses absolute page positions (1st, 2nd, 3rd page in the file). If the PDF has a cover, then Roman-numbered front matter (i, ii, iii), then Arabic-numbered body (1, 2, 3...), the body's "page 1" is the file's page 7 or so. Use the file's absolute page number, not the printed folio.
Off-by-one in ranges. 1-3 is three pages (1, 2, 3), not two. Many systems use exclusive upper bounds; the Splitter uses inclusive. Test with a small range if uncertain.
Empty ranges. 50-40 (reversed) produces an empty PDF. Some tools auto-reverse; this one doesn't.
Page numbers beyond the file. 1-1000 on a 50-page PDF: pages 51-1000 are ignored, you get pages 1-50. Or the tool may error, depends on implementation. Verify the output count.
Server-Side Alternatives
For batch jobs, scripts, and bookmark preservation:
Use server-side tools for:
- Many input files in one operation (parallel processing).
- Very large PDFs (1GB+) that exceed browser memory.
- Bookmark/outline preservation across the split.
- Scripted/CI workflows where uploading isn't a concern.
Use the in-browser Splitter for:
- One-off documents.
- Sensitive content that shouldn't be uploaded.
- No-install convenience.
Privacy
pdf-lib runs entirely in your browser. The PDF is read via FileReader, page objects are copied to a new PDF in JavaScript memory, and the result downloads as a Blob (or ZIP for multi-file splits). Open DevTools Network during a split: zero outbound requests. The document never leaves your machine.