Skip to content
yutils
Example

Input (PDF + page ranges)

File: ebook.pdf (200 pages)
Ranges: 1-80, 81-153

Output

ebook-pages-1-80.pdf (80 pages)
ebook-pages-81-153.pdf (73 pages)
→ Download individually or as ZIP

Note

Commas split into separate files. To include multiple pages in one group, use ranges like `1-3`. Source fonts and layout are preserved.

Usage / FAQ

When to use

  • Extract specific chapters / pages from a long PDF
  • Share only part of a PDF via email or Slack (smaller payload)
  • Pull specific clauses from a legal document
  • Print a single section of a textbook or paper
  • Extract a report's summary or appendix only

FAQ

Q.What's the range syntax?
A.`1-3,5,7-9` — commas separate ranges, hyphens denote start-end. Whitespace is ignored. Invalid ranges error out immediately.
Q.Can I extract in reverse order?
A.Pages come out in input order — `5-1` reversal is not supported. Use a different tool if you need reverse extraction.
Q.Is the original PDF preserved?
A.The source file is untouched — a new PDF is created. Pages are copied so fonts, images, and links survive, but interactive elements like form fields may be partially limited.
Fun facts
  • PDF page objects are independent — each page references its own resources (fonts, images, content streams). That's why page extraction is just 'copy + update references' with zero re-rendering. Extracting 1 page from 100 keeps the quality identical.

    ISO 32000-1 §7.7
  • pdf-lib (used here) is written in pure JavaScript — unlike most PDF libraries (PDFKit, PoDoFo, etc.) which depend on native code. That's why this tool runs entirely in the browser, no server needed.

    pdf-lib
  • PDFs have a 'linearized' (Fast Web View) mode — reorganized so pages can stream individually. The first page renders before the rest finishes downloading. Split/merge usually breaks linearization — re-linearize big hosted PDFs as a separate step.

    Wikipedia — Linearized PDF