PDF Merger

Combine multiple PDF files into one — drag to reorder, processed entirely in your browser.

🔒 PDFs are processed locally in your browser — never uploaded.

Related Tools

0 comments

How it works

Each PDF you drop is read into an ArrayBuffer in your browser and parsed by the pdf-lib library. The tool extracts page references from each source document and copies them, in your chosen order, into a fresh PDF document. The result is then saved as a Blob and triggered as a download. No file ever leaves your computer — useful for confidential paperwork, legal documents, and unreleased work.


              merged = new PDFDocument()
for file in files: pages = await merged.copyPages(file, indices); pages.forEach(p => merged.addPage(p))
            

Common use cases

  • Combining scanned contract pages back into a single signed document.
  • Stitching tax forms from different sources into one filing package.
  • Joining chapter PDFs of a manuscript before sending to a printer.

Frequently asked questions

Are my PDFs uploaded somewhere?

No. Everything runs in your browser via JavaScript and the pdf-lib library. The merged file is generated locally and downloaded directly — no server, no logging, no telemetry on file contents.

Why is there a 100 MB file limit?

Browser memory is finite. Large PDFs decompressed into memory can crash the tab or freeze the device. 100 MB is a safe upper bound for most modern devices; for larger files use desktop software like Acrobat or qpdf.

Can I pick specific pages from each PDF?

Yes. Each file row has a "pages" field — leave it as "all" to include the whole file, or enter ranges like "1-3, 5, 7-9" to take only specific pages.

Does it preserve bookmarks and form fields?

Page content (text, images, vector shapes) is preserved exactly. Form fields are preserved when supported by pdf-lib, but document-level bookmarks and outlines may be lost — pdf-lib focuses on page-level operations.