Skip to content
StaysLocal

Structural edits, not a re-render

Files are read from disk with the File API. Merging, splitting, extracting, reordering and rotating are all done by pdf-lib, which copies the original page objects between documents rather than rasterising and reassembling them — previews and thumbnails are rendered separately by pdf.js, purely for what you see on screen.

The practical difference: text stays selectable, links keep working, embedded fonts travel with their pages, vector artwork stays sharp at any zoom, and a screen reader still sees a real document. Many free PDF sites rasterise each page into an image on the server instead, which is why their output is several times larger, blurs when you zoom, and cannot be searched or read by assistive technology.

Why rotation is instant and lossless

Rotating a page here is a single /Rotate value written into the page dictionary, not a re-render of the page's contents. That is why it happens instantly and produces no quality loss whatsoever — there is nothing to lose, because nothing about the page's actual content changes.

What the tools deliberately cannot do

Two limits are load-bearing rather than accidental gaps.

  • An encrypted PDF's streams and strings cannot be read without its password, so a protected file is detected and reported rather than failing silently partway through an operation.
  • PDF to Images is the only tool here that rasterises pages into pixels, and it says so on its own page — that is the entire point of it. Every other PDF tool preserves the original page objects.
  • Previews render sequentially at a capped scale so a several-hundred-page document does not exhaust memory on a phone; very large files are correspondingly slower on mobile than on a laptop.

Why this runs in your browser

PDFs are the paperwork of everything consequential — contracts, payslips, medical letters, scans of ID documents. They are exactly the files people would least choose to hand to a stranger, which makes uploading them to merge two pages a strange default. Here nothing is transmitted: open your network inspector, merge or split a file, and confirm no request carries the document.