Drop a document, get a redaction that is verified extraction-safe — sensitive text removed from the file, not just covered. Nothing leaves your machine.
The redaction
A black rectangle drawn on top is not a redaction — the words are still in the file, one copy-paste away. Blackbar deletes the underlying text from the document, destroys image pixels under every box, and scrubs metadata and hidden carriers (field codes, comments, tracked changes).
Then it checks its own work: every export is re-read by independent extractors. If anything you accepted can still be recovered, the export is refused.
Text deleted from the content stream · copy-paste recovers nothing.
The app
A local web app you run on your own machine. Drop a document; detection proposes every sensitive span, grouped by category. Accept, reject, draw your own boxes — then export, gated by the safety check.
Every detection is a proposal. Accept or reject each one, resize boxes, or redact every occurrence of any term with one click.
A server-rendered preview shows the real redacted output beside the original — what you review is byte-for-byte what you export.
Each export writes a JSON manifest: input/output hashes, every proposal and your decision, and the verification verdict.
Built for confidential work
PDF, Word, PowerPoint, Excel, HTML, Markdown, and images. Scanned pages and images embedded inside documents are OCR'd locally and redacted too.
Names, parties, addresses, emails, phones, amounts, dates, SSNs, cards, IBANs, matter IDs — checksum-validated where it counts. A long contract scans in seconds.
Content is removed from the file and image pixels destroyed under each box — never a rectangle drawn over recoverable text.
Independent extractors (and a re-OCR pass for scans) confirm accepted text is gone. If it isn't, the export is refused and destroyed.
Optionally swap each entity for a stable, realistic fake — entity-linked so the same original maps to the same fake everywhere and the document still reads for downstream AI.
No telemetry, no accounts, no cloud. The optional deep scan runs locally via Ollama. Non-English names (Korean · Japanese · accented Latin) detected too.
Engine
Detection is regex recognizers + contract-structure extraction + spaCy NER + your watchlist — fast, repeatable, and entirely offline. For messy or unusual documents, one button adds a local LLM via Ollama. Either way, it all runs on your machine.
Two ways to run it
The review app is the intended workflow for real redactions. For batch or scripted runs, the same pipeline — and the same safety gate — runs headless.
| Review app | Headless CLI | |
|---|---|---|
| How you run it | redactor serve → localhost | redactor redact file |
| Human review | Accept / reject each span | Accepts all detections |
| Best for | Careful one-off redactions | Batch & scripted runs |
| Formats | All | All |
| Extraction-safety gate | Always | Always |
| Runs locally | Yes | Yes |
Get started
macOS or Linux · Python 3.10+ · Node 18+ · LibreOffice for Office/HTML/Markdown proofs · Ollama and tesseract optional.
Get the code and set it up once.
git clone https://codeberg.org/russkysong/blackbar.git cd blackbar python3 -m venv .venv .venv/bin/pip install -e '.[dev]' .venv/bin/python -m spacy download en_core_web_md cd frontend && npm install && npm run build && cd ..
Run the review app and open it in your browser.
.venv/bin/redactor serve
# then open http://127.0.0.1:8000
Or redact headless, one command — same safety gate.
.venv/bin/redactor redact contract.pdf # fast, no AI .venv/bin/redactor redact contract.docx --replace # realistic pseudonyms