Validador de hreflang

Una etiqueta que parece correcta en una página no vale nada hasta que la otra página la devuelve. Escribe una URL: el validador la descarga, después todas las alternativas que declara, y te muestra qué pares se corresponden y cuáles ignora Google.

Gratis, sin emailComprueba el conjunto enteroSe registra la dirección

Página que quieres comprobar

Cualquier página con hreflang. Se descargan hasta 25 páginas del conjunto, incluidas las alternativas que solo declaran las otras alternativas.

Por qué hay que comprobar el conjunto entero

Casi todos los comprobadores de hreflang leen una página y te dicen si sus etiquetas están bien escritas. Eso detecta erratas. Lo que no puede detectar es el fallo que más importa, porque ese fallo no está en la página que estás mirando.

Google lo dice sin rodeos: «If two pages don’t both point to each other, the tags will be ignored», es decir, si dos páginas no se apuntan mutuamente, las etiquetas se ignoran. Una página en alemán puede llevar un conjunto de anotaciones perfecto y aun así ignorarse, porque la página en inglés a la que apunta nunca le devuelve la referencia. En la página alemana no hay nada mal. La única forma de ver el problema es descargar la otra página y comparar, y en una web con diez mercados, hacerlo para cada par.

Eso es lo que hace este validador. Descarga la página que escribes, sigue cada alternativa que declara, sigue las alternativas que declaren esas páginas y comprueba cada par desde los dos extremos.

Cómo leer la matriz

Las filas son las páginas que declaran; las columnas, las páginas declaradas. Un conjunto sano es un bloque de ✓ con ● en la diagonal, porque cada página se incluye a sí misma y a todas las demás.

Una etiqueta de retorno que falta aparece como dos celdas que no se reflejan: un ✗ donde una página declara a otra sin ser declarada de vuelta, y un ○ en la esquina opuesta, donde debería estar la etiqueta de retorno. Un mercado roto se ve de un vistazo en su fila entera, y para eso sirve dibujarlo en lugar de listarlo.

Qué comprueba

  • Etiquetas de retorno. Cada par declarado, desde los dos lados.
  • Autorreferencias. Google: «Each language version must list itself as well as all other language versions»; cada versión debe incluirse a sí misma además de todas las demás.
  • URL completas. Google: las URL alternativas deben incluir el protocolo, es decir https://example.com/foo, no //example.com/foo ni /foo.
  • Códigos válidos. Contra la ISO 639-1 y la ISO 3166-1 completas, con las mismas reglas que el generador de hreflang, incluidos los códigos válidos que significan otro sitio, como es-LA, que es Laos.
  • Duplicados y x-default. El mismo código apuntando a dos URL, una URL declarada en dos idiomas distintos, más de un x-default, o ninguno en todo el conjunto.
  • Redirecciones, errores y canónicas. URL declaradas que redirigen o fallan, y páginas cuya canónica apunta a otra URL mientras llevan hreflang: dos señales que se contradicen.
  • Los dos métodos. Anotaciones en el head HTML y en la cabecera HTTP Link. Google dice que usar varios métodos a la vez no aporta ningún beneficio; el validador lo señala porque dos copias suelen acabar desincronizadas.

Algo que deliberadamente no señala: varios valores de hreflang apuntando a la misma URL. John Mueller, de Google, ha confirmado que está permitido: en-GB, en-IE, en-NL y en-BE pueden apuntar todos a una única página en inglés para Europa. Lo que sí se señala es una URL con dos idiomas distintos, porque rara vez una página está escrita en los dos.

Qué no puede ver

Lo digo claro, porque un validador que informa con seguridad sobre lo que no puede ver es peor que no tener ninguno:

  • hreflang en sitemaps XML. Las webs grandes a menudo lo declaran solo ahí. Si una página no muestra anotaciones, revisa el sitemap antes de concluir que no las tiene.
  • Etiquetas añadidas con JavaScript. El validador lee el HTML que envía el servidor, no lo que el navegador construye después.
  • Webs que bloquean las peticiones automáticas. Algunas responden con una verificación antibots en lugar de la página. El validador reconoce las más habituales y marca la página como desconocida, en vez de informar de una etiqueta de retorno que falta cuando en realidad es un cortafuegos.
  • Redirecciones por ubicación. La descarga sale de la red de Cloudflare, así que una web que redirige por país puede enseñarle al validador una página distinta de la que ven tus visitantes.
  • Conjuntos de más de 25 páginas. El validador indica cuántas URL más encontró y no descargó.

Qué pasa con la URL que escribes

A diferencia del generador y la calculadora, esta no puede funcionar enteramente en tu navegador: un navegador no tiene permitido descargar páginas de otras webs. Así que la URL va al servidor de esta web, que descarga las páginas públicas y devuelve solo las señales de hreflang, nunca el contenido de las páginas. Se registra la dirección que compruebas, con cuántas páginas tenía el conjunto y qué falló; el contenido de las páginas, nunca. Las peticiones se identifican como JorgeHorstHreflangChecker, para que los dueños de las webs sepan qué eran.

Con las etiquetas bien puestas, la siguiente pregunta es si las páginas que hay detrás merecen posicionar. Ahí es donde pierden de verdad la mayoría de las webs internacionales, y lo explico en la guía práctica de hreflang.

Preguntas

Comprobando el conjunto entero, no una página. Cada página tiene que incluirse a sí misma y a todas las alternativas, y cada alternativa tiene que devolverle la referencia: Google dice que si dos páginas no se apuntan mutuamente, las etiquetas se ignoran. Eso no se ve en el código de una sola página; hay que descargar cada alternativa y comparar, que es lo que hace este validador.
La anotación de la página B que apunta de vuelta a la A cuando A ya apunta a B. hreflang es una declaración mutua: A → B solo cuenta si también existe B → A. Una etiqueta de retorno que falta no genera ningún error en ninguna parte, y por eso es la forma más habitual de que falle hreflang.
Sí. John Mueller, de Google, lo ha confirmado: por ejemplo en-GB, en-IE, en-NL y en-BE apuntando a una única página en inglés para Europa. Lo que suele ser un error es una URL declarada en dos idiomas distintos.
Normalmente porque la web respondió con una verificación antibots en lugar de la página, o porque tardó más de ocho segundos. En los dos casos la página aparece como desconocida y no como rota, para que un cortafuegos nunca se informe como una etiqueta de retorno que falta.

Fuentes