<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MrPrivatiser</title>
    <description>The latest articles on DEV Community by MrPrivatiser (@privatiser).</description>
    <link>https://dev.to/privatiser</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3778114%2F4e107880-cc93-446f-a898-062a994c49ee.png</url>
      <title>DEV Community: MrPrivatiser</title>
      <link>https://dev.to/privatiser</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/privatiser"/>
    <language>en</language>
    <item>
      <title>How I anonymize sensitive data before sharing with AI</title>
      <dc:creator>MrPrivatiser</dc:creator>
      <pubDate>Tue, 17 Feb 2026 18:16:06 +0000</pubDate>
      <link>https://dev.to/privatiser/how-i-anonymize-sensitive-data-before-sharing-with-ai-keb</link>
      <guid>https://dev.to/privatiser/how-i-anonymize-sensitive-data-before-sharing-with-ai-keb</guid>
      <description>&lt;p&gt;Like most devs, I use ChatGPT and Claude daily. But I work with configs, logs, and infrastructure code full of real IPs, API keys, database passwords, and customer identifiers. I can't just paste that stuff in.&lt;/p&gt;

&lt;p&gt;Manually redacting things was tedious and I'd always miss something. So I built &lt;strong&gt;Privatiser&lt;/strong&gt; — a tool that automatically detects and replaces sensitive data with consistent pseudonyms, and lets you reverse it when you get the AI's response back.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;You paste in something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server_ip = "192.168.1.100"
DB_PASSWORD = "super_s3cret_passw0rd!"
API_KEY = "sk-ant-abcdefghijklmnopqrstuv"
admin_email = "jane.doe@acme-corp.com"
ssn = "123-45-6789"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And it becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server_ip = "10.0.0.1"
DB_PASSWORD = "REDACTED_SECRET_1"
API_KEY = REDACTED_SECRET_2
admin_email = "user-1@redacted.example.net"
ssn = "078-05-0001"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The pseudonyms are consistent — if the same IP appears 10 times, it gets the same replacement everywhere. So the AI can still reason about relationships in your text without seeing any real values.&lt;/p&gt;

&lt;p&gt;When you get the AI's response, paste it into the Deanonymize tab with the mapping and everything gets restored.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it catches
&lt;/h2&gt;

&lt;p&gt;It's not just simple find-and-replace. It uses pattern-based detection across a bunch of categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Secrets&lt;/strong&gt; — API keys (AWS, OpenAI, GitHub, Slack, Anthropic), JWTs, bearer tokens, SSH keys, PEM keys, connection strings, and 100+ keyword patterns like &lt;code&gt;password&lt;/code&gt;, &lt;code&gt;api_key&lt;/code&gt;, &lt;code&gt;token&lt;/code&gt;, &lt;code&gt;client_secret&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network&lt;/strong&gt; — IPv4 addresses (with CIDR), domains, emails, MAC addresses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PII&lt;/strong&gt; — Phone numbers, credit cards (Luhn-validated), SSNs, passports, IBANs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud&lt;/strong&gt; — AWS ARNs (structure preserved), account IDs, S3 buckets, Azure subscription IDs, GCP project IDs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identifiers&lt;/strong&gt; — UUIDs, plus 200+ keyword-based patterns for hostnames, usernames, database names, infrastructure names, endpoints, file paths, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also understands natural language context. Not just &lt;code&gt;password = "value"&lt;/code&gt; but also &lt;code&gt;password is secret123&lt;/code&gt;, &lt;code&gt;token set to abc123&lt;/code&gt;, &lt;code&gt;credentials were admin:pass&lt;/code&gt;, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;The core is a regex-based pattern engine that processes text in two phases.&lt;/p&gt;

&lt;p&gt;Patterns are sorted by priority — specific patterns like API key formats run before generic keyword-based patterns. This prevents a broad pattern from stealing a match that a more specific one should handle.&lt;/p&gt;

&lt;p&gt;There are validators to reduce false positives: Luhn algorithm for credit cards, SSN area number validation, skip lists for well-known cloud domains (so &lt;code&gt;s3.amazonaws.com&lt;/code&gt; doesn't get redacted as a hostname).&lt;/p&gt;

&lt;p&gt;Everything runs locally in your browser. No servers, no API calls, no telemetry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Web tool:&lt;/strong&gt; &lt;a href="https://privatiser.net" rel="noopener noreferrer"&gt;privatiser.net&lt;/a&gt; — paste text and try it right in your browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chrome extension:&lt;/strong&gt; &lt;a href="https://chromewebstore.google.com/detail/ooiocjkbbbbnnbilofkjmofbigbkjgcf" rel="noopener noreferrer"&gt;Chrome Web Store&lt;/a&gt; — auto-anonymizes when you paste into ChatGPT, Claude, Gemini, or Copilot&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firefox extension:&lt;/strong&gt; &lt;a href="https://addons.mozilla.org/firefox/addon/privatiser/" rel="noopener noreferrer"&gt;Firefox Add-ons&lt;/a&gt; — same thing for Firefox (currently in review)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The browser extension intercepts paste events on AI chat sites, anonymizes the content, and shows a toast with how many items were redacted. When you copy the AI's response, it automatically restores the original values.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;I'm looking at adding category toggles (so you can disable PII detection if you only care about secrets), an allowlist for values you want to skip, and better handling of &lt;code&gt;.env&lt;/code&gt; files.&lt;/p&gt;

&lt;p&gt;Would love to hear what patterns you'd want added or if there's something it misses for your use case.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>privacy</category>
      <category>security</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
