The redaction
Removal,
not covering.
A black rectangle drawn on top is not a redaction — the words are still in the file, one copy-paste away. Black-Bar 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
Upload. Detect. Review. Verify.
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.
Want a taste first? View the sample walkthrough → — it is not the real redactor. Real documents run in the localhost app.
Nothing redacts until you say so
Every detection is a proposal. Accept or reject each one, resize boxes, or redact every occurrence of any term with one click.
See exactly what ships
A server-rendered preview shows the real redacted output beside the original — what you review is byte-for-byte what you export.
A manifest you keep
Each export writes a JSON manifest: input/output hashes, every proposal and your decision, and the verification verdict.
Built for confidential work
Quietly thorough
where it counts.
Every document you handle
PDF, Word, PowerPoint, Excel, HTML, Markdown, and images. Scanned pages and images embedded inside documents are OCR'd locally and redacted too.
Found in seconds, no AI
Names, parties, addresses, emails, phones, amounts, dates, SSNs, cards, IBANs, matter IDs — checksum-validated where it counts. A long contract scans in seconds.
True visual redaction
Content is removed from the file and image pixels destroyed under each box — never a rectangle drawn over recoverable text.
Verified, not promised
Independent extractors (and a re-OCR pass for scans) confirm accepted text is gone. If it isn't, the export is refused and destroyed.
Readable replacements
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.
Nothing leaves your machine
No telemetry, no accounts, no cloud. Deep Scan is optional local detectors only (Presidio / GLiNER). Non-English names (Korean · Japanese · accented Latin) when the multilingual model is installed.
Engine
Deterministic by default.
Optional local AI.
Detection is regex recognizers + contract-structure extraction + spaCy NER + your watchlist — fast, repeatable, and entirely offline. For messy or unusual documents, one button adds optional local PII / zero-shot NER (Presidio or GLiNER if installed). No cloud models.
Two ways to run it
Careful review,
or one command.
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 |
Run locally
~15 minutes.
Files never leave this machine.
One supported path for real confidential work: install on your Mac or PC, open localhost, review every finding, export a verified redaction. Python 3.10+ · Node 18+ · LibreOffice for Office proofs · tesseract optional for scans. Full guide: docs/LOCALHOST.md.
Set up once (clone, venv, model, UI build).
git clone https://codeberg.org/russkysong/black-bar.git cd black-bar 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 .. .venv/bin/redactor doctor
Run the review app — this is the path for counsel-grade work.
.venv/bin/redactor serve
# open http://127.0.0.1:8000
Upload → review → export. Prefer the redacted PDF for cloud AI. Never share the pseudonym legend.
.venv/bin/redactor redact contract.pdf # headless accept-all only