PII Redactor — Remove Personal Data Before Pasting Into ChatGPT
Replace emails, phone numbers, card numbers, API keys and names with placeholders before you paste text into an AI, then restore them in the reply.
What to detect (12 of 13)
2. Redacted text: paste this into the AI
Hi, please draft a reply to this customer complaint. From: [NAME_1] <[EMAIL_1]>, phone [PHONE_1] Account: [COMPANY_1], 100 King St W, Toronto ON [POSTAL_1] She paid with card [CARD_1] and wants the refund to IBAN [IBAN_1]. Her SIN is [SIN_1] and date of birth [DOB_1]. Our server at [IP_1] logged the failed charge. Debug config: API_TOKEN=[SECRET_1] [NAME_1] says this is the third time.
12 items replaced: 2 NAME, 1 EMAIL, 1 PHONE, 1 COMPANY, 1 POSTAL, 1 CARD, 1 IBAN, 1 SIN, 1 DOB, 1 IP, 1 SECRET. Always read the result before sending: no detector catches everything (street addresses, for example, are not detected).
Mapping (stays in this tab)
| Placeholder | Original | Times |
|---|---|---|
| [NAME_1] | Jane Doe | 2 |
| [EMAIL_1] | jane.doe@example.com | 1 |
| [PHONE_1] | +1 416-555-0199 | 1 |
| [COMPANY_1] | Acme Logistics | 1 |
| [POSTAL_1] | M5V 2T6 | 1 |
| [CARD_1] | 4111 1111 1111 1111 | 1 |
| [IBAN_1] | GB82 WEST 1234 5698 7654 32 | 1 |
| [SIN_1] | 130 692 544 | 1 |
| [DOB_1] | 1987-03-04 | 1 |
| [IP_1] | 203.0.113.42 | 1 |
| [SECRET_1] | FAKE-demo-7f3a9c2e1b8d | 1 |
The mapping is never saved. If you close or reload this tab, download it first or the placeholders cannot be restored.
Dear Jane Doe, Thank you for contacting Acme Logistics. We have refunded the charge on card 4111 1111 1111 1111 to your account GB82 WEST 1234 5698 7654 32. A confirmation has been sent to jane.doe@example.com. If you have questions, we will call you at +1 416-555-0199.
6 placeholders restored.
Detection, redaction and restoring all run in your browser. Nothing you paste is sent anywhere, stored or logged, and the mapping disappears when you close the tab. Browse all free tools.
Found a problem, or something that could be better? We read every message and we fix things quickly.
This PII redactor removes personal data from text before you paste it into ChatGPT, Claude, Gemini or any other AI tool, and puts it back afterwards. It finds email addresses, phone numbers, card numbers, IBANs, US Social Security and Canadian Social Insurance numbers, IP addresses, API keys and passwords, and the names and company names you list, and replaces each with a numbered placeholder such as [EMAIL_1] or [NAME_2]. The AI sees the structure of the problem without the identities, and when you paste its reply back in, the placeholders turn back into the real values.
Detection is tuned to avoid flagging ordinary numbers. Card numbers must pass the Luhn checksum and start with a real card-network prefix, IBANs must pass the international mod-97 check, SINs must pass Luhn, and patterns that look like any 9-digit or 5-digit number (SSNs, ZIP codes, birth dates) are only matched with a separator or a keyword nearby. Names cannot be found reliably by pattern, so you add them to a list. Everything happens in your browser: the text and the mapping never leave the tab, and nothing is saved.
How to use
- Paste the text you want to send to the AI: an email thread, a support ticket, a log, a contract clause.
- Add the names, company names and any other identifying words to the list, one per line. Prefix a line with a label, like "company: Acme", to get [COMPANY_1].
- Check the redacted text, which updates as you type. Untick detectors you do not want, or tick Every other date to remove all dates.
- Copy the redacted text into the AI. Adding "Keep placeholders like [NAME_1] exactly as written" to your prompt helps the model preserve them.
- Paste the AI's reply into step 3. The restored version, with the real values back in place, appears beside it, ready to copy.
Frequently asked questions
Is it safe to paste personal data into ChatGPT?
It depends on your plan and settings, and it is rarely necessary. Consumer AI chat services keep conversations for a period and may use them to improve their models unless you opt out in the data controls; business, enterprise and API plans generally exclude training by default but still process and store the data. Customer and employee data may also be covered by privacy law or contracts that do not allow sharing it with a third party. Redacting first means the provider never receives the identifying details.
What kinds of personal data does it detect?
Email addresses; phone numbers in international (+44 20 7946 0958), North American ((416) 555-0199) and national trunk-zero formats; credit and debit card numbers; IBANs; US Social Security numbers; Canadian SINs; IPv4 and IPv6 addresses; MAC addresses; API keys and tokens for OpenAI, Anthropic, GitHub, GitLab, Slack, AWS, Google, Stripe, SendGrid, Hugging Face and others; JWTs; private-key blocks; passwords and secrets in key=value config lines; usernames and passwords inside URLs; Canadian, UK and US postal codes; and dates of birth. Names and other words come from your own list.
Why doesn't it detect names automatically?
Because no pattern can tell that "Paris" or "Jordan" is a person in one sentence and a place in the next. Reliable name detection needs a language model, which would either run on a server (defeating the purpose) or download hundreds of megabytes to your browser, and still miss names or flag ordinary words. A short list of the names that actually appear in your text is faster and exact.
How does restoring the original values work?
Each distinct value gets one placeholder, kept in a mapping table in this tab: the same email always becomes [EMAIL_1]. When you paste the AI's reply, every placeholder found in the mapping is replaced with its original value. Matching ignores case and stray spaces inside the brackets, and survives formatting such as bold. Placeholders the AI invented, or ones from a different session, are left as they are and listed so you can check them.
Does redaction make the AI's answer worse?
Rarely, for most tasks. Drafting a reply, summarising a thread or fixing a config does not depend on the actual email address or card number, and consistent placeholders still let the model tell that two mentions refer to the same person. It matters when the value itself is the subject, for example asking whether a specific IBAN is valid; in that case redact everything else and leave that one value.
Is redacted text anonymous under GDPR?
No. Because you keep the mapping, this is pseudonymisation, which GDPR treats as still being personal data, although it is a recognised safeguard that reduces risk. Text can also identify someone through context, such as a job title and a small town. Use the tool to minimise what you share, and follow your organisation's policy for what may go into AI tools at all.
What each detector checks, and what it deliberately ignores
• Card numbers: 13 to 19 digits, spaces or dashes allowed, accepted only if they pass the Luhn checksum and begin with a Visa, Mastercard, American Express, Discover, JCB, Diners Club or UnionPay prefix of the right length. Order numbers, ISBNs and tracking numbers do not pass both tests.
• IBANs: the country's exact length from the ISO 13616 registry plus the mod-97 checksum, so a mistyped or invented IBAN is not matched.
• US SSN: only in 123-45-6789 or 123 45 6789 form, or 9 digits right after "SSN". Numbers starting 000, 666 or 9, and those with a 00 group or 0000 serial, are never issued and are skipped.
• Canadian SIN: 3-3-3 digits with a separator, or 9 digits after "SIN", passing the Luhn check and not starting with 0 or 8.
• Phone numbers: a leading + with 8 to 15 digits, North American 3-3-4 numbers with a valid area code, or national numbers starting with 0 that have separators and 10 or 11 digits. Dates, prices, version numbers and times are not matched.
• ZIP codes and dates of birth: a 5-digit number is a ZIP only after a state code ("CA 90210") or the word ZIP; a date is a birth date only after "born", "DOB", "date of birth" or "birthday". Everything else is left alone unless you turn on Every other date.
• Secrets: well-known key prefixes (sk-, sk-ant-, ghp_, github_pat_, glpat-, xoxb-, AKIA, AIza, sk_live_, SG., hf_ and more), JWTs, PEM private-key blocks, Bearer tokens, and the value in lines such as password=..., api_key: ... or DB_TOKEN=....
A safe routine for using AI with customer or employee data
Paste only what the task needs. A model asked to rewrite a reply does not need the full ticket history or the customer's account details.
Redact, then read the result before sending. Street addresses, free-text descriptions of a person and identifiers specific to your company are not detected automatically; add the identifying words to the custom list.
Keep the mapping in this tab, download it as JSON if the conversation will run long, and delete the file when you are done. The tool never stores it.
Restore the reply here, not in the AI chat. Pasting the mapping into the conversation would undo the point of redacting.
For regular or team use, prefer an AI plan with training disabled by default and a data processing agreement, and write down which data may be used with AI at all. Redaction reduces exposure; it does not replace that policy.
Related free tools
- Token Counter — Count tokens exactly for OpenAI models, estimate them for Claude, Gemini and Llama, see the cost, and watch the text split into tokens.
- JSON Formatter — Pretty-print, minify and validate JSON, with parse errors located by line and column. In your browser, no upload.
- LLM API Cost Calculator — Compare the cost of your workload across 40+ models, with caching, batch discounts, long-context tiers and reasoning tokens. Prices sourced and dated.
- Word Counter — Count words, characters, sentences and reading time, and check X, LinkedIn, Instagram, YouTube, SEO and SMS limits as you type.