Bulk workflow guide

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.

MethodBest whenThroughputCost
Adobe Acrobat Action WizardNon-technical team, up to 500 files, shared password~30 files/min$20/mo Acrobat Pro
qpdf command lineAny volume, shared or per-file passwords, scriptable100-200 files/minFree
PowerShell + pdftk or qpdfWindows shop, per-file passwords from CSV100-200 files/minFree
Managed recovery serviceUnknown passwords across a batchDepends 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:

  1. Open Acrobat Pro DC. Go to Tools and pick Action Wizard.
  2. Click New Action. Add the Encrypt step and configure it with No Security. Save as "Remove Password Protection."
  3. Click Add Files > Add Folder, point at the folder of locked PDFs, and set an output directory.
  4. 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 qpdf

A single file decryption looks like this:

qpdf --password=MyPass123 --decrypt input.pdf output.pdf

To 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")"
done

On 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$Q3

PowerShell 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.

PathStaff timeToolingTotal 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 uploadPer-file feeUsually 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.