You need page 3 of a 60-page report, or you want to break a scanned bundle into one file per page. The “split PDF” sites do it — after you upload the whole document, including the 59 pages you didn’t want anyone to see. For anything sensitive, that’s a lot of exposure to extract a couple of pages.
WSL splits PDFs locally, for free. pdfseparate bursts a file into individual pages, and qpdf extracts exactly the range you want. Both leave the original untouched and never upload anything.
If WSL isn’t installed yet, start with the WSL install guide.
Install the tools
sudo apt update && sudo apt install -y poppler-utils qpdf
pdfseparate comes from poppler-utils; qpdf is separate. Check both:
pdfseparate -v
qpdf --version
Split into one file per page
pdfseparate takes the input and an output pattern containing %d, which it replaces with the page number:
pdfseparate input.pdf page-%d.pdf
That produces page-1.pdf, page-2.pdf, and so on — one file per page. To keep them tidy, send them to a subfolder:
mkdir -p pages
pdfseparate input.pdf pages/page-%d.pdf
To burst only part of the document, give a first and last page:
pdfseparate -f 5 -l 10 input.pdf pages/page-%d.pdf
-f is the first page, -l the last — here, pages 5 through 10 become separate files.
Extract a page range into one file
When you want a range kept together as a single PDF, qpdf is the tool. Pull pages 5–10 into one file:
qpdf input.pdf --pages . 5-10 -- output.pdf
- The
.means “the current input file.” 5-10is the range.--ends the page selection, followed by the output name.
A single page works the same way:
qpdf input.pdf --pages . 3 -- page3.pdf
qpdf page range syntax
| 3 | Just page 3 |
|---|---|
| 5-10 | Pages 5 through 10 |
| 1,3,5 | Pages 1, 3, and 5 |
| 10-5 | Pages 10 down to 5 (reversed) |
| 1-5,8,12-15 | Combine spans and singles |
You can mix these — qpdf input.pdf --pages . 1-3,8,12-15 -- output.pdf pulls all of those into one file.
Split every page with qpdf instead
If you prefer qpdf for everything, a short loop bursts a file into single pages. First get the page count, then extract each:
pages=$(qpdf --show-npages input.pdf)
for i in $(seq 1 "$pages"); do qpdf input.pdf --pages . "$i" -- "page-$i.pdf"; done
pdfseparate is simpler for a plain burst, but this is handy when qpdf is already your go-to.
Wrapping up
Splitting a PDF on Windows comes down to two commands: pdfseparate input.pdf page-%d.pdf to burst it into one file per page, and qpdf input.pdf --pages . 5-10 -- output.pdf to pull out a specific range. The range syntax handles singles, spans, lists, and reversed orders.
It’s free, lossless, and runs in WSL — so even a confidential document stays on your machine. To stitch pages back together, see merge PDF files offline.