
I had three PDFs on the desktop and one form that wanted a single file. A W-2 and a lease, plus a scan of an ID. I dropped them on the first merge page Google gave me and watched the progress bar.
Then I opened the network panel. The files had already left.
That is the usual product. You send the packet, they stitch it, they ask you to make an account, and then they meter the next one. The merge page on Softery does the stitch in this tab. After the JavaScript has loaded, your files do not have to go anywhere for the download to work.
The File Has to Sit Somewhere
A merge is copy and paste for pages. Read the files and write a new one. That work can happen on a server you do not own, or it can happen in the memory of the browser you already opened.
If it happens on their server, the pages exist on a disk you cannot see. Even if the FAQ says they delete the file in an hour. For a while it was there. Logs exist. So do the trackers that loaded with the page.
If it happens in the tab, the pages exist in RAM you can close. Reload and they are gone. Unplug the cable and the download still works, because the bytes never needed a reply.
I wanted the second kind, because the files I merge are the ones I would rather not put on a stranger's disk.
637 Cookies From One Upload
A You Should Know post sat on the front page with 19,785 upvotes and 593 comments. The title is the claim: free file converter websites like iLovePDF set 637 cookies from 221 domains when you upload a single document.
I did not invent those numbers. They are why this page exists. The merge itself is not a hard problem. pdf-lib copies a page in a few lines. It is MIT. The preview library, pdfjs-dist, is the one Mozilla ships, BSD and Apache. I picked both because I can run them in the tab and because I can read the licenses. The hard part is refusing the upload, because the upload is how those sites count your tasks and how they load the 221 domains.
People merge tax packets and medical bills, plus court pages and IDs. I wrote "nothing is transmitted" because those files are the ones you do not want on someone else's disk.
I ranked this page sixth out of 1,754 ideas, score 9.50, about ten hours of work. The PDF family in that list is long: merge, split, compress, fill, OCR. Merge is first because the upload is the whole complaint, and because a merge is the moment when the file is already a pile of private pages. I shipped the page and the post in the same sitting so the search result and the tool are not two weeks apart. A tool nobody can find is a folder on my machine. That was the sitting.
Three Tasks, Then a Wall
The other half of the market is a meter. I logged one converter at three tasks an hour and fifty pages on the free path. Hit either line and the download turns into a plan.
| What they count | A common free cap | This page |
|---|---|---|
| Tasks in an hour | 3 | no count |
| Pages in the file | 50 | no count |
| Account before download | often yes | no |
| Where the bytes sit | their server | this tab |
I am not going to tell you those sites never work. They work until the fourth task, or the fifty-first page, or the button that used to say Download. If you have one packet to assemble tonight, you should not have to learn their clock.
This page does not count tasks. It does not count pages. The only ceiling is the memory in the browser.
What the Page Does
Drop PDFs, or a zip of PDFs. Each page becomes a card. Drag the cards, or use the arrows if you are on a phone and do not want to fight a drag target. Remove a page you did not mean to add. Press Download.
The file you get is built with pdf-lib from the original pages. The name is merged-N-pages.pdf, so a client name never lands in a default download. Rename it after you have it. There is no watermark and no "made with" footer.
There is no account. There is no daily quota. The page keeps working with the network unplugged.
The merge copies page objects. It does not print each page onto a canvas and wrap that picture in a new PDF. A text layer stays a text layer. A scanned page stays a scanned page. If I rasterized every page, the download would get heavier than the files you dropped, and you would notice on the first packet.
Thumbnails Are a Sort Key
Each card shows a small picture so you can tell the cover letter from page two of the lease. That picture is a preview. It is not the page that goes into the download.
pdf-lib can copy a page. It cannot draw one. The preview comes from pdfjs-dist, the same library browsers use to render PDFs. It draws a small JPEG in this tab so you can sort. A fuzzy thumbnail does not mean a fuzzy file. The download copies the original page, not the preview image.
If a card looks blank, the source may be a scan with no text layer, or the file may be locked. A locked PDF has to be unlocked first. This page will not guess a password.
The page may fetch the PDF.js worker once so it can draw those previews. That request is a library, not your file. The merge does not wait on it. If a preview fails, you still get the pages.
On a phone the drag target is easy to miss. I left up and down buttons on every card for that. One of the organize pages I logged was painful on a phone for this exact reason. You should not need a mouse to put page three on top.
A Zip Is Just a Folder
Office people often get a zip of client PDFs. Drop that zip here and the pages come out the same way a loose file does. The zip is unpacked in this tab with JSZip. Files that are not PDFs stay in the zip and never become cards. Hidden junk from macOS, the __MACOSX folder a Mac adds when you compress in Finder, is skipped.
You can mix a zip and a single PDF in one session. The download is still one file.
I put that in because the people who need a merge are often the people who were just emailed a folder.
Locked Files Stay Locked
If a PDF is encrypted, the page tells you so and stops. It does not try a blank password. It does not send the file anywhere to be cracked.
That is on purpose. A merge tool that also unlocks documents is a different product, and it is one I did not want to ship next to a promise that nothing leaves the tab.
Unlock the file where you already have the password. Drop it again.
The page decides what you dropped by looking at the first bytes, not the extension. %PDF- is a PDF. PK is a zip. A renamed screenshot is still a screenshot. That keeps a .pdf that is actually a PNG from landing in the grid and failing later.
The Name on the Download
Default names are how client data leaks into a Downloads folder. Smith-tax-2025-final-MERGE.pdf is a sentence about a person. merged-11-pages.pdf is a count.
The page uses the count. You rename it on your machine, if you want a better name, after you have looked at the file.
Same reason there is no account. An account is a place to store the last file, and the last file is the one you did not want stored.
Why I Did Not Put a Cap
Caps exist so a free tier can become a paid tier. Three tasks an hour is not a technical limit. Fifty pages is not a technical limit. They are prices written as product rules.
A local merge has no marginal cost I can charge you for. The CPU is yours. The RAM is yours. Putting a cap on that would be theater.
I still have to be honest about memory. A phone will choke on a fat scan before a desktop will. That is your device, not my meter. If the tab dies, split the pile and merge twice.
What I Left Out
I did not build split or compress. Unlock is a different product. Those cards sit later in the same queue. Merge is the one people search first, and it is the one where the upload hurts the most, because the file is already a packet of other files.
I did not add a cloud save. I did not add a share link. A share link is an upload with extra steps.
I did not put a signup wall on the download. That wall is the whole complaint in the threads: you did the work, then the button asked for an email.
Open the Network Panel
This is the test I use on my own page.
- Open /tools/merge-pdf.
- Open the network panel in the browser.
- Drop two PDFs you do not mind seeing on screen.
- Drag a page. Press Download.
You will not see the PDFs go out. You may see the page fetch a worker so it can draw thumbnails. You will not see w2.pdf in the request list.
If you ever do, the page is broken and you should close it. I wrote the tests for the merge first and watched them fail, then made them pass. That does not prove the network panel is clean. You still have to look.
The Other Pages That Stay Local
The password generator never sees the password. The Markdown to PDF converter never sends the draft. Sunrise times are math in the tab. This merge is the same rule applied to a file people actually worry about.
A comment in a 1,494-upvote thread about someone writing their own PDF editor said the quiet part:
this is actually the kind of stuff people want no login, no subscription, no random background processes
That is the brief. I shipped the merge first because it is the brief in its shortest form.
One more complaint I kept seeing: the cloud merge is blocked on some office networks. The person who needs the file at work cannot reach the site that would take it. A page that runs in the tab does not care which network you are on, as long as the JavaScript already loaded.
Try It Tonight
If you have a packet to assemble, use the page and watch the network panel. If the files stay, keep the bookmark.
- Open Merge PDF.
- Drop the files, or the zip.
- Put the pages in order.
- Download one file.
- Close the tab. The bytes are gone from the page. They were never on my disk.
The other ten tools on Softery follow the same habit: do the useful bit here, and do not ask for an account to hand you your own file.
Last updated: September 4, 2026 | Reading time: 10 minutes
Written by Evgeniy Poznyak, who would rather merge a tax packet in a tab than send it to a converter that sets hundreds of cookies.