La mayoría de generadores escupen lo que escribas en ellos. Este comprueba los códigos primero —contra las listas completas de la ISO 639-1 y la ISO 3166-1— y te avisa cuando un código perfectamente válido no es el que querías poner.
Una fila por cada versión de idioma o país. Las etiquetas autorreferenciales se añaden solas: son justo la parte que la gente se deja.
Contra la ISO 639-1 y la ISO 3166-1 enteras, no contra una lista corta con los veinte códigos de siempre.
Elige un método. Dos es peor que uno, porque los dos acaban separándose.
Conviene leerla antes de pegar el resultado en ningún sitio.
Si la página A declara la B como alternativa y la B no declara la A de vuelta, los buscadores tiran el par a la basura. No una etiqueta: el par. No hay error, ni aviso, ni nada en ningún informe que lo delate.
Por eso esta herramienta genera un único bloque idéntico para todas las URL del conjunto, en lugar de un bloque distinto por página. Si pegas lo mismo en todas partes, las etiquetas de retorno no pueden estar mal.
Una anotación hreflang le dice al buscador que varias URL son la misma página escrita para idiomas o países distintos, para que cada persona reciba la versión que le corresponde. Conviene ser preciso con los límites, porque casi toda la decepción alrededor de hreflang viene de esperar más de lo que da:
Hay tres sitios válidos, y deberías usar exactamente uno:
Link. Para archivos sin head donde poner etiquetas: PDF, imágenes, feeds. El mismo contenido, servido como cabecera de respuesta.Hacer dos a la vez es un lío frecuente y evitable. Las etiquetas del head se actualizan en un rediseño, el sitemap no, y de pronto la misma URL está declarada de dos maneras distintas por dos equipos que nunca han hablado entre ellos.
Todos estos pasan cualquier comprobador de sintaxis. Están mal igualmente, y son la razón de que esta herramienta lleve dentro la lista ISO completa en lugar de una expresión regular:
| Escrito | Lo que significa de verdad | Lo que se quería decir |
|---|---|---|
| en-UK | No válido: UK solo está reservado en la ISO 3166-1 | en-GB |
| uk | Ucraniano | en-GB |
| eu | Euskera | Europa, que hreflang no puede segmentar |
| es-LA | Español en Laos | Latinoamérica: usa es, o los países uno a uno |
| es-419 | No válido: 419 es un código M.49 de la ONU, no ISO 3166-1 | lo mismo que arriba |
| ar-ME | Árabe en Montenegro | Oriente Medio, que tampoco existe en hreflang |
| es_ES | No válido: el separador es un guion | es-ES |
| ES | No válido: un país no puede ir solo | es-ES |
| iw | Código retirado del hebreo | he |
El patrón es que hreflang no tiene ningún concepto de continente, de región ni de bloque comercial. Hay un idioma y, opcionalmente, un país. Todo lo de esa lista es alguien intentando expresar algo que el formato sencillamente no tiene, y quedándose con un código válido que significa otro sitio.
Para quien vende a Latinoamérica esto importa especialmente. No existe una etiqueta para la región. O usas es a secas y dejas que el idioma haga el trabajo, o segmentas país por país con es-MX, es-AR, es-CO — y entonces te toca justificar por qué esas páginas son distintas entre sí, porque si no lo son acabarán compitiendo.
es sirviendo a toda Latinoamérica gana a es-MX, es-AR y es-CO apuntando a tres páginas casi idénticas que luego compiten entre ellas.Genera y valida códigos. No rastrea tu sitio, así que no puede ver si las etiquetas que pegues acabaron de verdad en todas las páginas ni si las de retorno se corresponden en producción. Ese es otro trabajo, y es el que merece la pena hacer después de desplegar: en la guía práctica de hreflang explico el fallo de las etiquetas de retorno con detalle, y en la checklist de auditoría SEO internacional (en inglés) está el orden completo de revisión.
Link, o elementos xhtml:link en un sitemap XML. El head es lo normal; la cabecera existe para archivos sin head, como los PDF; el sitemap es más cómodo con muchas versiones. Usar dos a la vez es como aparecen las declaraciones contradictorias.en-GB. UK solo está reservado en la norma y la anotación se ignora. Es el error más frecuente en hreflang, y ni el navegador ni el gestor de contenidos te avisan.