Skip to main content

PDF Merge & Split

Combine several PDFs into one, or break one into many

Objects renumbered and rebuiltSplit by page rangeFiles never uploaded
Mode

Last updated: 2026-10-11

About this tool

Merging PDFs sounds like "concatenating two files", but you cannot simply join the bytes: a PDF is an object graph plus a cross-reference table, and two documents have conflicting object numbers. Joining them produces a file no reader will open. The correct approach is to parse each page, renumber the objects and rebuild the cross-reference table — which is what this tool does, so both merged and split results open normally in any reader. Two modes are available: merge (many into one) and split (one into many, either one file per page or grouped by page range). Contracts, ID scans and receipts are precisely the files people are unwilling to hand to a third-party server, so everything here runs locally in the browser.

Features

One kernel for merge and split

Both are "select some pages, reassemble into a new document" — merge selects everything, split groups the selection. They share a single validated code path, so behaviour is consistent.

Flexible page-range splitting

Split into one file per page, or group pages using expressions like 1-3,5,8-10.

Duplicate pages allowed

Need a page to appear twice as a cover? Just select it twice.

No leaking of unselected pages

Splitting verifies each page’s parent reference so only your selection survives. Otherwise you can end up believing you shared only page 2 while page 1 travelled along inside the same file.

Compressed streams copied verbatim

PDF content streams are usually compressed. This tool moves bytes without recompressing, so content cannot be degraded by a second pass.

Unsupported files fail loudly

Encrypted files, object streams and cross-reference streams are reported with a reason. This tool never produces something that looks like a success but will not open.

How to use

  1. 1

    Pick a mode

    Choose merge to combine files, or split to break one apart.

  2. 2

    Add your files

    Merge accepts several files at once — the order becomes the final page order. Split takes one file.

  3. 3

    Configure pages

    In merge mode reorder the files; in split mode enter page ranges or choose one file per page.

  4. 4

    Download

    Merge produces one PDF; split produces several, downloadable individually.

Options

Mode
Merge (many into one) or split (one into many).
File order
Determines the final page order when merging; adjustable after upload.
Page ranges
Used when splitting, e.g. 1-3,5,8-10. Out-of-range pages are ignored and reversed ranges such as 5-3 are treated as invalid.

Common use cases

  • Combining several contract attachments into one complete document
  • Extracting just the pages you need from a long report
  • Splitting a scanned multi-page PDF into chapters
  • Assembling scattered receipts into a single expense file
  • Breaking a document into single pages so each can be signed separately

FAQ

Questions you may have about this tool

Why can’t you just concatenate two PDF files?

Because a PDF is not plain text — it is an object graph plus a cross-reference table. Objects reference each other by number: object 3 might be a page, object 5 its content stream. Each document has its own numbering scheme, so a naive concatenation produces conflicting numbers and a cross-reference table pointing at the wrong offsets. The result is a file that no reader will open. The correct approach is to parse each page’s objects, assign fresh numbers, and build a new cross-reference table — exactly what this tool does.

Which PDFs are not supported?

Three categories are explicitly unsupported: encrypted or password-protected files; files using object streams (where multiple objects are compressed into a bundle); and files using cross-reference streams. The latter two are compressed structures introduced after PDF 1.5 and are common in output from newer generators. In these cases the tool says so plainly rather than guessing — because a failed parse easily yields a file whose structure looks plausible but which will not open, and you would typically only discover that after sending it to someone.

The merged file got bigger — is that normal?

Usually it is close to the sum of the inputs, which is expected: the page content itself has to be stored. It can be slightly smaller because redundant metadata is dropped, or slightly larger because a new cross-reference table and page tree had to be written. There is theoretical room for savings by sharing fonts or images referenced from multiple pages, but that requires far more complex resource restructuring; this version prioritises correctness over such optimisation.

Does splitting carry along the original page content?

Only the pages you selected. This deserves emphasis because it is an easy implementation trap: every page object records which parent node it belongs to, and that parent typically holds every page in the document. If you copy the parent along for convenience, the output silently includes pages you never selected — you think you shared page 2 while the full contents of page 1 are in the same file. This tool skips that parent reference when assembling a new document and attaches only your selected pages to a fresh page tree, with a dedicated regression test guarding the property.

How do I write page ranges?

Separate groups with commas; each group is either a single page (5) or a range (1-3). For example 1-3,5,8-10 produces three files: pages 1 to 3, page 5, and pages 8 to 10. Anything beyond the page count is ignored automatically, and reversed ranges such as 5-3 are skipped as invalid. Being permissive is deliberate — page numbers copied from elsewhere often bring extra digits, and failing hard would be more annoying than helpful.

Can I reorder pages?

Yes. In merge mode you can arrange the order of the files. If you also need to reorder pages within a file, split it into single pages first and then merge them back in the sequence you want.

Can split output be used on its own?

Yes. Every output is a structurally complete, self-contained PDF with its own catalog, page tree and cross-reference table. It opens, prints and sends independently and does not need the original file.

Are my files uploaded to a server?

No. The entire parsing and reassembly happens inside your browser; no step sends PDF data over the network. That is the main reason for writing the parser ourselves: this tool deals with contracts, ID documents and receipts, and if users cannot verify that a third-party library stays offline, that suspicion alone is enough to stop them using it.