Free tool

Split a multi-month PDF statement into per-month files

Drop one PDF that covers several months. We read the month printed on each page and split the file into one PDF per month. Prefer manual control? Enter custom page ranges or split every N pages. Nothing leaves your browser.

The split runs entirely in your browser using pdf.js and pdf-lib. No files are uploaded to our servers.

Runs in your browser
No upload, no signup. Your file never leaves your device.
Free and unmetered
Use it as often as you need. No daily quota, no credit card.
EU-built, GDPR-first
Hosted in Frankfurt. Built by a small EU team that takes privacy seriously.

Why split a PDF statement

Banks and brokers hand out PDFs on their own schedule, and the schedule rarely matches what a bookkeeper or accountant needs. Quarterly statements arrive as one file covering three months. Some European current accounts issue a single yearly PDF. Loan servicers dump twelve months of activity into one export. The first thing anyone doing tax prep or reconciliation has to do is slice that file into per-month pieces so each period can be worked on independently.

This tool is that slice, done in the browser. Drop the PDF, and the tool reads the month label printed at the top of each page (nearly every real bank statement repeats the period on every page), groups consecutive pages that belong to the same month, and produces one output PDF per month. If detection misses — for scanned statements without a text layer, or unusual layouts — you can fall back to manual page ranges or a fixed "every N pages" split.

Once the PDF is split

Most people who need to split a statement then need to do something with each month: reconcile it against the ledger, hand it to an accountant, feed it into QuickBooks or Xero. Once you have the per-month PDFs, drop each one into the bank statement converter to extract every transaction as CSV, Excel, .qbo, Xero CSV, Sage 50 CSV, or OFX with locale-correct dates, amounts, and balance reconciliation. Free 7 pages a day, no signup.

How month detection works

Bank statements print the statement period on every page — usually at the top of the header or in the footer. We scan the text layer of each page for date shapes we can trust:

  • "January 2025", "Jan 2025" — month name plus four-digit year, in either full or abbreviated form.
  • MM/YYYY and MM-YYYY — the shorthand used on many European statements and payslips.
  • YYYY-MM — the ISO-order shape common in Nordic and Japanese banks.
  • DD/MM/YYYY and DD-MM-YYYY — full dates, from which we lift the month and year.

Each page's dominant month tag wins. Runs of consecutive pages with the same tag become one output file. Pages with no readable month inherit the surrounding month, so cover sheets, disclosures, and blank continuation pages are attached to the split they belong to.

Custom ranges and fixed chunks

Not every PDF is a bank statement, and not every statement labels its months clearly. For everything else, the tool offers two manual modes:

  • Custom ranges. Type a comma-separated list of page ranges — for example 1-4, 5-9, 10-14 — and each range becomes one output PDF. Single pages like 7 work too.
  • Every N pages. Pick a chunk size and the tool slices the PDF into fixed-length pieces. Useful for evenly-sized exports where you just want to break the file into manageable parts.

Under the hood

The month scan uses pdf.js to read the text layer of each page. Splitting itself uses pdf-lib to copy the relevant page objects (with their referenced fonts, images, and content streams) into a fresh PDF. Nothing is re-rasterised: text stays selectable, vector graphics stay sharp, and file sizes stay close to the sum of the input pages.

Everything happens inside your browser tab. The bytes of your PDF never touch our servers — open the network tab in DevTools and you'll see zero upload requests during the whole flow. This matters when the PDF is a bank statement: your name, account number, and every transaction is on those pages, and the safest place for that data is the machine you're already sitting at.

Limits and edge cases

  • 50 MB max per file. If you have a larger PDF, open it in a viewer and export chapters first, or use our PDF merge tool in reverse order to bring a subset in.
  • Password-protected PDFs are refused. Splitting an encrypted PDF into unencrypted outputs would either strip protection silently or produce unreadable files. Run the file through our PDF password remover first, then split the unlocked copy.
  • Scanned image-only PDFswon't have a text layer, so the "by month" mode can't auto-detect anything. Use custom ranges or every N pages instead — the split itself still works fine, because pages are copied as-is regardless of whether they contain text or just image data.
  • PDFs with non-standard fonts occasionally trip pdf.js. If detection fails but the file otherwise looks fine, switch to custom ranges. The split path uses pdf-lib, which is far more permissive than pdf.js.
  • Digital signatures are invalidated by any split. This is a property of PDF signing, not our tool. If you need the signature to remain valid, leave the document as-is.

Common use cases

  • Year-end tax prep. Split a quarterly or annual statement into per-month PDFs before handing each to an accountant.
  • Bookkeeping. Reconcile one month at a time against the general ledger — hard to do when three months live in a single file.
  • Loan / mortgage prep. Lenders often ask for the last six months as six separate PDFs, not one combined file. This tool is the inverse of the merge many people accidentally did earlier.
  • Credit-card and loan statements. Servicers often publish a full year of activity as one long PDF; split it to match the ledger period.
  • Expense claims.Extract the single month a claim relates to, so you're not attaching a 40-page statement to justify one dinner receipt.

FAQ

Is the split really done in my browser?
Yes. Both the month scan (pdf.js) and the page copy (pdf-lib) run inside your browser tab. Open the network panel in DevTools and you'll see no upload requests when you drop a file or click download.
How does the month detection work?
We scan the text layer of every page and count occurrences of month + year patterns — 'January 2025', 'Jan 2025', '01/2025', '2025-01', and full dates like '15/01/2025'. The most-mentioned month on each page wins, then consecutive pages with the same month get grouped into one output file.
What if some pages don't mention a month?
Pages with no readable month inherit the month of the pages around them. Cover sheets, blank continuation pages, and legal disclosure pages get attached to the split they physically live in — so no page is lost.
Can I split at custom page ranges instead?
Yes. Switch to Custom ranges and type something like '1-4, 5-9, 10-14'. Each range becomes one output PDF. Single pages like '7' also work.
What about scanned or password-protected PDFs?
Scanned PDFs have no text layer, so month auto-detection can't work — but Custom ranges and Every N pages both still work fine, because pdf-lib copies pages byte-for-byte. Password-protected PDFs need to be unlocked first using our PDF password remover.
How big a PDF can I split?
Up to 50 MB per file, which comfortably covers a year or two of typical monthly statements. Very long PDFs will use more browser memory and take a few seconds longer to scan.
Does splitting change the pages themselves?
No. Pages are copied byte-for-byte from the source PDF into a fresh container document. Text stays selectable, embedded fonts render identically, and scanned pages come through unchanged. The total size of the split parts is close to the size of the input.
Why isn't my statement's period showing up correctly?
Some banks print only the statement date range (e.g. '01 Mar – 31 Mar 2025') and no explicit 'March 2025'. Our detector picks that up via the DD/MM/YYYY shape. If a bank uses an unusual format we don't recognise, use Custom ranges — it takes ten seconds to type page numbers, and the split itself works identically.

Related tools and guides