Cloudflare heeft hun e-mailobfuscatiescript gefixt (ik heb dat misschien veroorzaakt)
Cloudflare's e-mailobfuscatiescript blokkeerde vroeger het renderen. Een PM bij Cloudflare las dit artikel en heeft de fix uitgerold. De SEO- en beveiligingsproblemen zijn nog steeds de moeite waard om te vermijden.

Wat is Cloudflare e-mailobfuscatie?
Cloudflare Email Address Obfuscation is een Scrape Shield-functie die e-mailadressen op je pagina's verbergt voor e-mailharvesters en bots, terwijl ze zichtbaar blijven voor menselijke bezoekers. Het is standaard ingeschakeld op elke Cloudflare-zone.
Laatst beoordeeld door Arjen Karel in april 2026
Table of Contents!
Update april 2026: Cloudflare heeft het gefixt. Een Product Manager bij Cloudflare stuurde me een bericht op LinkedIn. Hij las dit artikel en voegde het defer-attribuut toe aan email-decode.min.js. De officiële documentatie van Cloudflare bevestigt het nu: het script is niet langer render-blocking.

Defer is een aanpassing van één regel. De reden dat het er in de eerste plaats niet stond, was waarschijnlijk omdat Cloudflare wilde bevestigen dat het geen sites zou breken die ervan afhankelijk zijn dat adressen vóór DOMContentLoaded worden gedecodeerd. Iemand in het team heeft het werk gedaan. Ere wie ere toekomt.
De manier waarop het werkt is simpel. Cloudflare's edge proxy scant je HTML op alles wat op een e-mailadres lijkt. Het vervangt elk adres door een XOR-gecodeerde hex-string en injecteert een klein script genaamd email-decode.min.js om de adressen in de browser te decoderen. Het script is ongeveer 1,2 KB, laadt nu met defer en verwijdert zichzelf uit de DOM na uitvoering.
Tot voor kort werd dat script niet geladen met async of defer. Het was render-blocking. En het deed dit voor een functie die de meeste bezoekers nooit zullen opmerken of nodig hebben. Dat is de situatie die dit artikel oorspronkelijk beschreef, en de reden waarom Cloudflare het heeft gefixt.

Hoe Cloudflare e-mailobfuscatie vroeger de Core Web Vitals beïnvloedde

Vóór de defer-fix werd het email-decode.min.js-script geïnjecteerd als een render-blocking resource. De browser moest het downloaden, parseren en uitvoeren voordat het kon doorgaan met het renderen van de pagina. Dat had drie gevolgen:
1. Het concurreerde om netwerkbandbreedte tijdens de kritieke renderperiode, wat de Largest Contentful Paint vertraagde.
2. Het blokkeerde de main thread, wat de Interaction to Next Paint naar het "needs improvement" territorium kon duwen.
3. Het activeerde tot wel vijf Lighthouse-auditwaarschuwingen: eliminate render-blocking resources, avoid long main-thread tasks, reduce JavaScript execution time, avoid chaining critical requests, en serve static assets with an efficient cache policy.
Met defer nu op zijn plaats downloadt het script parallel aan het HTML-parseren en wordt het uitgevoerd nadat het document is geparset. De render-blocking waarschuwing is verdwenen.
Wat er overblijft na de fix
De main thread moet nog steeds 1,2 KB aan JavaScript parseren en uitvoeren. Op een desktop is dat niets. Op een goedkope Android-telefoon met een drukke CPU snoept elke kleine main-thread taak wat van je INP-budget af. Als je al vecht voor de laatste 50 ms INP-headroom, is dit script nog een extra ding in de wachtrij.
De grotere problemen, degene die Cloudflare niet heeft gefixt, staan hieronder.
SEO-bijwerkingen
Cloudflare vervangt e-mailadressen door links die wijzen naar /cdn-cgi/l/email-protection#[hex]. Deze URL's sturen een 404 terug naar crawlers, inclusief Googlebot. Het resultaat: "Soft 404"-fouten in Google Search Console. SEO-audittools zoals Ahrefs en Screaming Frog rapporteren ze als kapotte interne links, wat ruis creëert die echte crawlproblemen maskeert. Als je Cloudflare gebruikt met e-mailobfuscatie ingeschakeld, controleer dan je Search Console coverage-rapport op deze spookfouten.
Is Cloudflare e-mailobfuscatie eigenlijk wel veilig?
Niet echt. Cloudflare gebruikt een single-byte XOR cipher waarbij de sleutel is ingebed in de gecodeerde string zelf. Elke door Cloudflare beschermde site gebruikt hetzelfde decoderingsmechanisme. Een spammer hoeft maar één decoder te implementeren om e-mailadressen uit allemaal te extraheren.
Beveiligingsonderzoekers hebben aangetoond dat de codering triviaal omkeerbaar is. Spencer Mortensen's obfuscatie-onderzoek uit 2026 testte 25 verschillende methoden tegen 300+ verschillende spammers met behulp van honeypot e-mailadressen. Zelfs een simpele CSS display:none techniek behaalde een blokkeringspercentage van 100% tegen harvesters. Je hebt geen uitgesteld JavaScript nodig om een e-mailadres te verbergen voor bots.
Moet je het nog steeds uitschakelen?
Als je geen e-mailobfuscatie nodig hebt (en de meeste sites hebben dat niet), verwijdert het uitschakelen ervan de soft 404 crawl-fouten en de laatste paar milliseconden aan main-thread werk. Hier is hoe:
1. Log in op je Cloudflare-dashboard.
2. Ga naar Security > Settings (of Scrape Shield in oudere dashboardlay-outs).
3. Zet Email Address Obfuscation op OFF.
Dat is alles. Het script verdwijnt onmiddellijk. Voor een volledige Cloudflare-prestatieconfiguratie, zie de beste Cloudflare-configuratie om de Core Web Vitals te halen.
Uitschakelen per pagina met Configuration Rules
Als je e-mailobfuscatie op je contactpagina wilt, maar niet op landingspagina's met veel verkeer, gebruik dan een Configuration Rule:
1. Ga naar Rules > Configuration Rules.
2. Maak een nieuwe regel, geef het een naam (bijv. "Disable email obfuscation on landing pages").
3. Stel de matchingcriteria in (hostnaam, URL-pad, of beide).
4. Voeg de Email Obfuscation instelling toe en zet deze op Off.
5. Deploy.
Je kunt ook individuele e-mailadressen in je HTML uitzonderen door ze in comments te wikkelen: <!--email_off-->email@example.com<!--/email_off-->
Als je obfuscatie nodig hebt: doe het zelf
Als je e-mailadressen voor bots wilt verbergen, zijn er veel betere manieren waarbij geen enkel script wordt verzonden voordat de gebruiker interesse heeft getoond. De beste aanpak: koppel een IntersectionObserver en decodeer de e-mail just-in-time wanneer deze in beeld scrolt. Dit is hetzelfde defer until needed-patroon dat ik gebruik voor alles van YouTube-embeds tot Google Maps.
Creëer de geobfusceerde e-mail
<a
class="email-hidden"
href="#"
data-email="aW5mb0BleGFtcGxlLmNvbQ=="
>
[email-hidden]
</a> Koppel de IntersectionObserver. Plaats dit stukje JavaScript onderaan de pagina.
<script>
const emailtag = document.querySelector('.email-hidden');
let observer = new IntersectionObserver((entries) => {
entries.map((entry) => {
if (entry.isIntersecting) {
let script = document.createElement('script');
script.onload = function () {
emaildecode(entry.target)
};
script.src = 'decode-email.js';
document.head.appendChild(script);
}
});
}).observe(emailtag);
</script>
Upload het email-decode script decode-email.js en vervang de e-mail decoderingsfunctie door een decoderingsbibliotheek naar eigen keuze.
const emaildecode = (e) => {
let email = atob(e.dataset.email);
e.href = 'mailto:'+email;
e.innerHTML = email;
}
Controleer de resultaten
<a href="mailto:info@example.com">info@example.com</a> De e-mail wordt alleen gedecodeerd wanneer de bezoeker deze in beeld scrolt. Nul impact op INP, geen soft 404-fouten voor Googlebot, en de base64-codering is niet minder veilig dan Cloudflare's XOR cipher. Om de verbetering met echte bezoekers te verifiëren, stel je Real User Monitoring in. Lighthouse-scores zijn handig voor het debuggen, maar veldgegevens van echte gebruikers is wat Google gebruikt voor ranking.
I make sites pass Core Web Vitals.
500K+ pages for major European publishers and e-commerce platforms. I write the fixes and verify them with field data.
How I work
