Merge PDFs in three steps

  1. Open the merger. Securely Merge PDFs Offline — no account, no install, no upload step to skip.
  2. Drop the files into the queue (or click to browse). Each entry shows its page count, so you can see what you are about to combine. A file that is encrypted or broken is flagged in the queue before the merge starts.
  3. Order the files, then press Merge PDFs locally. The pages are copied into a new PDF in memory, the output is re-parsed to count its pages, and the finished file downloads as merged-[name].pdf.

The log at the bottom of the tool is not decoration. It prints the engine, the transport (none), the page count of the verified output and the line that matters: bytes uploaded: 0. If the merge fails, the reason appears there too — usually a protected file or a library that did not load — rather than a progress bar that stalls at 90%.

What “offline” actually means here

“Offline” is often used loosely, so here is the precise version:

  • The file is read with the File API. Dropping a PDF gives the page a reference to the file on your disk; the browser reads its bytes into an ArrayBuffer in that tab. Nothing is transmitted.
  • pdf-lib assembles the new document in memory. It creates an empty PDF, copies every page object from each source into it, and serialises the result back to bytes in the same tab.
  • The download is a local blob. Those bytes become a temporary object URL, and the browser saves them where you choose. The document never passes through a server, a worker queue, or a third party.

Two honest caveats sit behind that. First, the page still arrives over the network like any other page — what stays local is the document. Second, the PDF engine itself (pdf-lib) is loaded from a public library CDN the first time; if that request fails, the tool says so and stops instead of half-working. Once loaded, the merge runs entirely in the tab.

If you want to see it rather than trust it: open DevTools → Network, clear the list, and merge. You will see the page, the stylesheet, the scripts and the library request. You will not see your document. Do the same on a typical upload-based merger and the multi-megabyte POST request containing the file is hard to miss.

Why the upload step is the actual risk

The people who merge PDFs are rarely merging holiday itineraries. It is contracts before a signature, medical letters before an appointment, payroll exports before an audit, and exhibit bundles the night before a filing. That is exactly the material you should not hand to an anonymous server in exchange for a progress bar.

When a merger uploads your file, several things become true at once:

  • A copy exists somewhere you cannot see. “Deleted after one hour” is a sentence in a privacy page, not a technical guarantee you can verify from your side.
  • Retention, backups and breach exposure apply. A file stored even temporarily can be caught in a backup, a log or an incident, and you have no visibility into any of them.
  • Jurisdiction and terms are whatever the site says. Some upload tools claim broad licences over submitted files, or route them through third-party processing. For client material under an NDA, that is a disclosure you may not be allowed to make.
  • Ad-funded pages add tracking. The document may not be read, but the session around it is: referrer, file name, timing and device are enough to connect a person to a matter.

None of that requires the site to be malicious. It is simply what “upload” means. The only reliable way to avoid the question is to not create the copy — which is what a local merge does.

One related point: merging is not sanitising. The output is a new document, but page-level annotations can still carry an author name, and pdf-lib stamps its own Producer and a fresh modification date. If the merged file is going to a client, a court portal or a public upload, run it through the Zero-Upload PDF Metadata Scrubber afterwards — the field list and the where-it-fails detail live in How to Remove Metadata from a PDF.

Order matters more than most people expect

The queue merges whole files in the order shown, top to bottom. Getting that order right before the merge is cheaper than re-doing it afterwards, because the downloaded file is a finished document — reordering pages inside it needs another tool.

  • Name files with a sortable prefix (01-cover.pdf, 02-terms.pdf, 03-exhibits.pdf) before dropping them in. Download folders sort alphabetically, and so does your attention.
  • Think in reading order, not download order. The exhibit referenced on page 4 goes after the document that references it, not first because it finished downloading first.
  • Watch the signed pages. If one file is the executed copy and another is a draft, check which one you queued — the most common merge mistake is combining an old revision with a new one and sending the bundle without opening it.
  • Decide about the cover page explicitly. A generated cover or index is a separate file for a reason; put it first or leave it out, but do not discover it at page 47.

If you need pages from two documents interleaved rather than appended, split first: print to PDF with a page range in any viewer, or use qpdf --pages to extract ranges, then queue the parts in the sequence you want. The merger reorders files; it does not interleave pages.

What the merge keeps — and what it leaves behind

Page-copy merging is deliberately conservative. Each page object — text, vectors, images, links and annotations — is copied into the new document without being rasterised or re-encoded, so a contract still has selectable text and a scanned letter keeps its original scan quality. Nothing is “flattened” on the way through.

What does not survive is everything that lives at document level rather than on a page:

  • Bookmarks and outlines. The navigation tree is a property of the source document, not of its pages, so the merged file has no chapters unless you add them again.
  • Embedded files and attachments. Files attached to a PDF are document-level objects; they are not part of any page.
  • Document-level script and structure. Any JavaScript actions, tagged-reading order or accessibility structure belong to the original document.
  • Digital signatures. A signature covers the bytes of the file it was applied to. Merging writes a new file, so a signed source produces an unsigned bundle — any signature visible on a copied page no longer validates. Merge before signing, never after.
  • The original Author and Title entries. They belong to the source documents, not to the new one. The new file is written by pdf-lib, which sets its own Producer and a fresh modification date. That is a tool fingerprint, not your name — but it is still a stamp, and it is one more reason to scrub before publishing.

Check the things that matter for your use: if a bundle depended on bookmarks, re-create them; if it depended on a signature, re-sign the merged file; if it depended on attachments, send them alongside.

Encrypted PDFs have to be unlocked first

A password-protected PDF cannot be read without the password, and a merger has no business guessing it. The queue marks the file as protected — unlock it first and the merge stops on it rather than skipping it silently, which is the failure mode you want.

To fix it: open the file in a PDF viewer with the password, then save an unlocked copy — in Acrobat use File → Save as Other → PDF without the security settings, in Preview export a new PDF after entering the password, or print to PDF from a viewer that has the document open. Merge the unlocked copy. If the file only has an owner password and no user password, the same route works.

Two cautions. Some PDFs are encrypted specifically to stop copying or merging; removing that restriction may not be permitted by the document's terms, so use the route only on files you are entitled to modify. And an unlocked copy is a new file with its own metadata — treat it as sensitive until you have checked it.

No size limit — but a real memory ceiling

Upload services impose 25 MB, 100 MB or “two files per hour” limits because the server bears the cost. A local merge has no server to charge, so there is no fixed cap. What it does have is your device's memory: the sources and the finished output are all held at once while the merge runs.

  • Ordinary documents are easy. Dozens of contracts, statements or letters merge without a noticeable pause.
  • Scans are heavier. A 40-page colour scan can weigh more than a 300-page text document, because every page is an image.
  • Phones are tighter. Mobile browsers give a tab less memory than a desktop; a merge that works on a laptop may fail on a phone with the same stack.
  • Batching works. If a large stack stalls, merge it in two halves and then merge the two results — the page order is unchanged as long as you queue them in sequence.

Close other heavy tabs before a big merge, and keep a copy of the sources until you have checked the output. The tool holds everything in memory and writes nothing to disk except the finished download.

Verify the merged file before you send it

The tool already re-parses its own output and prints the page count before offering the download — a merge that produced a truncated file fails there rather than in the recipient's inbox. Do the human checks as well:

  • Page count. It should equal the sum of the inputs. The queue shows each file's count, so the sum is in front of you.
  • The seams. Open the first page, the last page, and the first page of each source document. Corruption and mis-ordering show up at the joins.
  • Text and links. Select a paragraph; if the text highlights, it is still text, not an image. Click one link if the bundle uses them.
  • Size. A result far smaller than the inputs suggests pages went missing; far larger is usually duplicate resources, not damage.
  • Properties. Check File → Properties. If the file will be published, scrub it and re-check.

Only then rename the output something meaningful — merged-contract.pdf is a placeholder, not a file name — and send it.

If you would rather not use a browser tool

Local merging is not unique to the web. These all keep the file on your machine:

  • macOS Preview. Open the first PDF, drag the others into the thumbnail sidebar, reorder, then File → Export as PDF. Lossless and built in, macOS only.
  • Acrobat Pro. Tools → Combine Files. Reliable and lossless, but paid, and the free Reader cannot do it.
  • qpdf (command line). qpdf --empty --pages a.pdf b.pdf -- out.pdf copies pages without re-rendering. Free, scriptable, and the safest option for batches.
  • pdfunite (Poppler). pdfunite a.pdf b.pdf out.pdf — simple, lossless, available in most package managers.
  • Ghostscript. Works, but pdfwrite re-distils the document, which can downsample images and change fonts. Avoid it for print-ready files.
  • Print to PDF. The universal fallback — and the one that quietly re-renders: links and form fields disappear and image quality can drop. Fine for a quick bundle, wrong for a filing.

Whichever route you take, the rule is the same as the browser tool: the file is only private if the merge happens on your device.

do it in three steps

Securely Merge PDFs Offline

Drop in the PDFs, reorder the queue, merge in browser memory and download the verified result. No upload, no account, no server copy — the log prints the page count and zero bytes uploaded.

Open the PDF merger

The short version

If the PDFs matter, the merge has to happen where the files already are. Order the queue before you start, expect document-level extras — bookmarks, attachments, signatures — to stay behind, unlock encrypted files first, batch very large stacks, and check the page count and the seams before the file goes anywhere. A merged PDF is a finished document, not a draft: it is worth the two minutes of verification.

faq

Frequently Asked Questions

The five questions that decide whether the merge was both private and correct.

Are my PDFs uploaded when I merge them in the browser?

No. The files are read into the tab with the browser's File API and assembled in memory, so there is no server to send them to. You can confirm it yourself: open DevTools, switch to the Network tab, clear it, then merge. The only requests are the page itself, the stylesheet, the script and the PDF library — no request contains your documents. The tool's log prints the same proof at the end: bytes uploaded: 0.

Does merging PDFs reduce quality?

Not with a page-copy merger. Each page is copied as an object into a new document — text stays text, images keep their original encoding, vectors stay vectors — so nothing is rasterised or recompressed. The file size can move slightly because the document is re-serialised and shared resources are written fresh, but the rendered pages are identical. Methods that print or re-export the document do re-render it, and those can change fonts, links and image quality.

Is there a file size or file count limit?

There is no fixed limit, because there is no server setting one. The practical ceiling is your device's memory: the sources and the merged output are all held at once while the merge runs, so the working set is roughly the combined size of the inputs plus the output. Dozens of ordinary documents are fine; hundreds of scanned pages or a multi-hundred-megabyte stack may stall a low-memory machine or a phone. If it struggles, merge in two batches and merge the results together.

Can I merge password-protected PDFs?

Not directly. An encrypted PDF cannot be read without the password, and the tool does not decrypt or re-encrypt files, so it flags the file as protected in the queue instead of failing silently. Open it in a PDF viewer with the password, save an unlocked copy, and merge that copy instead.

Can I change the order of pages inside one PDF before merging?

The queue reorders whole files, not individual pages. If a document needs pages interleaved with another, split it first: in any PDF viewer print to PDF with a page range (for example pages 1-3, then 4-8), or use qpdf --pages to extract the ranges. Then drop the resulting files into the queue in the order you want them combined.