← Todos los checks
AEOSeveridad típica: Medio

Contenido accesible sin JavaScript

Detecta si tu web es una SPA casi vacía sin JS, que los crawlers de IA no pueden indexar ni citar.

Qué comprueba

Este escáner detecta si tu web es una aplicación de una sola página (SPA) que llega casi vacía cuando se carga sin ejecutar JavaScript. Comprueba cuánto contenido real está disponible antes de que el navegador procese el código.

Por qué importa

Muchos crawlers de IA y buscadores no ejecutan JavaScript, así que si tu contenido solo aparece tras cargarlo con JS, para ellos tu página está en blanco y no pueden indexarla ni citarla. Esto es muy habitual en webs hechas con frameworks modernos por vibe coders sin saberlo.

Cómo se arregla

Usa renderizado en servidor (SSR) o generación estática (SSG) para que el HTML llegue ya con el texto y los enlaces principales. La mayoría de frameworks modernos ofrecen esta opción; activarla asegura que tanto Google como la IA vean tu contenido real.

Cómo funciona esta comprobación

Scanaris descarga el HTML de tu página tal y como lo sirve el servidor, sin ejecutar JavaScript, le quita los scripts, los estilos, las etiquetas noscript, las plantillas y los SVG, y mide cuánto texto visible queda en el body. Solo abre un hallazgo, de severidad media, si se cumplen dos condiciones a la vez: que ese texto tenga menos de 250 caracteres y que el HTML contenga un contenedor vacío de aplicación de una sola página, es decir, un <div> con id root, app, __next, __nuxt o q-app sin nada dentro. Una web con renderizado en servidor o generación estática tiene texto en el HTML inicial y no se marca nunca; una web con poco contenido pero sin contenedor de SPA tampoco. El umbral es deliberadamente bajo para no dar falsos positivos.

Por qué importa

Googlebot ejecuta JavaScript, pero en una segunda pasada que puede tardar días y con un presupuesto limitado. Los rastreadores de los asistentes de IA (GPTBot, ClaudeBot, PerplexityBot) en general no lo ejecutan: leen el HTML que les llega y punto. Si tu HTML es un <div id="root"></div> y un script, para ellos tu web está vacía. No pueden indexar lo que no ven ni citar lo que no leen, así que cuando alguien le pregunta a ChatGPT por tu categoría de producto, tú no existes. Es el problema más común de las webs hechas con herramientas de IA que generan una aplicación React o Vue de cliente puro, y el más invisible, porque en el navegador todo se ve perfecto.

Cómo arreglarlo

  • Activa el renderizado en servidor. En Nuxt viene activado por defecto (ssr: true); si lo desactivaste, vuelve a activarlo. En Next.js, el App Router renderiza en servidor salvo que marques el componente con 'use client' hasta arriba del todo. En Vite con React o Vue a secas no hay SSR: pasa a Next.js, Remix, Nuxt o Astro, o genera las páginas públicas como HTML estático.
  • Si migrar no es opción, prerenderiza: genera el HTML de las rutas públicas en el momento del build (Nuxt nitro.prerender, Next.js exportación estática, Astro por defecto) o usa un servicio de prerenderizado que sirva HTML renderizado a los bots.
  • Como mínimo, pon el contenido esencial en el HTML: el titular, la descripción de lo que haces y los enlaces principales, aunque la aplicación los sustituya al cargar. Es lo que verán los bots.
  • Comprueba las páginas que importan, no solo la home: el blog y las páginas de producto son las que los asistentes citan.

Comprueba que está arreglado

curl -s https://tudominio.com | sed -e 's/<script[^>]*>.*<\/script>//g' -e 's/<[^>]*>/ /g' | tr -s ' \n' ' ' | wc -c

Si el resultado se queda en unas pocas decenas de caracteres, el contenido lo pinta JavaScript. Debería contar miles. Otra forma: en el navegador, desactiva JavaScript en las herramientas de desarrollo y recarga; lo que veas es lo que ven los bots.

Preguntas frecuentes

Google me indexa bien. ¿Por qué me importa?

Porque cada vez más gente pregunta a un asistente en lugar de buscar, y esos asistentes no ejecutan tu JavaScript. Y porque incluso en Google, el renderizado diferido retrasa la indexación de tus cambios días. Las cifras y el porqué están en por qué las apps hechas con IA son invisibles para la IA.

Mi app es un panel privado tras login. ¿Me afecta?

No: lo que está tras autenticación no debe indexarse. Esta comprobación importa para las páginas públicas, las que quieres que aparezcan. Si tu web es solo el panel más una landing, haz que la landing sea HTML.

Tengo SSR y aun así sale poco texto.

Entonces el HTML trae estructura pero poco contenido real, y conviene revisar que la landing cuente algo. Los encabezados que organizan ese contenido los mira encabezados.

Compruébalo en tu web

Escanea tu web gratis y mira si este y otros 44 checks pasan, con un prompt de arreglo por cada fallo.

Escanear mi web gratis

Del blog

Checks relacionados