Skip to content
Benchmarks

Comparison

Feature comparison

What each project says it can do, from its own documentation. Read on 2026-09-30. A mark means listed only; “tested” means a committed test checks it.

— means not listed. tested means we ran it ourselves.

What each library says it can do. A mark means listed only.
Featureredact-secret0.1.0-beta.14flare-redact1.6.1OpenRedaction1.1.5
WHERE IT RUNS
Node.jsYes. Node.js 20, 22 and 24; native add-on with WebAssembly fallback testedYes. Node 20 or later testedYes. Node 20 or later (engines field) tested
Web browserYes. WebAssembly build; needs ES2022Yes. Listed: browser and edge runtimesNot listed. Not documented; the main entry imports Node built-ins, a separate lite entry does not tested
Edge runtimesOpt-in or partly. Cloudflare Workers is supported; Vercel Edge is notYes. Listed: edge runtimesNot listed. —
PythonYes. PyPI packageOpt-in or partly. Separate SDK, installed from gitNot listed. —
RustYes. crates.io crate; the core is written in RustOpt-in or partly. Separate SDK, installed from gitNot listed. —
GoNot listed. —Opt-in or partly. Separate SDKNot listed. —
Command lineYes. Checks files and staged diffs; redacts one file or standard inputYes. CLI: scan, redact, gatewayNot listed. No bin entry in the package
As a separate serviceNot listed. Runs inside your processYes. Docker sidecar gatewayOpt-in or partly. REST API, described for the larger openredaction package
WHAT IT FINDS
Passwords and API keysYes. 173 credential families from 92 providersYes. Tokens, keys, JWTs and connection strings, listed by detectorYes. API keys, OAuth tokens, JWT and bearer tokens
Emails, cards and IBANsOpt-in or partly. Opt-in personal-data switch; provisionalYes. On by defaultYes. Listed: email, credit cards, IBANs
Phone numbersOpt-in or partly. Opt-in; +1 / NANP numbers onlyOpt-in or partly. Opt-in (phone)Yes. US, UK and international
IP addressesOpt-in or partly. Opt-in network address familyOpt-in or partly. Opt-in (network): IPs, MAC addresses, coordinatesNot listed. Not listed in its README
National ID numbersOpt-in or partly. US Social Security numbers only, opt-in, pendingOpt-in or partly. Opt-in; 15 countries listed, checksum-validatedYes. 50+ countries listed
Names and street addressesNot listed. —Opt-in or partly. Opt-in contextual detectors: names, street addresses, dates of birthOpt-in or partly. Names listed; street addresses not listed
Your own formatsYes. Declarative rulesets: data, no code callbacksYes. Custom detectors and allow-listsNot listed. Not listed in its README
HOW IT HIDES THINGS
What hidden text looks likeYes. <SECRET_1> testedYes. b***@*** testedYes. [EMAIL_9619] tested
Keep a hint (last 4 digits)Not listed. Placeholder formatter sees finding metadata, not the valueYes. The default: masks keep a hintYes. Mask-middle and mask-all modes
Same value, same stand-inOpt-in or partly. Same input, same output; one placeholder per value is not statedYes. Hash, pseudonym and surrogate modes; one placeholder per value in a vaultYes. Deterministic placeholders
Get the originals backOpt-in or partly. Separate opt-in vault package; in-memory packages beta, persistent server profile alphaYes. Vault, with optional AES-GCM persistenceYes. Result carries a redaction map; restore() in the package types
Warn or block instead of hidingYes. Policy: redact, block, warn or allow; a callback or declarative action-policy rulesYes. Middleware actions: redact, observe or blockNot listed. Not listed in its README
HOW IT FITS INTO AN APP
Text that arrives in piecesYes. Same result as scanning it whole testedYes. Secrets split across chunks testedOpt-in or partly. A StreamingDetector class is exported; its behaviour is not documented
LogsYes. Pino and Python logging adapters, separate packagesYes. Pino, Winston and consoleNot listed. Not listed in its README
TracingYes. OpenTelemetry span processor, separate packageOpt-in or partly. Generic boundary for telemetry exportersNot listed. Not listed in its README
LLM prompts and agent toolsOpt-in or partly. MCP and AI-context packages, separate repository; not covered by Stable contract 1Yes. Wraps OpenAI and Anthropic clients, tool calls and MCPNot listed. Not listed in its README
JSON, CSV and spreadsheetsNot listed. Works on textOpt-in or partly. Objects, JSON and CSV; spreadsheets not listedYes. JSON, CSV and XLSX
Audit log and multiple tenantsNot listed. —Opt-in or partly. Gateway audit line with counts; tenants not listedYes. SQLite or PostgreSQL audit log; multi-tenancy
Answers right away (no waiting)Yes. Synchronous call after one initialize() testedYes. Synchronous call testedNot listed. Returns a promise tested
SAFETY
Results never repeat the secretYes. Findings carry position and type only testedYes. scan() leaves values out by default testedNot listed. Result includes the original text and a value map tested
No network calls or telemetryYes. StatedNot listed. Not statedNot listed. Not stated

Where this comes from

  • redact-secret 0.1.0-beta.14 (the published @redact-secret/core, tag v0.1.0-beta.14): the package README, the repository README and its guides at that tag. Adapters and the vault ship as separate packages and say so in the cell. Package README, Repository README, CLI guide, Rulesets guide, Streaming guide.
  • flare-redact 1.6.1: the README at tag v1.6.1, which is the README shipped in the npm package, and its package.json. README, package.json.
  • OpenRedaction @openredaction/core 1.1.5: the README shipped in the npm package, its package.json and its type declarations. The README describes the larger openredaction package; where a feature is listed only for that package, or not at all, the cell says so. README, Type declarations, package.json.
  • A dash means not listed in the documentation read, or not stated. It does not say the library cannot do it.
  • “tested” means a test in this repository runs the pinned version on every CI run and checks the claim (tests/feature-claims.test.mjs). Everything else is what the project says about itself.