An entity-only mailto anchor keeps an email hidden from a basic plaintext scraper, but that obfuscation survives a large text page only when the publishing pipeline does not decode the numeric entities back into letters. The Email Address Obfuscator emits a single element in which every code point of the visible address and the mailto target is a decimal numeric character reference such as a for lowercase a, so the source contains no literal address characters for a basic scraper to read. The published page, however, rarely contains only what the tool produced. A long article passes through a rich-text editor, a sanitizer, a template engine, a cache layer, and often a save-preview-publish loop, and each pass is a chance for an entity to be decoded back into a letter or for an ampersand to be re-escaped. None of those failures show up inside the editor preview. The address still looks right and the link still works, but the literal characters quietly return to the source. The encoding step is the easy part; the large-text publishing pipeline is the part that decides whether the obfuscation survives.

What Counts as Large Text for an Obfuscated Email
In this context, large text means any HTML body long enough that you cannot scan the final source in a few seconds. That covers long-form articles, knowledge-base entries, product documentation pages, conference speaker bios with several paragraphs, and contact sections inside a long footer. The size of the text does not change the encoding — every code point is still emitted as a decimal numeric reference — but it changes the number of places the entities can be rewritten. A short contact strip in a fixed template is usually safe; a paragraph buried inside a rich-text editor in a CMS is not.
What unifies these cases is that the address no longer lives alone. It sits inside a large document that gets passed through filters, sanitizers, template engines, and often a save-preview-publish loop. Each pass is a chance for an entity like a to become a plain a, or for an ampersand to be re-encoded as a. The obfuscator output is correct the moment you copy it; the question is whether the surrounding content system preserves it. Editors that show the source as plain text tend to preserve it. Editors that save into a normalized HTML tree tend to lose it.
How to Obfuscate an Email for a Large Text Page
The procedure is short, but the order matters. The Email Address Obfuscator generates the anchor; your editor decides whether it survives.
- Open the Email Address Obfuscator and enter the public contact address. The tool validates a practical unquoted form: one @ character, no whitespace or control characters, a domain with multiple labels, and no leading, trailing, or consecutive dots in the local part.
- Click generate. The tool emits a single anchor element whose visible text and mailto target use decimal numeric character references for every code point, so the published source contains no literal address characters.
- Switch your CMS or editor into HTML source mode — not a rich-text or visual mode. Paste the entire anchor into the source view at the exact spot in the large body where the link should appear.
- Save the page in source mode and immediately re-open the published or preview source. Confirm every numeric entity is intact and that no ampersand has been re-encoded.
- Click the rendered link once and confirm your mail client receives the exact address you entered. Clicking the link is the only check that proves decoding worked end-to-end.
- Repeat the source check after any save, republish, or plugin update. Long pages are usually edited more than once, and each edit is a chance to lose the encoding.
CMS Risks That Hit Harder in Long Pages
Entity-encoded mailto anchors fail in predictable ways, and large pages make every failure mode more likely because more components touch the source. The same patterns are documented in the Email Obfuscator Cheat Sheet: Output Rules and CMS Risks, but on a long page the failures cascade: a sanitizer that runs once at save runs again on every edit, a template engine that escapes ampersands once escapes them on every render, and a cache layer that serves an old decoded copy outlives the original mistake.
| Failure mode | What you see in preview | What visitors see on the live page |
|---|---|---|
| Rich-text editor decodes entities back to letters | Address looks correct | Address looks correct, but the source has lost the obfuscation |
| Template engine double-escapes ampersands | Address shows raw entity text like a | Address shows raw entity text on the live page |
| Sanitizer strips the mailto attribute | Anchor renders but link is dead | Anchor renders but link is dead |
| Cache layer serves an older decoded copy | Address looks correct | Address looks correct in source but is the wrong version |
The first row is the most common. A rich-text editor that runs a clean-HTML pass on save will translate every a back into a plain a. The page still looks right and the link still works, but the obfuscation is gone. The third row is the most painful: the sanitizer leaves the visible text alone but removes the href, leaving a clickable-looking address that does nothing. Both failures are invisible inside the editor preview, which is why a source check on the published page is non-negotiable for long content.
A second, quieter risk is the cache. Many CMS setups serve a cached HTML snapshot of the page that was generated the first time it was published. If that first pass decoded the entities, every later visitor sees the unobfuscated source even after the editor has been corrected. Cache-busting and a fresh deploy are the only reliable fixes, and they matter more for long pages because long pages tend to sit in cache longer.
When to Drop Entity Encoding and Use a Contact Form
Entity encoding is obfuscation, not security. A modern crawler can decode decimal numeric character references, walk the DOM, and follow the rendered mailto link. If the address you want to publish is sensitive, receives high-value abuse, or carries any expectation of confidentiality, entity encoding is the wrong tool. The contract behind this technique is honest about that: the technique deters basic plaintext matching and nothing more.
For meaningful abuse resistance, the standard answer is a server-side contact form with input validation, rate limiting, and spam controls. A form hides the destination address entirely, can throttle repeated submissions, and can require a CAPTCHA or a proof-of-work challenge. Pair the form with a mailbox-provider spam filter and a role address (such as a dedicated contact@ alias that is not tied to a personal login). These are the layers that actually reduce abuse over time.
Entity encoding still has a place when the goal is light source obscurity — a less-obvious address on a public contact page, a printable email link in a long article, or a footer address that is mainly there for humans. In those cases the cost of a contact form is too high for the benefit. The reader's job is to pick the right level of defense for the address being published, and to be explicit about which level they chose rather than implying security that the technique does not provide.
Verifying the Obfuscated Anchor After Publishing
Validation has three layers: the input the tool accepted, the source the page serves, and the link the browser resolves. Each one can pass while the others fail, so test all three rather than trusting any one.
| Layer | What to check | How to check |
|---|---|---|
| Input | Address shape was accepted | Re-enter the address and confirm the validator returns a result rather than an error message |
| Source | Numeric entities are intact | View the published page source and search for a literal address character — it should not appear |
| Behavior | Click opens the right mail client target | Click the rendered link once and confirm the address that appears in the new mail window matches the input |
The middle row is the one most teams skip, and it is the only row that proves the obfuscation still exists. If you find a literal a, an at-sign, or a domain fragment in the served source, the encoding did not survive publication. The WHATWG HTML specification defines numeric character references, and the decimal form (for example, a for a) is one of the two stable encodings a browser will decode per the character-references section of the HTML living standard. So when an anchor survives the pipeline, the result is ordinary HTML with no JavaScript dependency, no content-security-policy conflict, and no extra moving pieces.
A common workflow mistake is to check the source inside the CMS preview and assume the published page is the same. They are not always the same. The CMS preview is usually a clean pass through the editor; the published page goes through the template, the sanitizer, and the cache. The only source that matters is the one a visitor's browser would download — fetched directly with a private tab, an incognito window, or a curl call against the live URL.
Limits Worth Knowing Up Front
The Email Address Obfuscator accepts a narrow unquoted address shape on purpose. Quoted local parts, comments, IP-address literals, and single-label hosts are rejected because they do not fit the common public-website contact use case. Internationalized domains are serialized to an ASCII-compatible form so the output is reproducible across browsers. The validator does not test whether the mailbox exists, and the tool runs entirely in the browser — no upload, no server call. None of these limits block the large-text task, but they do shape which addresses the tool can encode.
The tool also produces nothing that hides the address from a competent crawler. Visitors can still right-click, copy the link, inspect the DOM, and read the address. Any visitor with the rendered page in front of them has the address. If that exposure is unacceptable, a contact form is the correct answer. If it is acceptable, the obfuscator result is a small, predictable piece of HTML that you can paste into a long article, a long footer, or any large body of text — provided you re-check the published source each time the page is edited. The tool's job is to produce the encoding; the publisher's job is to defend the address.
Related reading: Schema Markup Generator for Large Text: Safe JSON-LD.