Invisible PDF watermarking API
Send a PDF and a reference. You get a PDF back with its text, fonts and drawings untouched, and an invisible watermark on every page.
Switch between the original and the watermarked page, show its text, then look at the difference.

After: the PDF the API returned- 47.5 dB
- PSNR of the whole page at 144 dpi
- 806 of 806
- characters of text identical afterwards
- 1 overlay
- added; the page’s own drawing code is untouched
Still a PDF, part by part.
Etchv adds one thin layer to each page: two faint textures that blend into what is already there. Pages are never turned into flat images. Everything else is kept, removed or refused.
Kept as it was
Checked before delivery, or carried through untouched.
- Text: still selectable and searchable, and identical when extracted
- The page’s own drawing instructions, so vectors stay vectors
- Fonts, exactly as the file had them
- Page count and page sizes
- Scanned pages and embedded images
- Links, text notes and popups
- JSON attachments, byte for byte
Removed
Taken out of the watermarked copy instead of refusing the file.
- Actions a viewer runs by itself when the document or a page opens
- Document-level JavaScript
Refused
You get an error and no charge. Nothing is changed silently.
- Encrypted or password-protected PDFs
- Digitally signed PDFs
- Forms
- Rotated pages
- Other annotation types, and scripts on links
- Attachments that aren’t JSON
- 1–8
- pages per PDF
- 20 MB
- going in
- 64 MB
- coming out, and for detection
- 4 MP
- per page at 144 dpi: A4 and US Letter fit
Files grow. The textures are stored for every page. The example above went from 319 KB to 690 KB.
Include your fonts in the PDF. Etchv leaves fonts alone. If a PDF doesn’t include its fonts, each PDF app draws it with its own replacements, as it does today.
Supported PDFs and limitsEvery page, read back twice.
PDF apps don’t all draw a page the same way. So before a job succeeds, Etchv draws every page of the finished file with two different PDF engines and reads the watermark back from both.
A page that fails gets one more attempt. If it still fails, so does the job.
In the published benchmark, 1 of 6 test PDFs was refused at this check in 3 of 10 runs rather than delivered.
How PDFs are verifiedChecked on the finished PDF
The document
- Same number of pages, same page sizes
- Extracted text identical on every page
Each page
- Rendered at 144 dpi by two independent engines, PDFium and Poppler
- At least 35 dB PSNR against your original, in both
- The exact watermark read back from the page, in both
200- Every page passed. You receive the PDF.
422- A page failed. You receive an error, never a document.
Find the watermark again, page by page.
Send a PDF to the detect endpoint and get a result for every page. The file counts as watermarked only when every page returns the same watermark, so swapped or missing pages show up instead of hiding.
No original needed
Each page carries a random lookup code. Etchv keeps the link from that code to your watermark ID, so you only send the copy you found.
From an image of a page
An image of a whole page can go to image detection. In the saved run behind the example above, a 1440 × 810 PNG of the page returned the exact watermark.
What isn’t promised
An image of part of a page usually keeps too little of the watermark, and Etchv then reports no watermark rather than guess. Printing, re-saving in other software and edits can stop recovery too. Etchv has measured three digital changes to a page so far, and no prints or scans.
256 bits- Headermarks it as an Etchv packet
32 - Lookup tokenrandom; Etchv links it to your watermark ID
96 - Error correctionrepairs the rest
124
Repairs up to 16 wrong bits. If a page’s packet can’t be verified, the page carries the full 256-bit watermark instead.
page-42-capture.png1440 × 810 PNG of the whole page
fb25a14e…900912Exact ID recovered, 0.9996 confidence
How long it takes. What it costs.
PDF watermarking is part of the Growth plan and above, and of the free trial.
Measured on the live API
Median time to finish one request at a time, measured September 29, 2026 on 6 test PDFs of up to eight pages. A PDF near the size limit can take a minute or more. Across every published run, 855 of 855 operations on accepted PDFs completed.
Performance benchmarksCredits for PDFs
- 1
- credit per page watermarked: an eight-page PDF is eight credits
- 1
- credit per PDF checked, whatever its page count, found or not
- 0
- for refused or failed PDFs, retries with the same idempotency key and result downloads
- 3×
- credits on GPU, or the standard rate if the request runs on CPU instead
Two requests. One for each direction.
Embed when a document goes out. Detect when a copy comes back.
POST /watermarks/documentscurl --fail-with-body https://api.etchv.com/watermarks/documents \
-H "X-API-Key: $ETCHV_API_KEY" \
-H "Idempotency-Key: delivery_0084" \
-F 'file=@board-pack.pdf' \
-F 'data={"delivery":"delivery_0084"}' \
-D response-headers.txt \
--output response-body200 · application/pdfHTTP/2 200
content-type: application/pdf
content-disposition: attachment;
filename="board-pack-watermarked.pdf"
x-watermark-id: ea112880a8774fd1a251…b57654f3
# On 200 the body is the watermarked PDF.
# Save the full 64-character watermark ID with your record.
# A 202 body is a job receipt instead.POST /watermarks/documents/detectcurl --fail-with-body https://api.etchv.com/watermarks/documents/detect \
-H "X-API-Key: $ETCHV_API_KEY" \
-F 'file=@found-copy.pdf'200 · application/json{
"watermarked": true,
"watermark_id": "ea112880a8774fd1a251…b57654f3",
"confidence": 0.98,
"units": [
{ "index": 0, "watermarked": true, "confidence": 0.99,
"watermark_id": "ea112880a8774fd1a251…b57654f3" },
{ "index": 1, "watermarked": true, "confidence": 0.98,
"watermark_id": "ea112880a8774fd1a251…b57654f3" }
]
}One document. A copy for each reader.
The pattern is the same wherever a document goes to more than one person. What changes is the record the watermark leads to.
- Boards and leadership
Board packs
Each director gets their own copy of the pack. If a page reaches the press, it can lead back to one copy, not to the whole board.
The watermark leads toDirector’s copy - Deals and data rooms
CIMs and term sheets
Bidders download clean documents with no stamp to crop out. Every download is a different copy.
The watermark leads toBidder and download - Investor relations
Drafts before filing
Earnings drafts, roadshow decks and filings circulate under embargo among advisers. Each adviser’s copy carries its own watermark.
The watermark leads toAdviser and draft - Legal
Settlement drafts and productions
The same document goes to several parties. A page that surfaces can lead back to the party it was produced to.
The watermark leads toParty and production - Research and publishing
Paid reports
Subscribers receive a normal PDF they can read anywhere. A copy passed around a group chat can still lead back to its subscription.
The watermark leads toSubscription - Studios
Scripts and treatments
Scripts go to cast, crew and vendors as PDFs. A page posted online can lead back to the copy it came from.
The watermark leads toRecipient’s copy
Every copy.
Its own watermark.
Start with 200 free credits: enough to watermark 200 pages.
7 days · 200 credits · No card required