Free Email Obfuscator
Stop spambots from harvesting your email. Pick from six encoding methods, see a live preview, paste the HTML into your site.
Obfuscate an email
Defaults to the email itself
Sets the email subject
Pre-fills the email body when visitors click the link
Pick a method from the dropdown on the right. ROT13 is the recommended default — strong protection with a clickable link.
Obfuscated output
Trade-off: Source code looks completely unrelated to the real email (`xrivaaaa@rknzcyr.pbz`). Strong against pattern-matching harvesters.
HTML to paste in your site
Live preview (what visitors see)
How it works
Paste the email to protect
Type or paste the address you want to hide from spam bots. The tool validates syntax as you type — invalid emails won't generate obfuscated output.
Add link text, subject, body (optional)
Link text is the visible text visitors see on your page (`Contact Us`, `Email Me`). Subject and body pre-fill the email when the visitor clicks. Leave these blank for a plain link with the email as the text.
Pick a method and paste the HTML
Open the dropdown in the results panel, pick a method (ROT13 is the recommended default), copy the generated HTML, and paste it into your site's editor. The obfuscated email renders for visitors immediately.
How spam bots harvest emails (and why obfuscation works)
A spam harvester is just a script that fetches your page and runs a regex on the HTML. A common one: `[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,}`. Anything that matches that pattern, the bot scrapes into a list. That list gets sold to spammers, traded in forums, or fed into automated cold-email campaigns.
The whole job takes the bot a few milliseconds per page. They process millions of pages a day.
Obfuscation works by breaking the pattern the bot looks for. If the regex searches for `@`, we hide it as `@` or assemble it from JavaScript fragments at page load. The bot's regex misses it. The visitor's browser decodes everything normally and sees a clickable link.
Studies from MIT's CSAIL Lab (2003, still the most-cited research on this) found basic HTML entity obfuscation alone reduced incoming spam by 88% in their test domains. ROT13 with a JS decoder dropped it to 99%+. Modern bots have caught up to entity decoding, but JS-based methods still defeat most automated scrapers.
The six methods, in plain English
Use the dropdown in the tool above to switch between methods. Each one has different trade-offs:
1. HTML character entities
Every character in the email becomes its HTML hex code. `kevin@example.com` turns into `kev…`. The browser decodes entities at HTML parse time, so the link still works perfectly. No JavaScript needed. Fully accessible. Bots that only run regex against raw HTML miss it.
The downside: modern crawlers do parse HTML entities. Treat this as your baseline level of protection, not your bunker.
2. JavaScript Unicode escape
Each character is written as a `\u` escape sequence inside a JavaScript string. A tiny inline `<script>` writes the link to the page at runtime. Bots that skip JavaScript (most spam crawlers do) see escape sequences inside script tags they ignore. Browsers decode in milliseconds.
3. JavaScript split and concat
The email is broken into fragments stored in separate JavaScript variables (`var a = "kev", b = "in"`), then concatenated at runtime. Same protection as the Unicode method but easier to read in source — useful when you're debugging your site and want to spot the obfuscation quickly.
4. ROT13 + JS decoder (recommended)
Each letter shifts by 13 positions. `kevin@example.com` becomes `xrivaaa@rknzcyr.pbz`. The encoded string doesn't match an email regex at all — it looks like random text. A small decoder runs on page load, reverses the shift, and replaces the placeholder with a working `mailto:` link.
This is the strongest CLICKABLE method we offer. If you want the best balance of protection and UX, use this one.
5. Data attribute + base64
The email gets base64-encoded and stored in a `data-e` attribute. The link's `href` starts as `#`. When the visitor clicks, an inline handler decodes the base64 and rewrites the href to the real `mailto:` URL. The cleanest, most modern HTML output of the JS methods — screen readers see the link text correctly, bots see gibberish in a data attribute.
6. Canvas image
The email is drawn as a PNG image using HTML5 canvas, embedded as a `data:` URL in an `<img>` tag. Bots would need OCR to read the address, and virtually none do. Maximum protection. The trade-off: the email isn't a clickable link, isn't selectable, and screen readers can't announce it. Visitors have to type the address into their compose window manually.
Use this when bot resistance matters more than convenience — a footer contact email at a high-traffic site, for example.
Picking the right method (a decision guide)
Stop reading and answer one question:
Which constraint matters most for your visitors?
Accessibility comes first → HTML entities (#1). You want strong protection + a working click → ROT13 (#4) or data attribute (#5). ROT13 is stronger; data attribute is cleaner code. Maximum bot resistance, accept no click → Canvas image (#6). You're debugging and want readable obfuscation → JS split + concat (#3).
When in doubt, use ROT13 (method 4)
It's clickable, accessible to screen readers, defeats almost every automated harvester, and works in every modern browser back to IE9. Unless you have a specific reason to pick something else, default to this.
Adding obfuscated email to your site
The output is plain HTML with optional inline JavaScript. It works in every CMS that allows raw HTML embeds. Here's how to add it to the common platforms:
WordPress
- Open the page or post in the Gutenberg editor.
- Add a Custom HTML block where you want the email to appear.
- Paste the snippet from this tool. Click Preview to confirm it renders correctly.
- For Classic Editor: switch to the Text tab and paste the HTML there.
- For widget areas (sidebar, footer): use the Custom HTML widget.
Shopify
- In the theme editor, find the section where the email should appear (often "Contact" or "Footer").
- Add a Custom Liquid block to that section.
- Paste the obfuscator snippet directly. Liquid allows raw HTML — no escaping needed.
- For theme-wide changes, edit `theme.liquid` directly via Online Store → Themes → Edit code.
Webflow
- Open the Designer.
- Drag an Embed element (Components panel → Embed) into the page.
- Paste the snippet into the embed editor.
- Publish — the obfuscated email renders correctly on the live site.
Squarespace, Wix, Ghost, plain HTML
Any CMS that supports raw HTML blocks works. The snippet is self-contained — no external CSS or JS dependencies, no extra setup. Paste and go.
What obfuscation can't protect against
Be honest about the limits. Obfuscation reduces automated harvesting, but it's not a security boundary:
- Determined humans can still find your email. Anyone who visits your page and copies it from the rendered link has your address. Obfuscation defeats scripts, not people.
- Sophisticated bots can run JavaScript. A spam operation specifically targeting your site (rare but possible) can defeat methods 2-5 by executing scripts before scraping. Method 6 (image) holds up against those too.
- Your email leaks in other ways. Once you reply to a public mailing list, post to a forum with your email visible, or hit a contact form that gets compromised, the address is out. Obfuscation on your own site doesn't help.
- Old email lists already have you. If your address was on the web unobfuscated for years, it's almost certainly already in spam databases. Obfuscation slows new harvesting; it doesn't undo old.
When to use a contact form instead
Email obfuscation is the right call when you want a clickable email link on your page. It's the wrong call when:
- You get enough volume that managing replies in your personal inbox isn't viable. A contact form routes to a help-desk or CRM where it can be triaged.
- You want to capture structured data — name, company, request type. A contact form has fields. An email doesn't enforce anything.
- You never want your email exposed at all. A contact form keeps your address completely private — the submission goes through your form handler, you reply from your account, the visitor never sees the raw address.
For most personal sites, freelance portfolios, and small businesses, obfuscation is plenty. For larger operations, a form is usually the right call.
Five common mistakes to avoid
1. Putting your email in `alt` text on an image. Bots read alt attributes. If you obfuscate the visible email but leave `alt="kevin@example.com"`, the alt undoes everything.
2. Leaving your email plain in your DKIM/SPF records. Your DNS TXT records are public. Scrapers query them directly. Use a separate mailbox (no-reply, abuse, etc.) in DNS records, not your personal address.
3. Obfuscating one email but linking it from many pages with the email in the URL. If your contact page is at `example.com/contact-kevin@example.com.html`, the URL itself leaks the address. Use a slug, not the email.
4. Trusting a single method against all bots. Use different methods on different parts of your site. If a scraper figures out one, it doesn't automatically get the others.
5. Forgetting that browser extensions can decode anything. Some "harvest emails from page" browser extensions decode every method on this page in real time. They're used by individual researchers and salespeople, not bulk spam operations — but if you want to be invisible to them, use the canvas method (#6) or a contact form.
Beyond obfuscation: keeping inboxes healthy
Obfuscation protects the address you expose on your site. Two related habits keep your inboxes healthy whether or not your address gets harvested:
Verify the emails you collect. When visitors send through obfuscated links, you reply to whatever they sent — including invalid or disposable addresses. Run new contacts through our email verifier before adding them to a list. Three free checks per day, 200 free credits on signup.
Validate addresses on your forms. If you have a contact form or newsletter signup, validate the email syntax client-side before letting the form submit. Our email syntax checker shows you how RFC 5322 validation should work — use the same rules in your form code.
Extract emails from documents the safe way. If you have a long contract, RFP, or list with emails scattered through, our email extractor pulls them out, dedups them, and exports a clean list — without you having to scroll through manually.
Looking for someone's email?
If you need to FIND an email (not protect one), try our email permutator. It generates every common pattern for a name + company domain (kevin.smith@, ksmith@, kevin@, etc.) and pairs with our verifier to confirm which one is real.
Related Free Tools
Email Extractor
Paste a document, webpage, or any text — pull out every email address inside. Dedup, sort, filter by domain.
Open toolEmail Syntax Checker
Catch invalid email syntax with RFC 5322 validation, typo detection, and per-email error reasons. Bulk-paste up to 10,000 addresses.
Open toolSignature Generator
20+ templates, export-ready for Gmail and Outlook.
Open toolFrequently Asked Questions
Common questions about email obfuscation, bot resistance, and accessibility.
A technique that hides your email address from automated scrapers (spam bots) while keeping it readable and clickable for real visitors. The page source has garbled or encoded text where the email would be; the browser decodes it at render time so humans see a working link.
No, and any tool that claims it does is overselling. Basic scrapers (regex-based, no JS) get blocked by every method on this page. Sophisticated bots that execute JavaScript can defeat methods 2-5. The canvas image (method 6) holds up against virtually every bot since they'd need OCR. The honest framing: obfuscation cuts spam volume by a lot. It doesn't eliminate it.
Bot resistance ranking, strongest to weakest: canvas image > ROT13 > JS Unicode / JS split / data attribute (roughly tied) > HTML entities. The canvas image has the best protection but isn't clickable. For a clickable link with strong protection, ROT13 is the right default.
No. Google has been explicit about this — your contact email isn't a ranking signal, and obfuscating it doesn't penalize your page. What matters for SEO is content relevance, link structure, page speed, mobile-friendliness, and the standard ranking factors. Obfuscating a footer email has zero SEO impact.
Yes for methods 1-5. Screen readers parse the rendered DOM after JavaScript runs, so they see the same `<a>` tag visitors see. Method 6 (canvas image) is NOT screen-reader friendly — the image has no readable email in alt text (by design, to keep obfuscation working). Avoid method 6 if your audience includes screen-reader users.
WordPress: paste the HTML into a Custom HTML block (Gutenberg) or a text widget (Classic). Shopify: paste into a Custom Liquid section in the theme editor, or directly into `theme.liquid`. Webflow: drop an Embed element on the page and paste the HTML. For any other CMS: the snippet is plain HTML with optional inline JavaScript — works anywhere raw HTML embeds are allowed.
Method 6 (canvas image) renders your email as a PNG — there's no clickable link, the visitor has to type the address into their compose window. The trade-off buys you the strongest bot resistance available. The other five methods all produce clickable mailto links that open the visitor's email client.
If you only have one contact email and want it accessible everywhere, yes. Some site owners use one obfuscation method for the footer (visible across the site) and a different method for the dedicated contact page — a small bit of method diversity. Bots that crack one method don't automatically get the others.
Yes — our [email permutator](/tools/email-permutator) generates every common email pattern for a name and company domain. It pairs with our [email verifier](/tools/email-verifier) so you can confirm which permutation is the real address before sending anything.
Still have questions?
Contact our support team →Protect the emails you publish.
Verify the ones you collect.
Our Email Verifier confirms which addresses on your list are real, disposable, catch-all, or spam traps — before you send. 200 free credits, no card.
