Tamperlens and HTPBE

The nearest neighbour to what we do. Both products read a PDF's structure rather than looking at the page, both publish their prices, both refuse to publish a detection rate. The differences are scope, what happens to the file, and what a document costs.

How to read this page

Every fact about HTPBE below carries the date it was read and names the page it came from: their home page, their pricing page and one dated post on their blog, read 2026-08-06; their API documentation and changelog, read 2026-08-13.

Neither company publishes a detection rate, and that is worth saying out loud rather than treating as our own idea. HTPBE and PDFChecker are the two vendors in these comparisons that publish no accuracy figure at all. In a market where nearly everyone publishes a "99%" with no method behind it, that is restraint.

Side by side

  Tamperlens HTPBE Stronger
Free tier 50 documents a month, every month, with an API key (/pricing, 2026-08-06). "New accounts get 5 free checks on signup" (read 2026-08-06). Tamperlens
Published plans Free 50 a month; Solo $29 for 1,000; Team $199 for 10,000; Business $749 for 50,000 (2026-08-06). Starter $15 for 30 checks a month; Growth $149 for 350; Pro $499 for 1,500; Enterprise custom (read 2026-08-06).
Price per document $29 for 1,000 documents is $0.029 each. $149 for 350 checks is $0.426 each; $499 for 1,500 is $0.333 each (arithmetic on their published figures, read 2026-08-06). Tamperlens
Smallest paid unit Free covers 50 a month; after that the smallest purchase is a 500-document pack at $25. Pay-per-check with no subscription: 8 checks for $5, 25 for $15 (read 2026-08-06). HTPBE
On-premise None. There is no way to run the engine inside your own network. Offered on Enterprise: "unlimited checks with on-premise deployment" (read 2026-08-06). HTPBE
Speed No published time. A 15-second hard deadline is the ceiling, after which the answer is an error rather than a wait. "verdict in under 3 seconds" (read 2026-08-06). HTPBE
How the API receives the file Direct upload: the document travels once, inside the request, and is parsed in memory. By URL only: "any publicly accessible URL", including S3/GCS presigned links; there is no upload endpoint (their API page, read 2026-08-13). Workable with presigned links, but the document must first live somewhere reachable and the analysis is a second hop. Tamperlens
Result delivery Synchronous: the report is the response to the upload. Submit, then poll a result endpoint; no webhooks appear anywhere in their API documentation (read 2026-08-13). Tamperlens
Integration surface OpenAPI spec, an MCP server on npm (tamperlens-mcp), an n8n community node on npm (n8n-nodes-tamperlens). OpenAPI spec and a Python client on PyPI; code samples for other languages, no other packages found (read 2026-08-13). Tamperlens
Engine release log Published at /changelog: families with the release that introduced them. A dated public changelog with version-stamped algorithm releases shipping at a near-weekly cadence (their changelog, read 2026-08-13). Genuine transparency, and worth crediting.
Page content Read, in memory, and discarded with the response: which is what makes recovered redactions, hidden instructions and running-balance arithmetic possible at all. Not read: "we never read the page content, only the file structure" (read 2026-08-06). A narrower blast radius, and a narrower set of findings.
Where it runs, and what is kept One server in the EU (Helsinki). The document is held in memory and discarded with the response; nothing about it survives the request (/security). EU storage, stated as "Stored in the EU" (read 2026-08-06). We cannot establish from outside what is retained or for how long, so we do not state it.
Scope beyond PDF structure 19 signal families on a PDF, plus nine image signal families and eight for Office files; redaction recovery, document-borne prompt injection, signature coverage and permissions, Brazilian identifiers. Structure, metadata and digital signatures. Their site states they do not detect documents fabricated from scratch and do not do identity proofing (read 2026-08-06). Tamperlens
Detection rate None published. None published.
False-positive rate Published at /evidence, with its population and date. None published (read 2026-08-06). Tamperlens

Where the two designs actually differ

Not reading the words on the page is a smaller blast radius and a shorter list of findings. It is one decision, seen from both ends.
HTPBE TAMPERLENS WHAT IT READS structure, metadata, signatures WHAT IT READS the same, plus the page content SO IT CAN FIND an appended revision a signature that stopped covering metadata that argues with itself SO IT CAN FIND all of that, and also words under a black rectangle instructions hidden for a model AND THE COST nothing printed on the page is visible AND THE COST the words are read, then discarded

Left column is their own sentence: "we never read the page content, only the file structure" (read 2026-08-06). Right column is our own scope: the page content is parsed in memory and discarded with the response (/security). Neither column is a score; the drawing shows what each design buys and what it gives up.

Their API fetches the document from a URL. Ours takes the document. So on their route the file has to exist somewhere reachable before it can be checked.
TAMPERLENS · ONE HOP your file POST /inspect report, in the response HTPBE · URL IN, THEN POLL your file somewhere with a reachable URL submit the URL they fetch the file poll The extra box is the difference: one more place the document exists, one more expiry to manage.

Their API documentation, read 2026-08-13: "any publicly accessible URL", including S3/GCS presigned links, with no upload endpoint and no webhooks found anywhere in it. Presigned links make the route workable. The drawing shows the number of hops, not a defect.

Their own check count, on two of their own pages

Two figures for the same thing are published at once, and a reader comparing products should know which one they are being quoted:

  • 63: "63 forensic checks across metadata, file structure, and digital signatures" on their home page, and "the same 63 forensic checks per file" on their pricing page (both read 2026-08-06).
  • 35: "HTPBE's 35-check forensic analysis", in their own blog post on API pricing, published May 2026 (read 2026-08-06).

We have no way to tell which number is current or how either is counted, so we draw no conclusion from it. We note it because a check count is the kind of figure a comparison gets quoted on, and because we would want the same noted about us. For what it is worth, a count of checks is a poor unit anyway: it says how many things were looked for, not how often the answer was right.

Where HTPBE is the better answer

  • The documents cannot leave your network. They sell an on-premise deployment and we do not sell one at any price.
  • You want an engine that never reads the words. "Only the file structure" is a stronger promise than "read and discarded", and for some documents that difference is the whole decision.
  • You need a handful of checks, once. Eight checks for $5, with no subscription, is a shape we do not sell.
  • You need a stated response time. They publish one; we do not.

Where Tamperlens is the better answer

  • Volume. At their Growth tier a document costs about ten times what it costs on Solo. The arithmetic is in the table and it is theirs, not ours.
  • Redaction. Replaying paint order recovers the words underneath a black rectangle that carries no redaction annotation at all, the failure behind the published redaction leaks, and the case a structure-only checker cannot see. See /redaction-check.
  • Instructions hidden in the document. Text positioned, coloured or layered so that a person does not read it but the model reading the file does.
  • Brazil. CPF, CNPJ and boleto identifiers checked by arithmetic on the check digits, looking nothing up about anybody, with prices quoted in reais.
  • Beyond PDF. Images and Office files go through the same endpoint.
  • The file goes straight in. Their API takes a URL and fetches the document from it; ours takes the document. For a bank statement or a payslip, "make the file reachable at a link first" is an extra system in the data path. One more place the document exists, one more expiry to manage, one more log it appears in.

What we cannot do

  • No on-premise build, and no customer-managed keys.
  • Recall is unmeasured. We know how often we flag genuine documents. We do not know how often we catch real tampering.
  • A document forged from scratch and never edited may carry no structural trace: the same limit HTPBE states about itself, and it is honest of them to state it.
  • No identity proofing.

What none of us publishes

No vendor in the table above publishes a false-positive rate on legitimate documents: how often the system flags a genuine file. Declining to publish a detection rate, as both of us do, is the right instinct; it is not the same as publishing the number that tells a buyer what review will cost.

Ours is at /evidence, with the population it was measured on, the date, and the engine version that produced it. The other comparisons are at /alternatives.

Read a report before you believe a comparison

Open the “Edited after creation” sample: a precomputed report on a document whose printed total was lowered by a second revision appended after creation. No account, no upload, no quota, and nothing on this page has to be taken on trust to look at it.

Tamperlens reports risk signals, not authenticity verdicts. Signals can have benign causes; combine them with your own decision logic.