One opinion, held consistently

A PDF tool should not need a reason to see your document.

Ream is a set of 34 PDF tools that run entirely inside your browser. Not a privacy-first wrapper around a server — there is no server. The site is static HTML, JavaScript and WebAssembly, and the only thing that ever leaves your machine is the request for those files.

0
bytes uploaded, ever
34
tools, all local
0
accounts, ever
1
recurring cost: static hosting

Why it exists

The trigger was a bank statement.

Redacting a bank statement should take a minute. Every free tool that came up wanted the file first: create an account, accept the terms, upload, wait, download, and trust a retention policy written for a company in a jurisdiction you had to look up.

The document was a list of transactions and an account number. It did not need to travel anywhere. The tools that asked for it were not doing anything a laptop could not do — they were doing it on rented hardware and charging for the convenience of not thinking about it.

That is the whole origin story. Everything since has been a process of asking, for each tool, whether the operation genuinely requires a server. So far, for 34 of them, it does not. Where it does — Office layout fidelity, PDF/A validation, bulk batch jobs, certificate signatures — the site says so instead of pretending.

What “client-side” means here, precisely

  • The file is read into memory by the File API. It is never written to a request body.
  • Parsing, editing and rendering happen in JavaScript, WebAssembly and canvas.
  • The result is assembled as a Blob and handed to the browser’s own download manager.
  • Closing the tab releases the memory. There is no other copy to release.
  • Installed as a PWA, the same code runs with the network disconnected.

The rules the project runs on

Five principles, and what each one costs

  1. 01

    Remove the copy, do not guard it

    Every other control in this category — encryption at rest, access reviews, retention automation, breach procedures — exists to protect a copy of your document. The cheapest control is not making one. Everything else on this site follows from that single decision.

  2. 02

    State the limit next to the feature

    The PowerPoint converter says it reconstructs structure rather than reproducing layout, on the page, before you run it. The redaction tool says it rasterises marked pages, and what that costs. A limitation disclosed at the point of use is useful; one buried in a help centre is marketing.

  3. 03

    No dark patterns, because there is nothing to sell

    No countdown timers, no disabled buttons that open a pricing modal, no “free for 7 days” badge, no pre-ticked annual billing. Most of the dark patterns in this category exist to convert a free user into a subscriber, and this site has no subscribers.

  4. 04

    Verifiable over assertive

    The word “secure” does not appear in the interface as a claim about us. Instead: the network panel is yours, the offline toggle is yours, and the CSP is a header the browser enforces whether or not anyone reads this page.

  5. 05

    Small on purpose

    A site that never stores a document does not need a trust and safety team, a data protection officer, a retention schedule or a status page for a database. The narrow scope is what makes the honesty affordable.

  6. The tension worth naming

    Principle two costs conversions: an honest PowerPoint page converts less well than a confident one. Principle five costs reach: no ads, no growth loops, no viral footer widget. Both are accepted, and neither is quietly renegotiated when a page underperforms.

What it is made of

Six dependencies, a static export, no backend

A short dependency list is a security decision as much as an engineering one. Runtime packages are pinned to exact versions, so an upgrade is a commit somebody made rather than something that arrived during a build.

The threat model
Next.js 14, statically rendered
Every page is generated at build time and served as HTML. There is no runtime, no API routes and no server-side rendering on demand — which is also why there is nowhere for a document to go.
pdf.js for reading
Mozilla’s renderer parses documents and draws pages to canvas. It ships as a same-origin worker bundle, not from a CDN.
@cantoo/pdf-lib for writing
A maintained fork of pdf-lib that supports the standard security handler with AES-256. Used for merging, splitting, reordering, form fields, metadata and encryption.
Tesseract.js for OCR
WebAssembly recognition running in a worker. The language model is downloaded once from the tessdata CDN and cached by the browser — this is one of the two network exceptions disclosed in the privacy policy.
Canvas and OffscreenCanvas for rendering
Page rasterisation, thumbnails, redaction and signature placement. A redacted page becomes an image precisely so the original characters stop existing.
fflate for compression
Deflate for PDF stream filters, and zip containers for multi-file results. The platform CompressionStream is used where it is available.

The useful half of a manifesto

Six things this project will not do

A list of refusals is more informative than a list of ambitions, because a refusal can be checked. Each of these is a live decision, not a historical footnote.

  • Recover a password you have lost

    Unlock PDF needs the current password. Brute-forcing is a different tool with a different legal position, and implementing it here would be dishonest about what that tool is for.

  • Claim pixel-exact Office conversion

    A browser tab has no layout engine for Word, PowerPoint or Excel. The converters reproduce text structure and list what could not be carried. Saying so costs conversions and is still the right trade.

  • Call a drawing a certificate signature

    A drawn signature is an electronic signature. A certificate signature needs a private key, a certificate authority and a timestamp authority. The tool page draws that line explicitly.

  • Sell an “AI” feature without a key

    Summarise and Translate require an API key you supply, and the text goes from your browser to that provider. Without a key there is no AI — which is an honest sentence that most tools in this category will not write.

  • Show advertising

    An ad network is a third-party script in the same tab as your document, and the current content security policy would block one. The trade is not worth it.

  • Add an account system

    An account means an identity store, a password reset flow and a reason for a document history. Every one of those is a liability that the current architecture does not have.

Money, stated plainly

How this is paid for, and what is not paid for

The recurring cost is a domain and a static host with a CDN allowance. There is no compute per document, no storage and no egress for files, so the bill does not scale with use. That is why there is no meter, no daily limit and no paid tier.

A voluntary “Support” tier and sponsorship have both been considered. Neither exists today. If one ships it will be recorded in the changelog on the day it happens, and it will not move an existing feature behind a paywall — that promise is specific and deliberately narrow.

There are no ads now and the content security policy would block an ad script. If that ever changes, the policy changes with it and that change is visible in the same response headers anyone can inspect.

The pricing page

What is not claimed

  • No ISO 27001 certificate. Nothing is stored, so nothing is certified.
  • No support SLA. Email reaches a person, not a queue with a timer.
  • No uptime guarantee. A static host is reliable; that is not a warranty.
  • No claim to be a security boundary for a compromised device.

Corrections policy

Factual errors on this site are bugs. Send the page, the claim and a source; the fix goes in and the changelog records it. Competitor comparisons are held to the same standard, including the rows where a competitor wins.

hello@ream.tools

The only test that matters

Open a tool and watch the network panel.

Everything above is a claim until you check it. Four seconds of observation is worth more than any page of prose about architecture, including this one.