local-redact

Source on GitHub

Remove sensitive data from text before you paste it into an LLM. Runs in your browser; nothing is uploaded.

Network access is blocked on this page

This page sets a Content-Security-Policy with connect-src 'none' and default-src 'none'. Your browser enforces it, so the page's own scripts cannot send what you paste anywhere: no fetch, XHR, WebSocket, beacon or third-party image load.

To check: open your browser's developer tools, go to the Network tab, and paste some text. After the page and its four scripts load, no requests appear. You can also save this page and use it offline.

Limits: browser extensions are not bound by the page's policy, and the copied text is only as safe as where you paste it.

Try an example

What to detect

1Your text

In review, select a highlight to keep that value (it is added to the allowlist).

2What the LLM will see

Nothing to redact yet.

Names and street addresses are not detected. Read the redacted text before you paste it.

3Put the real values back

Paste the LLM's answer. Placeholders such as <EMAIL_1> are swapped back for the original values, here in your browser.

Allowlist

Values that are never redacted, one per line. Matching ignores case. Useful for your own support address or a public phone number.

Custom patterns

Add formats this tool does not know, such as your policy or claim numbers. The name becomes the placeholder (<POLICY_NO_1>). Patterns are regular expressions; keep to syntax that also works in Python if you will use them with the CLI.

    Mapping

    Which placeholder stands for which value. It lives only in this tab; download it if you want to restore an answer later or with the CLI. It holds the real values, so keep the file private.

    PlaceholderValue
    Use these settings with the CLI

    Download your type choices, allowlist and custom patterns as JSON, then run local-redact redact --config settings.json file.txt.