Remove Social Security numbers from text
An SSN in a document is the single highest-value identifier most people ever handle: it is durable, hard to change, and the key to opening credit in someone else’s name. This page finds them and replaces them with [SSN_1]-style placeholders.
Only the SSN detector is on, so the rest of your text — names, dates, account references — is untouched. Turn the others on in the settings panel if you want a full scrub.
Your text
Safe to paste
Preset: US Social Security numbers only.
Mapping — 0 values (only visible in this tab)
| Placeholder | Real value | Uses |
|---|
Check a few rows before you paste — this is the fastest way to spot a detector that grabbed the wrong thing. Nothing here is stored or sent anywhere.
What to look for — 30 detectors, custom terms, exceptions
People & organisations
Government & health IDs
Financial
Technical & secrets
Location
Step 3 — paste the AI’s answer here to put the real values back
The model replies using the placeholders. Paste its answer below and every
[NAME_1] becomes the real name again — using the mapping held in this tab, which
is the only copy that exists.
How it works
- Open this page — the detectors are already set for “Remove SSNs”.
- Paste your text, or drop a .txt, .md, .csv, .json or .log file onto the panel.
- Check the highlights: every match is coloured by type, and one click keeps a type as-is.
- Copy the safe version and paste it into the AI tool of your choice.
- Paste the model’s reply back into step 3 to restore the real values.
The rules that keep the noise down
The Social Security Administration has published which combinations it never issues, and those rules survived the 2011 switch to randomised assignment: area numbers 000, 666 and 900–999 are excluded, group number 00 is never used, and serial number 0000 is never used. The detector applies all four, so a nine-digit code that happens to look like an SSN but cannot be one is left in your text.
The dashed form 123-45-6789 is always detected. A bare nine-digit run is only treated as an SSN when an “SSN” or “social security” label sits next to it, because nine digits with no context are just as likely to be an EIN, an order number or part of a serial. If your document uses a different label, add the number to custom terms.
Where SSNs actually turn up
Credit and rental applications, tax forms, onboarding paperwork, medical intake forms, court filings and — very often — email threads forwarding any of those. They also appear inside PDF text pasted into a chat window, and in spreadsheets exported from a payroll system.
Under HIPAA Safe Harbor the SSN is one of the eighteen identifiers that must be removed. Several US states additionally define an SSN as the trigger for breach-notification duties, which is why “it was only in an email” is a poor position to be in.
Tips
- Scrubbing the SSN does not make a document safe to share — the name and date of birth beside it are identifiers too.
- If your text contains ITINs (which begin with 9), they are excluded here on purpose: they are not SSNs and the SSA rules say 9xx cannot be one.
- Working with medical records? Use the Safe Harbor preset, which turns on dates, MRNs and addresses as well.
Detectors are pattern-based and imperfect: read the highlighted output before you paste it anywhere, and confirm your own confidentiality obligations against the current rules for your profession, employer or jurisdiction. Compiled 2026-07-29.
Frequently asked questions
Why was my nine-digit number not detected?
Either it breaks an SSA rule (area 000/666/9xx, group 00, serial 0000) or it has no dashes and no “SSN” label nearby. Both are deliberate: without them, every nine-digit reference number in a document would be redacted.
Does the number get validated against any database?
No, and it could not be — the SSA does not publish a list of issued numbers, and sending one anywhere would defeat the purpose of this page. The check is purely structural arithmetic in your browser.
Can I restore the SSN in a model’s reply?
Yes, while the tab is open — but think about whether you want to. If the model only needs to reason about the document, leaving the placeholder in place is usually the better end state.