gekro
GitHub LinkedIn
Dev

PDF Merger

Drop multiple PDFs, drag to reorder, type page ranges per file, merge to one PDF - all in your browser.

0 files · 0 pages selected · 0 KB total input

🔒 100% local. PDFs are processed inside your browser using pdf-lib (+ PDF.js for thumbnails). Nothing uploads, nothing leaves the page. Encrypted PDFs need to be unlocked elsewhere first — we can't open them.

Mode:
📄

Drop PDF(s) here or click to browse

Multiple files in Merge mode · single file in Split mode · up to 100 MB each · not encrypted

Page-range syntax + what's supported

Page ranges are typed per file. Pages are 1-indexed (matches what a reader shows you).

  • all — every page (default if you leave the field empty)
  • 1-3 — pages 1 through 3
  • 1, 3, 5 — pages 1, 3, and 5
  • 1-3, 5, 7-9 — combine ranges and single pages
  • -3 — pages 1 through 3 (open-start range)
  • 5- — page 5 to the end (open-end range)

Out of scope for v1: visual page thumbnails (would add ~1.5 MB), splitting (one in → many out), per-page rotation, password-protected input, OCR. Ask if you want these — they're tracked in the backlog.

As-is, no warranty. These apps are free under their listed license and run entirely in your browser. Use at your own risk — don't blame me if your PC catches fire, your dog runs away, or the math turns out wrong. Verify anything that actually matters. None of this is professional financial, medical, legal, or engineering advice.

© 2026 Rohit Burani · MIT · Built at gekro.com · View source ↗

Guide

What It Does

Drop PDFs. Drag the handle to reorder. Type which pages of each file to include. Hit Merge. A single combined PDF downloads.

  • Multiple files at once via drag-drop or file picker
  • Drag to reorder using the handle in each row
  • Per-file page ranges (the killer feature — most online mergers can’t do this)
  • Live page count under each row shows how many you’ve selected vs total
  • Total counts in the hero update as you change ranges
  • Hard 100 MB cap per file for sanity (browser memory)
  • Clear errors for encrypted or corrupt PDFs

Page-range syntax

Pages are 1-indexed (what your reader shows you).

TypeMeans
all or emptyevery page (default)
5just page 5
1-3pages 1, 2, 3
1, 3, 5pages 1, 3, and 5
1-3, 5, 7-9combine ranges with single pages
-3pages 1 through 3 (open-start)
5-page 5 through the end (open-end)

Out-of-range pages (e.g. asking for page 10 of a 5-page PDF) get a clear inline error and the merge button stays disabled until you fix it.

When To Use It

  • Combining a contract, addendum, and signature page into one file
  • Stitching scanned pages from a multi-batch scan
  • Pulling exhibits 1-5 from one PDF and exhibits 8-10 from another into a single brief
  • Reordering pages because the original PDF’s order is wrong
  • Building a single-file packet for email when 5 attachments would get bounced

Why Local-Only Matters

Most online PDF mergers (smallpdf, ilovepdf, etc.) require you to upload your file. For a contract, a tax form, a medical record, a draft of anything sensitive — that means a stranger’s server now has a copy of your document. Even if they promise to delete it within an hour, you can’t verify that.

This app uses pdf-lib (MIT), a pure-JavaScript PDF library that runs entirely in your browser. The library is lazy-loaded from the page on first interaction (one-time ~280 KB download, cached after). Your PDFs are read into browser memory, merged, and the result is offered as a direct download — at no point does any file leave your machine.

What’s NOT Included (intentional)

  • Visual page thumbnails — would require PDF.js (~1.5 MB extra bundle). The page-range text input is fast once you know the syntax; thumbnails are coming if there’s demand.
  • Split mode (one PDF in → N PDFs out) — the inverse operation, tracked as a v2 feature
  • Per-page rotation — most PDFs come pre-oriented; if needed, do it in your reader before merging
  • Password-protected input — pdf-lib refuses encrypted PDFs by design. Unlock with your reader’s “save as” first.
  • Image-based compression — separate concern; if your output is too big consider re-saving in your reader first
  • OCR scanned PDFs — separate tool (~10 MB Tesseract.js bundle)
  • Cloud storage integration — your PDFs are on your machine, that’s the point

For informational purposes only. Not financial, medical, or legal advice. You are solely responsible for how you use these tools.