PDF Merge

Combine multiple PDFs into a single document. Reorder pages, then download — files never leave your browser.

Loading…

All processing runs in your browser — no files or inputs are uploaded to a server.

How to use

Drop one or more PDFs onto the drop zone, or click to pick files. Each file shows its page count and size; use the up/down buttons to reorder, and × to remove. Hit Merge and the combined PDF downloads as merged.pdf in the order you arranged.

Merging runs entirely in your browser via pdf-lib — pages are copied from each source document into a new one with their existing fonts, images, and annotations intact. Files never touch a server. That makes this safe for invoice batches, tax returns, contracts, and anything else you would not paste into a third-party site.

Examples

Merge an expense report bundle

Input
1. cover.pdf       (1 page)
2. receipts.pdf    (8 pages)
3. summary.pdf     (1 page)
Output
merged.pdf — 10 pages, single file in the chosen order

The exact order you set in the list is preserved. Drag the summary to the end before merging if you prefer cover → details → summary.

Combine scanned signature pages

Input
1. contract-body.pdf      (12 pages)
2. signed-sig-page-1.pdf  (1 page)
3. signed-sig-page-2.pdf  (1 page)
Output
contract-final.pdf — 14 pages ready to send back

For documents where scanned signature pages are returned separately, merging produces a single send-ready PDF without re-scanning the whole thing.

Bundle a year of invoices

Input
12 monthly PDFs, one per month
Output
invoices-2025.pdf — single archive PDF

Drop the 12 files at once, sort by name in the OS file dialog before selecting, and the order carries over. For a fixed cover sheet at the start, drop it first by itself, then drop the rest in a second batch.

FAQ

Is there a file size limit?

No hard cap, but practical performance depends on your browser's memory. Merging a few hundred MB of PDFs is usually fine on a modern laptop; multi-gigabyte bundles may freeze the tab. For very large jobs, split into batches and merge the results.

Are bookmarks, links, and form fields preserved?

Page content, annotations, and form fields copy over. Document-level bookmarks (the outline) and named destinations may not survive — pdf-lib copies pages, not the parent document's navigation structure. If outlines matter, regenerate them afterwards or use a desktop tool like qpdf or Adobe Acrobat.

Can I merge password-protected PDFs?

Not while they are encrypted — pdf-lib cannot decrypt. Open each PDF in a viewer, remove the password (Print to PDF, or "Save as" without encryption if the viewer allows), then drop the unlocked versions here. The merged output is not encrypted; protect it afterwards if needed.

Why is the merged file roughly the sum of the inputs — does it not deduplicate?

Correct — each source PDF brings its own copy of fonts and images. There is no cross-document deduplication. To shrink the output, run a separate compression pass with a tool like Ghostscript (`gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook`) or a desktop PDF optimizer.

How do I split a PDF instead?

Use the [PDF Split](/en/pdf-split/) tool, which extracts a range or list of pages into a new PDF. The two tools share the same pdf-lib backbone and the same in-browser, never-uploaded guarantee.

Related concepts

A PDF is a container of objects — pages, fonts, images, streams — referenced from a cross-reference table at the end of the file. Merging two PDFs is conceptually simple: take pages from each, copy them and the objects they reference into a new container, and rebuild the cross-reference table. The complications are in the details. Fonts subset themselves to whichever glyphs the source document needed, so they cannot always be deduplicated across files. Annotations carry IDs that may collide between documents. Form fields share a tree at the document root, which is why naively appending pages can break radio-button groups or signature widgets.

pdf-lib, the library powering this tool, takes a conservative approach — copy pages and their direct dependencies, leave parent structures (outlines, threads, document-wide actions) behind. The trade-off is faithful page rendering at the cost of some document-level metadata. For most use cases (assembling reports, bundling receipts, ordering scans) that is exactly the right balance, and crucially it works entirely in the browser without uploading the source files anywhere.

Related tools