🧹 Sanitize PDF
Strip metadata, scripts, attachments, comments and old revisions before sharing
✓ Free Forever · ✓ No Signup · ✓ No Upload · ✓ Works Offline
🔒 Your documents never leave your device. All processing happens locally in your browser using pdf-lib (client-side). No upload, no server, no tracking.
Features
- Strips Metadata — Removes the title, author, creating software and dates, the XMP metadata block and the document ID, and lists what it found.
- Removes Hidden Data — JavaScript, attached files, sticky-note comments and the notes behind highlights go; links and the visible marks stay.
- Drops Old Revisions — Content an incremental save left behind (deleted text, earlier versions of a page) isn't written to the new file. The result is read back and checked before you get it.
- 100% Private — Runs in your browser.
How It Works
- Upload PDF — Drop your file.
- Sanitize — Click Sanitize & Save — processing runs in your browser.
- Download — Get the clean PDF.
Use Cases
- Clean PDFs before sharing publicly
- Remove corporate identifiers before external distribution
- Prepare files for legal or FOIA release
Frequently Asked Questions
Does visible content change?
No. Text, images, links and highlights stay as they are. Two things look different: sticky-note icons disappear (they are the comments), and form fields become plain text you can no longer edit.
Upload to server?
No. Runs in your browser.
Difference from Edit Metadata?
Edit Metadata changes the title, author, subject and keywords. Sanitize removes all document properties plus the XMP metadata, the document ID, scripts, attachments, comments and old revisions.
What can't it remove?
Anything that is part of the page itself: text hidden under an image, white-on-white text, an invisible OCR text layer, and content on layers that are switched off (the tool tells you when a file has those). To take words off the page, use Redact PDF. And the file name is yours to change.
What about digital signatures and PDF/A?
Sanitizing rewrites the file, so a digital signature is no longer valid afterwards, and a PDF/A file stops being PDF/A (the standard requires XMP metadata). Clean a copy first, then sign it.
Notes from Milo 🐨
Filled-in forms had a rough time here. A form with an empty "sign here" box (which is most official forms) either failed outright or came out with the answers gone, and values a script had filled in showed up as empty boxes. It now flattens the form with the same code as Flatten PDF: what you saw in the viewer is what stays on the page, a hidden field's value is taken out and listed, Chinese or Japanese answers stay too, and a LiveCycle form that would only give you its "Please wait…" page gets an explanation instead of a useless file.
Confession: I fed this a PDF I'd built on purpose, with an author, a hidden comment, an attached spreadsheet, a script and a deleted paragraph from an older save, and every single one of them came out the other side. All it really did was blank a few property fields. Now it takes out the properties, the XMP metadata, the document ID, scripts, attachments, comments, private app data and old revisions, reads its own output back to make sure, and shows you a list of what it found. If your PDF has a switched-off layer it says so, because that's something it can't safely remove.
Related Tools
- 🏷️ Edit PDF Metadata — Edit PDF metadata — title, author, subject, keywords, creator app, producer
- ⬛ Redact PDF — Permanently remove sensitive text or regions
- 🔐 Password Protect PDF — Encrypt your PDF with AES-256 — a password to open, plus optional print, copy and edit restrictions
- 📐 Flatten PDF — Make filled-in PDF form data uneditable
💬 Bug, idea, or just to say hi? Tell Milo 🐨 · [email protected]