Cloudflare corrigió su script de ofuscación de emails (puede que fuera por mí)
El script de ofuscación de emails de Cloudflare bloqueaba el render. Un Product Manager de Cloudflare leyó este artículo y lanzó el fix. Aun así, conviene evitar los problemas de SEO y seguridad.
Compartir
¿Qué es la ofuscación de emails de Cloudflare?
Cloudflare Email Address Obfuscation es una función de Scrape Shield que oculta las direcciones de correo en las páginas a recolectores de emails y bots, mientras las mantiene visibles para los visitantes humanos. Viene activada por defecto en cada zona de Cloudflare.
Última revisión por Arjen Karel en abril de 2026
Actualización de abril de 2026: Cloudflare lo solucionó. Un Product Manager de Cloudflare me escribió por LinkedIn. Leyó este artículo y añadió el atributo defer a email-decode.min.js. La documentación oficial de Cloudflare ya lo confirma: el script ya no bloquea el render.

Defer es un cambio de una sola línea. Si no estaba ahí desde el principio, probablemente Cloudflare quería confirmar que no rompía sitios que dependen de decodificar las direcciones antes de DOMContentLoaded. Alguien del equipo hizo el trabajo. Hay que reconocer el mérito.
El funcionamiento es simple. El proxy edge de Cloudflare escanea el HTML en busca de cualquier cosa que parezca una dirección de correo. Reemplaza cada dirección por una cadena hexadecimal codificada con XOR e inyecta un pequeño script llamado email-decode.min.js para decodificar las direcciones en el navegador. El script pesa alrededor de 1,2 KB, ahora carga con defer y se elimina del DOM tras ejecutarse.
Hasta hace poco, ese script no cargaba con async ni con defer. Bloqueaba el render. Y lo hacía por una función que la mayoría de los visitantes nunca notará ni necesitará. Esa es la situación que este artículo describía originalmente, y la razón por la que Cloudflare lo solucionó.

Cómo afectaba la ofuscación de emails de Cloudflare a los Core Web Vitals

Antes del fix con defer, el script email-decode.min.js se inyectaba como un recurso render blocking. El navegador tenía que descargarlo, parsearlo y ejecutarlo antes de poder continuar renderizando la página. Esto tenía tres consecuencias:
1. Competía por el ancho de banda de red durante la ventana crítica de renderizado, retrasando el Largest Contentful Paint.
2. Bloqueaba el main thread, lo que podía empujar el Interaction to Next Paint al rango de "necesita mejorar".
3. Provocaba hasta cinco advertencias en las auditorías de Lighthouse: eliminar recursos render blocking, evitar long tasks en el main thread, reducir el tiempo de ejecución de JavaScript, evitar encadenar requests críticas y servir recursos estáticos con una política de caché eficiente.
Con defer ya implementado, el script se descarga en paralelo con el parseo del HTML y se ejecuta una vez parseado el documento. La advertencia de render blocking ha desaparecido.
Qué queda tras el fix
El main thread todavía tiene que parsear y ejecutar 1,2 KB de JavaScript. En un ordenador no es nada. En un teléfono Android de gama baja con la CPU ocupada, cada pequeña tarea en el main thread consume parte del presupuesto de INP. Si ya estás peleando por los últimos 50 ms de margen en el INP, este script es un elemento más en la cola.
Los problemas más graves, los que Cloudflare no solucionó, están más abajo.
Efectos secundarios en el SEO
Cloudflare reemplaza las direcciones de correo por enlaces que apuntan a /cdn-cgi/l/email-protection#[hex]. Estas URL devuelven un 404 a los crawlers, incluido Googlebot. El resultado: errores de "Soft 404" en Google Search Console. Las herramientas de auditoría SEO como Ahrefs y Screaming Frog los reportan como enlaces internos rotos, lo que genera ruido y enmascara problemas reales de rastreo. Si usas Cloudflare con la ofuscación de emails activada, revisa el informe de cobertura de Search Console para detectar estos errores fantasma.
¿Es realmente segura la ofuscación de emails de Cloudflare?
En realidad, no. Cloudflare utiliza un cifrado XOR de un solo byte donde la propia clave va incrustada en la cadena codificada. Todos los sitios protegidos por Cloudflare usan el mismo mecanismo de decodificación. A un spammer solo le hace falta implementar un decodificador para extraer las direcciones de correo de todos ellos.
Varios investigadores de seguridad han demostrado que la codificación es trivialmente reversible. El estudio sobre ofuscación de 2026 de Spencer Mortensen probó 25 métodos distintos contra más de 300 spammers diferentes usando direcciones de correo honeypot. Incluso una simple técnica CSS con display:none logró una tasa de bloqueo del 100% contra los recolectores. No necesitas un JavaScript con defer para ocultar una dirección de correo a los bots.
¿Deberías desactivarla de todos modos?
Si no necesitas la ofuscación de emails (y la mayoría de los sitios no la necesita), desactivarla elimina los errores de rastreo por soft 404 y esos últimos milisegundos de trabajo en el main thread. Así se hace:
1. Inicia sesión en el panel de Cloudflare.
2. Ve a Security > Settings (o a Scrape Shield en versiones anteriores del panel).
3. Cambia Email Address Obfuscation a OFF.
Eso es todo. El script desaparece de inmediato. Para una configuración completa de rendimiento en Cloudflare, consulta la mejor configuración de Cloudflare para aprobar los Core Web Vitals.
Desactívalo por página con Configuration Rules
Si quieres ofuscación de emails en la página de contacto pero no en las landing pages con mucho tráfico, usa una Configuration Rule:
1. Ve a Rules > Configuration Rules.
2. Crea una regla nueva y nómbrala (por ejemplo, "Desactivar ofuscación de emails en landing pages").
3. Define los criterios de coincidencia (hostname, ruta de la URL o ambos).
4. Añade el ajuste Email Obfuscation y cámbialo a Off.
5. Haz deploy.
También puedes excluir direcciones de correo individuales en el HTML envolviéndolas entre comentarios: <!--email_off-->email@example.com<!--/email_off-->
Si necesitas ofuscación: hazlo tú mismo
Si de verdad quieres ocultar las direcciones de correo a los bots, hay formas mucho mejores que no implican enviar ningún script antes de que el usuario haya mostrado interés. El mejor método: vincular un IntersectionObserver y decodificar el email just-in-time en cuanto entra en el viewport al hacer scroll. Es el mismo patrón de diferir hasta que sea necesario que utilizo para todo, desde embeds de YouTube hasta Google Maps.
Crea el email ofuscado
<a
class="email-hidden"
href="#"
data-email="aW5mb0BleGFtcGxlLmNvbQ==">
[email-hidden]
</a> Vincula el IntersectionObserver. Coloca este fragmento de JavaScript al final de la página.
<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>
Sube el script decode-email.js y reemplaza la función de decodificación de emails por la librería de decodificación que prefieras.
const emaildecode = (e) => {
let email = atob(e.dataset.email);
e.href = 'mailto:'+email;
e.innerHTML = email;
}
Comprueba el resultado
<a href="mailto:info@example.com">info@example.com</a> El email solo se decodifica cuando el visitante hace scroll y entra en el viewport. Cero impacto en el INP, sin errores de soft 404 para Googlebot y la codificación en base64 no es menos segura que el cifrado XOR de Cloudflare. Para verificar la mejora con visitantes reales, configura Real User Monitoring. Las puntuaciones de Lighthouse son útiles para depurar, pero los field data de usuarios reales son lo que Google utiliza para el ranking.

¿Necesitas una web más rápida?
Soy Arjen y llevo 17 años arreglando webs lentas. Si te encuentras con problemas que no puedes resolver por tu cuenta, envíame tu URL y hablamos.
Envíame tu URL
¿Por qué no funciona nuestro fix?
A veces la CDN sigue sirviendo el HTML antiguo, o el fix se metió en la plantilla de desktop y el móvil usa otra. Envíame tu URL y el problema, y te respondo con varias opciones. Primero reviso tus field data, luego dedicamos una hora a tu web, y en menos de un día tienes mis notas por escrito. 350 € sin IVA.
Envíame tu URL¿No tienes desarrollador para hacer el fix? Hago el trabajo yo mismo, en una copia de tu web.