What this tool does
This PDF merger combines several PDFs into a single file, entirely inside your browser. You drop or pick the files, drag them into the order you want, optionally rename the output, and the result downloads to your machine. There is no upload step: the PDFs are read into memory, concatenated with pdf-lib, and saved through a normal browser download — TaskKit never sees a byte of your file.
When you'd use it
- Bundling bills, receipts, or expense reports into one attachment for a reimbursement form.
- Reassembling a multi-page contract that arrived as one PDF per page.
- Joining scanned documents from a phone scanner app into a single archive PDF.
- Building an exam packet, study guide, or course pack from individual PDFs handed out separately.
- Putting together a portfolio or submission without paying a SaaS to do it.
How it works
When you add a PDF, the file is read with the standard File.arrayBuffer() API and parsed by pdf-lib in your tab. Each PDF is kept around as a Uint8Array so reordering is instant — no re-parsing per drag. The page count and byte size shown next to each row come from that parse.
When you click Merge, a fresh PDFDocument is created, every source document's pages are copied across with copyPages (which preserves embedded fonts, images, and form-field structure), and the result is serialised with save(). pdf-lib uses the browser's WebCrypto for object identifiers when it builds the new document, which is why this works fully offline.
The full pdf-lib bundle weighs roughly 1.5 MB minified and is loaded only on this page — the rest of TaskKit doesn't pay that cost. There is no service worker, no background upload, and no telemetry on what you merge.
Notes
Are encrypted PDFs supported? Partially. PDFs that use the standard "open password" can usually be loaded — pdf-lib is permissive about decryption — but PDFs with full content encryption or DRM may fail to parse. If a file fails to load, the row will surface an error and the rest of your queue keeps working.
Can I split too? Not yet from this page. A dedicated PDF splitter is on the way; for now, the merger only goes one direction.
Why does the output sometimes balloon in size? pdf-lib does not deduplicate identical embedded streams across documents. If three input PDFs each embed the same 5 MB font, the merged file holds three copies. For most everyday merges the difference is small; for very large fonts or images, the output can be noticeably bigger than the sum of the inputs.
Are forms preserved? Yes — interactive form fields (AcroForm) carry through to the merged document, so signature lines, checkboxes, and text inputs from each source PDF still work. If two source PDFs use the same field name they'll collide; rename the fields in the source if that matters.
Related tools
- Hash Generator — fingerprint the merged file before sending it
- Image Tools — flatten scans before merging into a PDF elsewhere
- PDF Splitter — coming soon