Split PDF
Pull out the pages you need, or break a PDF into one file per page — free and watermark-free.
How it works
- Upload. Choose the PDF you want to split (up to 25 MB).
- Pick pages. Enter a range such as 1-3,5,8 to extract those pages, or leave it blank to split every page.
- Download. Get one combined PDF of the selected pages, or a ZIP with one PDF per page.
About this tool
Split PDF lets you break one document into the parts you actually need. Enter a page range like 1-3,5,8 to pull just those pages into a single new PDF, or leave the box blank to explode the whole document into one file per page, delivered as a ZIP. Pages are copied without re-rendering, so nothing loses quality and text stays selectable. As with every tool here, there's no watermark, no signup, and your file is processed in memory and thrown away afterwards.
What people use it for
- Extract a single signed page from a long contract
- Pull chapter 2 out of a scanned book
- Separate a merged bank statement back into individual pages
- Grab just the pages you need to send to someone
Developer API
Automate this tool from your own code. Send a POST request to the endpoint below and get the same result the web tool produces. It is rate-limited per IP and needs no signup — API keys for higher limits are coming.
https://best.free/api/tools/split-pdf/
| Parameter | Example | Required | Notes |
|---|---|---|---|
file (file) |
document.pdf |
Yes | PDF, ≤25 MB. |
pages |
1-3,5 |
No | Range to extract; blank = split all pages. |
mode |
extract |
No | "extract" (one PDF) — blank pages box returns a ZIP. |
curl -X POST https://best.free/api/tools/split-pdf/ \
-F 'file=@document.pdf' \
-F 'pages=1-3,5' \
-F 'mode=extract' \
-o split.pdf
import requests
files = {"file": open("document.pdf", "rb")}
data = {"pages": "1-3,5", "mode": "extract"}
r = requests.post("https://best.free/api/tools/split-pdf/", files=files, data=data)
with open("split.pdf", "wb") as out:
out.write(r.content)
const fd = new FormData();
fd.append("file", fileInput.files[0]);
fd.append("pages", "1-3,5");
fd.append("mode", "extract");
const r = await fetch("https://best.free/api/tools/split-pdf/", { method: "POST", body: fd });
const blob = await r.blob(); // the split.pdf
Response: A PDF of the selected pages, or a ZIP of one-PDF-per-page.