Remove PDF Password
Strip the /Encrypt dictionary from a PDF you own — entirely in your browser, no signup, no upload. Detects RC4 and AES variants, decodes which user-access restrictions are set, and rebuilds the file with no security handler. For PDFs that require a password to open, the FAQ below documents the honest Print-to-PDF workflow.
How it works
PDF protection lives in a single dictionary referenced from the trailer of the file: the /Encrypt entry (ISO 32000-2 §7.6.4). The dictionary names a security handler — almost always /Filter /Standard for password-protected PDFs — and records four fields the spec lists in Table 21: /V (algorithm version), /R (revision), /Length (key length in bits), and /P (a signed 32-bit bitmask of user-access permissions).
The tool runs in five deterministic steps, all in your browser:
- Validate the file. Confirms the PDF type, a non-zero size, and a per-file cap of 100.0 MB. The first 1 KB is scanned for the literal
%PDF-n.mheader (§7.5.2), and the last 2 KB for the%%EOFterminator (§7.5.5). Files missing either are rejected with an explanation rather than a silent failure. - Find the /Encrypt dictionary. A two-pass byte-stream scan: pass one locates
/Filter /Standardanywhere in the file; pass two independently confirms the trailer references/Encrypt N N R. The cross-check guards against partial detection on PDFs that store the dict in unusual locations. - Decode the permissions bitmask. The 32-bit
/Pvalue is treated as unsigned, then bits 3, 4, 5, 6, 9, 10, 11, and 12 are isolated against named masks (4, 8, 16, 32, 256, 512, 1024, 2048). A 1 means the action is permitted; a 0 means denied. The breakdown panel above shows each bit's interpretation for the file you uploaded. - Classify the encryption variant.
/V /Rpairs map to RC4-40 (V=1/R=2), RC4-128 (V=2/R=3), AES-128 (V=4/R=3 or R=4), and AES-256 (V=5/R=5 or R=6). The first three are the variants pdf-lib'signoreEncryption: trueworkflow handles cleanly for owner-restricted PDFs. - Rebuild without /Encrypt. On Remove Password, pdf-lib loads the document with encryption-check disabled, creates a fresh
PDFDocument, copies every page from the source into it, thensave()writes a brand-new file. The new file has no /Encrypt entry, a fresh xref table, and no /P bitmask — every restriction the original carried is gone.
The honest limit: pdf-lib does not contain RC4 or AES decryption code. For owner-restricted PDFs (the common case — printing or copying blocked, but no password to open) the content streams stay readable when the encryption dictionary is removed. For PDFs that need a user password to open, the content streams are real ciphertext that pdf-lib cannot decrypt, and the rebuilt file will appear blank. The FAQ below documents the Print-to-PDF workflow for that case.
Worked examples
Frequently asked questions
Sources & references
- ISO 32000-2 — PDF 2.0 specification (encryption §7.6, standard handler §7.6.4, permissions Table 22)
- Adobe — PDF 32000-1:2008 (ISO 32000-1, freely available reference for the same encryption model)
- pdf-lib — MIT-licensed pure-JavaScript PDF library used for the encryption-free rebuild
- pdf-lib source on GitHub (open-source, audited)
- Sri Lanka — Intellectual Property Act No. 36 of 2003 (copyright and technical protection measures)
The /Encrypt dictionary parser and the P-bitmask decoder were cross-checked against ISO 32000-2 on 2026-05-11. The pdf-lib dependency is pinned in package.json and re-verified on each major-version bump.
Related tools
Comments & feedback
Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.
Found a bug, edge case, or want to suggest an improvement?
Email me at [email protected] — most fixes ship within 24 hours.