Split a PDF without uploading it anywhere

Pulling three pages out of a forty-page bank statement should not require handing the other thirty-seven to a stranger. How PDF splitting actually works, and how to do it locally.

Somebody has asked for proof of address. You have a bank statement, and page 2 has your address on it. Pages 1, 3 and 4 have every transaction you made last month.

The obvious move is a free online PDF splitter. To get page 2, you upload all four pages — the salary, the rent, the pharmacy, the thing you would rather not explain — to a company you found through a search result. You are handing over the whole document precisely because you do not want to hand over the whole document.

This is worth doing differently, and it is easier than it looks.

What splitting a PDF actually involves

A PDF is not a stream of pages the way a video is a stream of frames. It is a small database.

At the end of every PDF file there is a cross-reference table: a list of byte offsets saying where each object lives. The objects are the pieces — page dictionaries, content streams, fonts, images, colour profiles, an outline tree, sometimes form fields and annotations. A page object is mostly a set of references: my content is object 45, my fonts are objects 12 and 13, my images are objects 88 and 89.

Splitting means building a new document that contains a subset of those pages, and then following every reference out of them to work out what else has to come along. Copy page 3 without its font objects and you get a blank rectangle. Copy the font but not the encoding table and you get gibberish.

The interesting consequence is that this is rearrangement, not conversion. Nothing is decoded and re-encoded. Your text stays exactly as sharp as it was, images are copied byte for byte, and the output is lossless in the strictest sense. A well-implemented split is essentially a bookkeeping exercise.

Which is exactly why it does not need a server.

Why it does not need a server

Server-side PDF tools exist for two good reasons and one commercial one.

The good reasons are heavy work: optical character recognition, and reconstructing a PDF’s layout into a Word document. Both are genuinely hard, both benefit from large models and licensed engines, and both are reasonable things to send to a data centre.

The commercial reason is that once your file is on their server, they have a product. They can count your documents, put the next one behind a sign-up, and show you a plan comparison at exactly the moment you are most invested.

Splitting is not in the first category. The work is reading a table of offsets, copying some objects, fixing up references and writing a new table. A browser does this in milliseconds. The library that does it here — pdf-lib — is the same one plenty of hosted services run on their backend. The only difference is which processor executes it.

The three shapes of the job

People describe this task in three ways, and they are different operations.

Extract. “I need pages 4 to 9 as their own file.” One output, containing exactly what you named. This is the one people actually mean most of the time, and it is what you want for the bank statement.

Split into parts. “Turn this 60-page scan into six 10-page files”, or “give me each page as its own PDF”. Many outputs, usually delivered as a zip. Useful for splitting a batch scan back into individual documents.

Delete. “Everything except pages 12 and 13.” One output, defined by what is removed. Identical in mechanism to extract, opposite in how you express it — and much less error-prone when you are removing two pages from a hundred.

Split PDF covers the first two; delete pages is the third. They share the same page grid, so you can see what you are selecting rather than typing numbers into a box and hoping.

Page ranges, and the off-by-one that catches everyone

Almost every tool uses one-based, inclusive ranges: 1-3 means pages 1, 2 and 3. Three pages, not two. This trips people up constantly because programmers spend their lives with the other convention.

The common notations, all of which work here:

  • 4 — a single page
  • 1-3 — a run, inclusive at both ends
  • 1-3,7,12-14 — several at once, in that order
  • 12- — page 12 to the end
  • -5 — the start through page 5

Two things worth knowing. Order matters where the tool honours it: 5,1 can give you a document with page 5 first. And a range that runs past the end of the document should tell you so by name — if it silently clamps, you will not notice that you asked for a page that does not exist.

When a range is invalid, a good tool says which token is wrong rather than refusing the whole input. “Page 340 is beyond the end — this document has 88 pages” is useful. “Invalid range” is not.

What survives a split, and what does not

Mostly, everything. But there are edges worth knowing before you send the result somewhere that matters.

Bookmarks and outlines. The outline tree points at pages. Split the document and half those destinations are in the other file. Most tools drop the outline rather than produce broken links. If your document had a navigable table of contents, expect it to be gone.

Form fields. A field belongs to the document, not the page. Splitting a filled-in form can leave fields orphaned, or values behind. If the document is an interactive form, flatten it first so the values become part of the page.

Digital signatures. These are the important one. A cryptographic signature covers the byte range of the whole file. Change anything at all — even removing a page that has nothing to do with the signed content — and the signature is mathematically invalid, because that is the entire point of a signature. There is no clever way around it. If the document must stay verifiably signed, you cannot split it; you have to ask whoever signed it for a signed extract.

Annotations. Comments and highlights are attached to pages and normally travel with them, though replies that reference a comment on a page you did not keep can end up dangling.

Links. Internal links to pages you kept still work; links to pages you did not keep point at nothing.

Page size and rotation. Preserved. A document with mixed A4 and A3 pages splits into files with mixed page sizes, which is correct even if it looks odd.

Doing it locally, step by step

  1. Open the splitter. The file is read in the tab. No progress bar for an upload, because there is no upload — on a large document the only wait is your own device rendering the thumbnails.
  2. Look at the grid. Thumbnails are rendered lazily as you scroll, so a 300-page document does not try to draw 300 previews at once.
  3. Say what you want. Click pages, or type a range. The two stay in sync, so you can select roughly by eye and then correct by hand.
  4. Check the count before you commit. “6 pages → 1 file” is the sentence to read twice. Most mistakes here are visible at this point and invisible afterwards.
  5. Download. One file, or a zip built on your device.

Then check the output. Open it and confirm the page you needed is in it and the pages you did not need are not. This takes five seconds and is the difference between sending proof of address and sending your entire financial history.

The general principle

There is a rule of thumb that holds up well: if the operation only rearranges bytes, it does not need a server. Splitting, merging, rotating, deleting pages, extracting — all rearrangement. All of them can run in a browser tab, and doing so removes the size limits, the daily counters and the question of what happens to the file afterwards, all at once.

Conversion between genuinely different formats, OCR, and layout reconstruction are the other category. Those are real computation, and a hosted service earns its keep. Knowing which side of that line your task falls on tells you whether you need to trust anybody with it.

For a bank statement, you do not.