Geode

Sanitize a PDF — remove the hidden data

The file is inspected first: you see every class of hidden data found inside it, choose what goes, and the file is rebuilt without it. The output is then re-inspected on its own terms, so “removed” is a verified result, not a promise. On your device.

This page loads a PDF reading engine (≈0.5 MB, from this site) when you drop a file — inspecting for hidden text means replaying each page the way a reader does.

All the tools

Inspect first, then decide

Nothing is removed on a guess. The tool opens your file, reports every class of hidden data it finds — metadata, embedded attachments, scripts, page thumbnails, hidden layers, form values, structure-tree text alternates, bookmarks, fingerprints, leftover objects, and text that is in the page but not visible on it — and each one is a checkbox. What the file doesn’t contain is reported as not found, and what can’t be removed safely says so, with the reason.

What “removed” means here

The cleaned file is not your file with bytes blanked; it is a fresh file rebuilt without the classes you chose. Then the tool re-opens its own output and looks again — with its own eyes, not the detector’s notes — and if anything it claimed to remove is still findable, it refuses to hand the file over rather than hand you a false receipt. A rebuilt file also, by construction, carries none of the original’s earlier saved revisions: a fresh single-revision file has no byte tail for old drafts to hide in. That is a guarantee of the method, and you can check it on the Verify page.

Shallow and deep

Wiping a document’s title and author fields is common, and honestly described it is real — those fields do carry names and tooling traces worth clearing. The classes that stay recoverable in practice live deeper: metadata packets attached to individual images and objects, text under fills and off the page edge, layers switched off but still present, pre-edit page thumbnails, form values, tagged-text alternates, whole files riding as attachments. This tool works that full list, names what it could not remove, and shows its work — and the extractor is right there for you to run on the result.

Invisible text is your call

Text that paints no ink — an invisible render mode, white on white, zero size — is reported every time but removed only when you tick the box, because a scanned document’s searchable text layer is, technically, invisible text: removing it also removes the OCR work that made your scan searchable. The report says what it found; whether it goes is your decision, stated on the box itself.

Signed and encrypted files

A digital signature signs the file’s exact bytes, so any rebuild voids it in every validator. The tool refuses a signed file unless you explicitly say the trade is acceptable — it will not make that call for you, and it never deletes the signature value itself. An encrypted file is declined outright: its contents are ciphertext, and inspecting ciphertext would be guesswork dressed as a result. Decrypt deliberately first, then sanitize what you can actually see.

Questions people actually ask

Is the cleaned file guaranteed to be clean?
It is guaranteed that the classes you selected were removed and that the removal was re-checked on the output itself — the tool refuses to hand over a file that fails that re-inspection. What no tool can honestly hand you is a certificate of absence: a PDF is an open-ended container, so the result is “these classes, verified gone”, never “nothing else exists”.
Why is “invisible text” unchecked by default?
Because a scanned PDF’s searchable text layer is invisible text — it sits behind the page image, painting no ink. Removing the class also removes that OCR layer, so the tool reports it every time and deletes it only when you opt in.
Why did it refuse my signed PDF?
A digital signature covers the file’s exact bytes, and sanitizing rewrites them, so the signature would read as broken everywhere afterwards. The tool asks you to acknowledge that trade explicitly instead of making it silently. The signature value itself is never deleted.
What happens to the file’s earlier versions?
A sanitized file is rebuilt from scratch as a single-revision document, so earlier saves — which live appended in the original’s byte tail — do not ride along. That is a property of rebuilding, and the Verify page will show you the result.
Is my file uploaded to be cleaned?
No. The inspection and the rebuild both run in your browser, on your device. Watch the Network tab while it works — no request carries your file anywhere.

We invite you to double-check our work

Open your browser’s developer tools, switch to the Network tab, and run any tool on this page and nothing leaves your device.

The whole source is on GitHub. Read it.

Found a bug, or a claim that doesn’t hold up? Tell us: pdf@geodeforge.com. An example file turns a guess into a quick fix — and if yours is too sensitive to share, we understand; a description still helps.

That’s the difference between a privacy policy and a fact.

Tell someone it exists

This project has no marketing budget and no growth team — it spreads or it does not.

More from GeodeForge

GeodeForge is a one-person studio that crafts open-source tools that do what they say, and let you check — in your browser.

Check at geodeforge.com →