How to extract pages from a PDF
Three steps — drop a file, pick the pages, download the result. The whole thing runs in your browser, so the source PDF and the extracted output never leave your device.
- Load the PDF. Drag onto the dropzone or click Choose PDF. The tool renders every page as a thumbnail using pdfjs-dist — large files take a few seconds.
- Pick the pages. Click thumbnails to toggle selection (visual mode), or type a range like
1-3, 5, 7-9in the range input and hit Apply (advanced mode). The two modes are interchangeable — typing a range updates the thumbnail highlights, and clicking thumbnails resets the range text. - Download. Hit Extract Pages. pdf-lib copies the selected pages into a new document and a download link appears. Click it to save the file as
<original-filename>-extracted.pdf.
Why no upload — privacy by architecture
Most PDF tools online (iLovePDF, Smallpdf, PDF24, Sejda) work by accepting your file on a server, processing it there, and handing back a download link. The privacy policies promise deletion after some interval — but the file did sit on a server you don't control, often in a jurisdiction you don't pick. For a contract draft, a bank statement, an Aadhaar-linked document, a medical record, or a legal exhibit, that's a real problem.
This extractor doesn't have a server endpoint that receives your PDF. The page is a static HTML+JS bundle. When you drop a file, it goes into your browser's memory. pdfjs-dist renders the thumbnails locally. pdf-lib copies the selected pages and produces the output blob. The download link points at a blob URL inside your browser — the file is built on your machine and never touches our infrastructure. You can disconnect from the internet after the page loads and the tool still works.
The PostHog analytics on this site track anonymous events — file loaded (size only, no content), tool started, tool completed, tool failed. The PDF's content, filename, and page contents are never read by any tracker. We log these events to find UX problems (where do users abandon mid-flow); we never log document data.
Extract vs. Split vs. Delete Pages — pick the right tool
These three tools sound similar and the names overlap in competitor docs. The intent is different in each one. Here is the clean separation:
| Tool | Output | Picks | Use when |
|---|---|---|---|
| Extract Pages (this page) | One PDF | Pages you keep | You want a subset of pages bundled into a single new PDF — e.g., pages 3-7 of a long contract, or just the signed page from a 30-page agreement. |
| Split PDF | Many PDFs (or a ZIP) | Where to cut | Each page (or each range) should become its own file — e.g., a 50-page document where every page is a separate invoice for separate filing. |
| Delete Pages | One PDF | Pages you discard | You want the original document minus a few unwanted pages — e.g., remove blank scanner pages, drop the cover sheet, trim a duplicate from a botched merge. |
Quick rule of thumb: if you're keeping fewer pages than you're removing, use extract. If you're removing fewer than you're keeping, use delete. If you want one file per page, use split. The browser-local privacy guarantee holds across all three — none of them upload your file.
Common reasons to extract pages from a PDF
- Contract clauses. A 40-page master services agreement, but you only need to share clause 12 (pages 22-24) with a vendor for review. Extract the three pages, send the subset, keep the master internal.
- Exhibit pulling. Legal discovery production often calls for a specific set of pages from a larger record. Extract those pages with the range input, no need to redact surrounding context.
- KYC and verification. A bank or government portal asks for pages 1, 4, and 7 of an Aadhaar-linked document. Type
1, 4, 7, download, attach. The full document never leaves your device. - Chapter export. A textbook PDF you bought legally, and you want to load just chapter 4 onto your e-reader. Extract pages 78-94, drop the result on the device.
- Medical records. A specialist needs only the imaging report (pages 12-15) of a 60-page hospital discharge bundle. Extract the relevant pages instead of forwarding the whole bundle.
- Resume + portfolio. A 25-page case study PDF, but the application limits attachments to 5 pages. Pick the strongest five with the thumbnail mode, output a 5-page PDF.
- Form pre-fill. A government form pack with 20 pages of instructions and 5 pages of actual fillable forms. Extract just the form pages so the recipient doesn't scroll through the instructions.
Range syntax — the full grammar
The range input accepts a comma- or whitespace-separated list of tokens. Each token is either a single page or a range. Pages are 1-based. Negative numbers count from the end: -1 is the last page, -2 is the second-to-last, and so on.
| Input | Result on a 10-page PDF |
|---|---|
1-3, 5, 7-9 | Pages 1, 2, 3, 5, 7, 8, 9 — seven-page output. |
1, -1 | First and last page only — two-page output. |
-3--1 | Last three pages (8, 9, 10) — three-page output. The double dash is the range operator between two negative endpoints. |
5-2 | Pages 2, 3, 4, 5 — reversed ranges are auto-corrected. The output ordering still follows original page order. |
15 | Empty selection. Page 15 is past the end of a 10-page PDF — the tool warns and skips it. |
8-15 | Pages 8, 9, 10 — the upper bound gets clamped to the last page and a warning surfaces. |
Duplicate tokens are deduplicated. The output PDF orders pages by original page number regardless of input order, so 7, 2, 5 produces the same three-page output as 2, 5, 7. To reorder pages, use reorder-pdf-pages on the extracted output.
Under the hood
Two libraries do the work. pdfjs-dist (Mozilla's pdf.js) renders each page to a canvas at half resolution to produce the thumbnails — that's the slow part for big PDFs, but it only runs once per file load. pdf-lib does the actual page extraction: it loads the source document, creates an empty output document, calls copyPages with the selected indices, appends the copies to the output, and serializes to bytes. No rasterization, no font re-embedding, no quality loss.
Encrypted PDFs with owner passwords work — pdf-lib loads them with ignoreEncryption: true. Encrypted PDFs with user passwords (the kind that ask for a password to even open the file) don't work in this tool — use unlock-pdf first if you have the password, then come back here.
The page render scale is fixed at 0.5 for the thumbnail grid — that gives a usable preview on a desktop screen without burning memory on a 200-page document. The output PDF uses the original page resolution; thumbnails are only for selection.
Frequently asked questions
How is extract pages different from split PDF?
Extract returns one new PDF containing only the pages you picked. Split takes one PDF and breaks it into many files — page 1 becomes file 1, page 2 becomes file 2, and so on (or one file per range). Use extract when you need a single subset PDF to email or attach (pages 3-7 of a contract, for example). Use split when each page should become a separate file for filing or distribution.
How is extract pages different from delete pages?
Extract is the inverse of delete. Extract keeps the pages you select and discards the rest. Delete keeps the pages you don't mark and discards the marked ones. Both produce one PDF, but the mental model is opposite — extract is positive selection ("give me these"), delete is negative selection ("throw these out"). Pick whichever maps to fewer clicks for your job: if you want 3 pages out of 50, extract; if you want 47 pages out of 50, delete.
What range syntax does the input accept?
Comma-separated tokens. Each token is either a single page ("5") or a range ("7-9"). Pages are 1-based — page 1 is the first page. Negative numbers count from the end: -1 is the last page, -2 is second-to-last. So "1, 3, -1" picks the first page, third page, and last page. Out-of-range values get clamped to 1 or the last page and the tool warns you. Whitespace and order don't matter — "7-9, 1-3, 5" produces the same selection as "1-3, 5, 7-9".
Does the file get uploaded?
No. The PDF stays on your device. pdfjs renders the thumbnails locally and pdf-lib writes the new PDF using only browser memory. Nothing is sent to a server, no temporary copy, no analytics on the file content. Bank statements, court orders, contracts, salary slips, or any document you would not email to a stranger can be processed here without an upload step. The privacy guarantee comes from the architecture — there is no server endpoint that receives your file.
Will the extracted PDF preserve text, fonts, and quality?
Yes. pdf-lib's copyPages does a structure-level page copy — it grabs each page object and its referenced resources (fonts, images, color profiles) and embeds them in the new document. There's no rasterization, no re-encoding, no quality loss. Text stays selectable, vector graphics stay sharp at any zoom, embedded fonts come along. The output PDF is functionally a clean subset of the input.
Will bookmarks, links, and form fields survive?
Page content survives intact: text, images, vector graphics, fonts, AcroForm fields on the extracted pages. Bookmarks and the document outline are not copied — pdf-lib does not yet rewrite outline entries to point at renumbered pages. Cross-page link annotations that pointed to pages you didn't extract become dangling references. If your PDF relies on internal navigation, verify the result before sending it on. Most use cases (extracting a contract clause, exporting a chapter, pulling specific exhibits) don't need bookmarks.
Can I extract pages in a different order than the original?
The output PDF orders pages by their original page number, not by the order you clicked or typed. So if you select pages 7, 2, and 5, the output is page 2 then page 5 then page 7. To rearrange the order, run the extracted PDF through the reorder-pdf-pages tool — it gives you drag-and-drop control over page order.
What is the file size limit?
Soft limit around 100 MB for browser memory reasons. The thumbnail render step is the memory-heavy part — pdf-lib's page copy is light. PDFs above 100 MB may slow down or fail to render thumbnails on older devices, but the underlying pdf-lib step would still work if we exposed a no-thumbnail mode. For now, very large PDFs are best processed with the range input only.