If you run n8n workflows that touch PDFs — invoices, contracts, HR forms, scanned intake documents — sooner or later you hit the same wall: someone downstream doesn't need to see the names, emails, or ID numbers in that file. Maybe it's going to a shared drive, a support ticket, an analytics pipeline, or a third-party API you'd rather not hand raw PII to.
The usual fix is writing a custom HTTP Request call to some redaction API, wiring up auth headers, and hand-rolling the JSON body every time. There's now a community node that skips that step: @stabrise/n8n-nodes-pdf-redaction, which drops PDF redaction straight into the node panel.
This post walks through installing it and building a small end-to-end workflow.
What the node actually does
It wraps the PDF Redaction API in three operations:
- Anonymize — pick PII categories (names, emails, addresses, credit cards, faces, signatures, and more) and get back a redacted PDF where the matched content is genuinely removed, not just covered with a black box.
-
Anonymize with Custom Prompt — skip the tag list and describe what to redact in plain English, e.g.
"redact anything that looks like an internal project codename". - Detect PII — scan a document and get back the entities found (with bounding boxes), without touching the file. Useful for an audit step or for branching a workflow before you commit to redacting anything.
Both digital and scanned/OCR'd PDFs are supported, across multiple languages.
Install
In n8n: Settings → Community Nodes → Install, then enter:
@stabrise/n8n-nodes-pdf-redaction
That requires n8n 1.60.0+. Once it's installed, "PDF Redaction" shows up as a node, and "PDF Redaction API" shows up as a credential type.
Get an API key
Grab a free key at pdf-redaction.com/apikeys — the free tier gives you 100 pages/month, 10 pages per request, 5 requests/minute, which is plenty for testing a workflow. In n8n, create a new PDF Redaction API credential and paste the key in.
Build a minimal workflow
Here's a three-node workflow that fetches a public sample PDF and redacts a face in it — you can reproduce this exactly, no files of your own needed:
1. Manual Trigger → 2. HTTP Request → 3. PDF Redaction
HTTP Request node config:
- Method:
GET - URL:
https://raw.githubusercontent.com/StabRise/pdf-redaction-api/main/examples/pdfs/SampleWithFace.pdf - Options → Response → Response Format:
File
That writes the PDF as binary data into a field called data.
PDF Redaction node config:
- Credential: your PDF Redaction API credential
- Operation:
Anonymize - Additional Fields → Tags:
Face - Input/Output Binary Field:
data(the defaults line up with what HTTP Request produced, no renaming needed)
Run it, and the output panel gives you two things:
- A binary
redacted.pdfwith the face blacked out and the underlying pixel data actually removed. - A JSON payload with
detected_pii(each match plus bounding box coordinates) and aprocessing_timebreakdown per pipeline stage.
The original 823 kB file comes back at 377 kB — the API flattens the processed page(s) into a compact PDF rather than just painting over them.
Swap the tag to something like Person Name, Email, Address and you've got a general-purpose PII stripper for whatever document type flows into that branch of your workflow.
Detect-then-branch pattern
If you don't want to redact unconditionally, put a Detect PII node in front of an IF node:
HTTP Request → PDF Redaction (Detect PII) → IF (detected_pii is non-empty) → PDF Redaction (Anonymize)
→ (pass through unchanged)
Detect PII has no output binary field — it only returns the detected_pii array — so it's cheap to run as a gate before you decide whether the full anonymize step is even necessary. This is the pattern I'd reach for in something like a document-intake pipeline where most files are already clean and you don't want to touch every single one.
One gotcha worth calling out: if you leave the Tags field empty on Detect PII, you get back whatever the API detects by default, not everything it's capable of finding. Set the tags you actually care about explicitly if you want predictable results.
Where this fits
The node reads/writes n8n's standard binary data fields, so anything that can already put a PDF into a binary property works upstream — a webhook payload, an email trigger with an attachment, Read/Write File from Disk, or an S3/Google Drive node. Nothing about the redaction step cares where the PDF came from.
Full API reference, the complete tag list, and more tutorials (including custom-prompt redaction) are in the n8n integration docs. Source for the node itself is on GitHub.





Top comments (0)