Batch Remove PDF Passwords
Processing one locked PDF is easy. Processing a folder of 500 is a different problem. This guide covers the four practical methods businesses use to batch-unlock PDFs, with cost analysis, scripts you can copy and paste, and honest tradeoffs.
Who this guide is for
Finance teams unlocking legacy bank statements. Legal teams processing case files. IT admins cleaning up SharePoint archives after a merger. Anyone who has a folder of PDFs with a shared or known password and needs to strip the protection at scale.
The four realistic methods
Pick based on your volume, tooling budget, and whether the password is known. The rest of this article covers each in detail.
| Method | Best when | Throughput | Cost |
|---|---|---|---|
| Adobe Acrobat Action Wizard | Non-technical team, up to 500 files, shared password | ~30 files/min | $20/mo Acrobat Pro |
| qpdf command line | Any volume, shared or per-file passwords, scriptable | 100-200 files/min | Free |
| PowerShell + pdftk or qpdf | Windows shop, per-file passwords from CSV | 100-200 files/min | Free |
| Managed recovery service | Unknown passwords across a batch | Depends on encryption | $3-50 per file |
Method 1: Adobe Acrobat Action Wizard
Acrobat Pro's Action Wizard is the go-to for teams without scripting experience. You build a reusable "action" once and apply it to an entire folder. The workflow:
- Open Acrobat Pro DC. Go to Tools and pick Action Wizard.
- Click New Action. Add the Encrypt step and configure it with No Security. Save as "Remove Password Protection."
- Click Add Files > Add Folder, point at the folder of locked PDFs, and set an output directory.
- Run the action. When a file prompts for its password, enter it once and Acrobat will remember it across the batch for any file sharing that password.
This method caps out around 500 files before UI sluggishness becomes a problem. Acrobat's JavaScript engine runs each file through its parser, which is thorough but not fast. For larger batches, move to command-line tooling.
Licensing caveat
Action Wizard requires Acrobat Pro, not the free Reader. If your team already has Pro, this is the easiest option. If not, qpdf is free and faster.
Method 2: qpdf command line
qpdf is an open-source PDF transformation tool and the fastest reliable way to batch-decrypt. It's available on every major platform and has no GUI overhead. Install it once:
# Windows (Chocolatey)
choco install qpdf
# macOS (Homebrew)
brew install qpdf
# Linux (Debian/Ubuntu)
sudo apt install qpdfA single file decryption looks like this:
qpdf --password=MyPass123 --decrypt input.pdf output.pdfTo batch a whole folder with a shared password, use a bash loop on macOS/Linux:
mkdir -p unlocked
for f in locked/*.pdf; do
qpdf --password=MyPass123 --decrypt "$f" "unlocked/$(basename "$f")"
doneOn Windows with PowerShell:
New-Item -ItemType Directory -Force -Path .\unlocked | Out-Null
Get-ChildItem .\locked\*.pdf | ForEach-Object {
qpdf --password=MyPass123 --decrypt $_.FullName ".\unlocked\$($_.Name)"
}qpdf exits with code 0 on success, 2 on warning, and 3 on error. Check $LASTEXITCODE (PowerShell) or $? (bash) if you need to log failures for manual review.
Method 3: per-file passwords from a CSV
If each PDF has its own password, maintain a mapping file. A simple CSV with filename and password columns is enough. Save it as passwords.csv:
filename,password
2024-Q1-report.pdf,Finance!2024
2024-Q2-report.pdf,Budget#Q2
2024-Q3-report.pdf,Audit$Q3PowerShell loop that reads the CSV and applies each password:
Import-Csv .\passwords.csv | ForEach-Object {
$in = ".\locked\$($_.filename)"
$out = ".\unlocked\$($_.filename)"
qpdf --password=$($_.password) --decrypt $in $out
if ($LASTEXITCODE -ne 0) {
Write-Warning "Failed: $($_.filename) (exit $LASTEXITCODE)"
}
}Store the CSV in an access-controlled location. A plaintext list of passwords is as sensitive as the PDFs themselves. Delete it after processing, or store it in a secrets manager if the mapping needs to be retained.
Method 4: managed recovery when passwords are unknown
When a batch contains files with unknown passwords (mergers, departed employees, legacy archives), scripted removal will not work. You need recovery. Our service handles batch recovery with volume pricing; single-file pricing starts from our home page, and volume deals for 50+ files are negotiated via contact.
Expected costs scale with encryption:
- 40-bit RC4 (Acrobat 3-4 era): near-guaranteed recovery. See 40-bit PDF recovery. Volume price typically $3-10 per file.
- 128-bit AES: probabilistic. Volume price typically $10-20 per file with a "pay only on success" model.
- AES-256: depends heavily on password strength. Volume price $20-50 per successful recovery.
ROI for business batch processing
Let's run the numbers for a realistic scenario: a finance team with 1,000 password-protected bank statements from a predecessor system, all using the same departmental password that has been recovered.
| Path | Staff time | Tooling | Total cost (US$50/hr staff) |
|---|---|---|---|
| Manual in Acrobat, one file at a time | ~16 hours | $20/mo Acrobat Pro | $820 |
| Acrobat Action Wizard | ~45 min | $20/mo Acrobat Pro | $58 |
| qpdf batch script | ~30 min (including setup) | Free | $25 |
| Managed service (passwords known) | ~15 min to upload | Per-file fee | Usually not worth it when passwords are known |
For known shared passwords, qpdf scripting beats every other option on cost. For unknown passwords, the managed service is the only option that produces any output at all.
Common pitfalls
Broken PDFs pass through silently
qpdf will succeed on malformed PDFs that Acrobat would reject. Run a final sanity check: a quick qpdf --check pass or a batch render test in a PDF viewer catches files that need repair. See repair PDF for the fix path.
Mixed encryption versions in one batch
qpdf handles all revisions transparently, but Action Wizard can stumble on older 40-bit RC4 files in the same batch as modern AES-256. If a batch fails partway, split by encryption version (check with qpdf --show-encryption) and re-run.
Digital signatures break on decrypt
Removing encryption from a digitally signed PDF invalidates the signature because the byte range the signature covers changes. If legal validity matters, preserve the original and treat the decrypted copy as a reference only.
File overwrite accidents
Always write decrypted files to a separate output folder. Do not overwrite the originals in place until you have verified a sample of outputs. One typo in a script has ended more batch jobs than any software bug.
Automation beyond the one-shot script
For recurring workflows (monthly bank statements, quarterly reports), wrap the qpdf loop in a scheduled task:
- Windows Task Scheduler: run the PowerShell script nightly, pointed at a "drop" folder; move completed files to an archive.
- macOS launchd / Linux cron: same idea with a bash wrapper.
- Azure Functions / AWS Lambda: event-triggered on S3/Blob upload, call qpdf in a container, write decrypted output to a different container. Works well for 100k+ files.
- Power Automate: if your team already uses the Microsoft stack, a flow can monitor a SharePoint folder and trigger a local qpdf run via on-premises gateway.
In all of these, store the password in a vault (Azure Key Vault, AWS Secrets Manager, or equivalent) and inject it at runtime rather than hardcoding it in the script.
Volume pricing for unknown passwords
If you have 50+ files with unknown passwords, write to us via the contact page. We offer per-file pricing on batches and will quote up front based on the encryption analysis.
Frequently asked questions
Does qpdf work on AES-256 PDFs?
Yes. qpdf 10.x and later fully support AES-256 (R=6) for both decryption with a known password and re-encryption. Older qpdf 8.x versions had partial support. If you are on an LTS Linux, upgrade qpdf from a newer repository before relying on it.
Can I batch remove only restrictions (owner password)?
Yes, when the files have an owner password but no user password, qpdf's --decrypt removes all restrictions with no password required on most older encryption. On R=6, you still need the owner password. See the owner vs open password explainer.
Is there a GUI wrapper for batch qpdf?
Several. PDF24 Creator has a batch unlock dialog. For Windows power users, "PDF Batch Security Remover" wraps qpdf. For cross-platform, BatchPhotoEditor-style tools exist but pure qpdf scripting is almost always faster to learn and more reliable.
How do I verify that decryption actually worked?
Run qpdf --show-encryption on the output file. A decrypted PDF will report "File is not encrypted." You can script a verification pass over the output folder to catch any silent failures.
Can I process thousands of files in parallel?
Yes. qpdf is single-threaded per file, but you can parallelize across files. In bash use GNU parallel: ls locked/*.pdf | parallel -j 8 qpdf --password=X --decrypt {} unlocked/{/}. In PowerShell 7+, use ForEach-Object -Parallel.
Next steps
If your batch has known shared passwords, install qpdf and run the scripts above. If a subset has unknown passwords, upload a representative file on the home page to get an honest success estimate. For background on what you are actually unlocking, see PDF encryption types.
Single-file shortcut
If you only need to unlock one PDF with a known password, the command-line method is overkill. Use the flow at remove PDF password when you know it.