El atributo HTML lang
Qué hace el atributo HTML lang, por qué Google lo ignora para detectar el idioma pero Bing lo usa, en qué se diferencia de hreflang y por qué sigue siendo importante para la accesibilidad y el aviso de traducción automática del navegador.
Idiomas
1 señal de evidencia en esta página
- Herramienta activa relacionadaOn-Page SEO Checker
El atributo HTML lang —establecido en la raíz como <html lang="en"> (o una variante regional como en-US)— declara el idioma natural del contenido de ESTE documento mediante una etiqueta BCP 47. No es lo mismo que hreflang: lang describe la página en la que está; hreflang declara URL en otros idiomas para otras páginas. Google es tajante: ignora lang para detectar el idioma («we don't use that at all… almost always wrong» —Mueller) y usa algoritmos de contenido. Bing es lo contrario: su Webmaster Blog de 2011 nombra <html lang> como señal secundaria de ubicación del documento, detrás de la meta content-language. Independientemente del peso en búsqueda, lang es un atributo de accesibilidad obligatorio (WCAG 3.1.1): dirige la pronunciación de los lectores de pantalla y el aviso de traducción automática del navegador, y «missing document language» sigue siendo uno de los seis fallos principales de WebAIM Million. La excepción de Google: etiquetar bloques traducidos automáticamente con lang="es-x-mtfrom-en". Establece un valor válido, mantenlo coherente con hreflang y no dejes lang="en" de plantilla en contenido que no esté en inglés.
TL;DR — El atributo HTML
lang— ellang="en"de la etiqueta de apertura<html>de tu página — indica a los navegadores y lectores de pantalla en qué idioma está escrito el contenido. Es fácil confundirlo con hreflang, pero son distintos:langdescribe esta página; hreflang apunta a tus otras versiones lingüísticas. Google no usalangpara detectar el idioma de una página, aunque el atributo sigue importando para la accesibilidad y para que el navegador ofrezca traducir una página.
Qué es el atributo lang
Cerca de la parte superior de la mayoría de las páginas web hay una etiqueta parecida a esta:
<html lang="en">Ese lang="en" es el atributo HTML lang. Su única función es declarar el idioma en el que está escrito el contenido de la página: en para inglés, es para español y de para alemán. Puedes concretarlo más con una región: en-US para inglés estadounidense, en-GB para inglés británico y pt-BR para portugués brasileño.
Es un detalle pequeño, pero varios sistemas lo leen:
- Los lectores de pantalla lo usan para pronunciar correctamente las palabras: una voz inglesa leyendo texto francés suena como un galimatías. Evidence for this claim WCAG 2.2 success criterion 3.1.1 requires the default human language of a page to be programmatically determinable, and W3C lists lang on the html element as a sufficient HTML technique. Scope: WCAG 2.2 Level A language-of-page requirement for HTML documents. Confidence: high · Verified: W3C: Understanding Language of Page
- Los navegadores lo usan (junto con el texto real) para decidir si muestran «¿Traducir esta página?».
- Google en gran medida lo ignora (más adelante, en la pestaña Advanced, explicamos por qué).
lang no es hreflang
Esta es la confusión que lleva a la mayoría de la gente a una página como esta. Esta es la diferencia en una sola línea:
lang= «el contenido de esta página está en este idioma». Un valor, establecido en tu etiqueta<html>.- hreflang = «estas son las otras URL que corresponden a las versiones alemana, española y francesa de esta página». Un conjunto de enlaces que apunta a otras páginas.
lang es una autodescripción. Hreflang es un mapa de tus páginas alternativas. Un sitio sencillo de un solo idioma necesita un lang correcto y ningún hreflang. Si gestionas un sitio multilingüe, tendrás ambos, y deberían coincidir entre sí.
¿Qué valor debes usar?
Usa un código de idioma real, no uno inventado:
- Solo el idioma si no te importan las variantes regionales:
en,es,fr. - Idioma más región si sí te importan:
en-US,en-GB,pt-BR.
No inventes códigos como eng o en-UK (el código correcto para el Reino Unido es GB, no UK). Tampoco dejes el valor predeterminado lang="en" en una página cuyo contenido no está realmente en inglés: es el error más común y causa problemas reales con los avisos de traducción y los lectores de pantalla.
¿Quieres la versión más profunda —por qué Google lo ignora exactamente, cómo lo usa Bing, las reglas de accesibilidad y la historia de la traducción automática del navegador—? Cambia a la pestaña Avanzado.
TL;DR —
langdeclara el idioma natural de este documento (<html lang="en">, o una variante regional comoen-US) mediante una etiqueta BCP 47. Es un mecanismo distinto de hreflang, que declara URL en otros idiomas; la documentación de Google agrupa ambos como elementos que no usa para detectar el idioma de una página. Mueller: “we don’t use that at all… almost always wrong.” (traducción) «no lo usamos en absoluto… casi siempre es incorrecto». Independientemente de su peso en búsqueda, un idioma de página determinable programáticamente es un requisito WCAG 3.1.1 de nivel A, y el atributo HTMLlanges la técnica estándar. Permite la pronunciación de los lectores de pantalla y el aviso de traducción automática del navegador, y «missing document language» sigue siendo uno de los seis fallos principales de WebAIM Million. La excepción de Google: etiquetar los bloques traducidos automáticamente conlang="es-x-mtfrom-en". Establece un valor válido, mantenlo coherente con hreflang y elimina ellang="en"de plantilla en las páginas que no estén en inglés.
Qué declara realmente el atributo lang
El atributo HTML lang es un atributo global: técnicamente puede ir en cualquier elemento, pero el que más importa está en la raíz: <html lang="en">. Su valor es una etiqueta de idioma BCP 47, ya sea un subtag de idioma por sí solo (en, es, de) o un par de idioma y región (en-US, en-GB, pt-BR, zh-Hans).
Lo que declara es limitado y específico: el idioma natural del contenido textual del documento en el que está establecido. No es el idioma de tus páginas alternativas ni el país al que te diriges; solo dice «las palabras de esta página están en este idioma».
Evidence for this claim The HTML lang attribute specifies an element's language using a valid BCP 47 language tag; on the root html element it establishes the document's default language. Scope: WHATWG HTML language semantics and IETF BCP 47 tag syntax. Confidence: high · Verified: WHATWG: The lang attribute IETF RFC 5646 Evidence for this claim WCAG 2.2 success criterion 3.1.1 requires the default human language of a page to be programmatically determinable, and W3C lists lang on the html element as a sufficient HTML technique. Scope: WCAG 2.2 Level A language-of-page requirement for HTML documents. Confidence: high · Verified: W3C: Understanding Language of PageConviene interiorizar tres precisiones, extraídas de la referencia de MDN:
- Solo valores válidos. Una etiqueta BCP 47: no un código inventado de tres letras (
eng), no el nombre completo de un idioma y noen-UK(el subtag de región para el Reino Unido esGB). Los valores no válidos se tratan como si no existieran. Además, que algo tenga una sintaxis correcta no significa que sea correcto:lang="en"es una etiqueta perfectamente válida que sigue siendo incorrecta en una página francesa. La validez es el mínimo, no una garantía de que el valor coincida con el contenido (más adelante veremos la trampa del valor predeterminado de plantilla). - Vacío no es lo mismo que ausente. Un
lang=""explícito significa «idioma desconocido»: un estado deliberado. La ausencia real del atributo es otro tipo de fallo, y las herramientas de accesibilidad lo señalan como ausente, no como explícitamente desconocido. - El valor raíz es un valor predeterminado, no un bloqueo.
<html lang>establece lo que hereda cada descendiente salvo que se sobrescriba; restablecelanglocalmente en cualquier elemento que contenga un cambio real de idioma (consulta «Establécelo también en el elemento que cambia» más adelante). No confundas esta declaración dentro del documento con la cabecera de respuesta HTTPContent-Language: esa cabecera describe metadatos de transporte de la respuesta, no el documento analizado, y no sustituye alangpara la herencia por elemento ni para la accesibilidad.
lang frente a hreflang: la confusión, resuelta
Si has llegado aquí desde una duda sobre hreflang, esta es la sección que buscas. Se confunden constantemente porque ambos están relacionados con el idioma, ambos viven en la parte superior del documento o cerca de ella y ambos usan códigos parecidos. Pero cumplen funciones distintas.
La explicación más clara procede directamente de la documentación de Google sobre las versiones localizadas de tus páginas, que agrupa los dos precisamente para decir que no usa ninguno para detectar el idioma:
“Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page; instead, we use algorithms to determine the language.” (traducción) «Google no usa hreflang ni el atributo HTML lang para detectar el idioma de una página; en su lugar, utiliza algoritmos para determinarlo.»
Léelo con atención. Google menciona lang y hreflang juntos, como dos elementos separados que no usa para averiguar en qué idioma está una página. Detecta el idioma a partir del contenido visible y renderizado.
Entonces, ¿cuál es la diferencia real?
langes una autodescripción: un valor en<html>(o en cualquier elemento) que dice «el contenido de este documento está en este idioma». Lo leen los navegadores, lectores de pantalla y correctores ortográficos; lo usa Bing y Google lo ignora para detectar el idioma.- hreflang es un mapa entre páginas: un conjunto de anotaciones
<link rel="alternate">(o su equivalente en sitemap o cabecera) que enumera las otras URL que son versiones alternativas de idioma o región de esta página y el idioma al que se dirige cada una. Es una señal de enrutamiento que Google sí usa para mostrar la variante de URL correcta en los resultados, no una señal de detección.
Pueden y a menudo deben coexistir. Una página en español de México lleva <html lang="es-MX">, que describe su propio contenido, y un conjunto de etiquetas hreflang que apunta a sus páginas hermanas en-US, en-GB y otras. La implementación completa de hreflang —los tres métodos, la regla de enlaces recíprocos, la regla autorreferente y la frecuencia con que se rompe a escala— merece su propio análisis; este artículo no la vuelve a derivar. Quédate con esto: lang es la mitad sencilla de la pareja (un valor, un elemento, sin reciprocidad) precisamente porque no contiene la complejidad de la relación entre páginas de hreflang, que John Mueller calificó en una ocasión como «uno de los aspectos más complejos del SEO». Que sea fácil de establecer no significa que suela ser correcto.
The root lang attribute gives one page a BCP 47 language self-description used by browsers and screen readers. Hreflang is a reciprocal cross-page map between alternate URLs, such as en-US and es-MX versions. Google detects a page's language from visible content rather than either annotation, but the lang value should remain accurate and consistent with the hreflang entry for the same URL.
© Patrick Stox LLC · CC BY 4.0 ·
¿Es el atributo lang un factor de posicionamiento de Google?
Respuesta corta: no, y Google ha sido inusualmente tajante al respecto. La declaración definitiva es de John Mueller, recogida por Barry Schwartz en Search Engine Roundtable, en Google: ignoramos el atributo HTML lang. Cuando le preguntaron cuánta importancia tenía declarar el idioma de una página en HTML, Mueller dijo:
“We don’t use that at all. So we use the hreflang links if you have that if you have different language versions. But the language attribute within the HTML markup is something we don’t use at all. We’ve found that this language markup is something that is almost always wrong. So we tend to ignore that.” (traducción) «No lo usamos en absoluto. Si existen versiones en distintos idiomas, utilizamos los enlaces hreflang. El atributo de idioma incluido en el marcado HTML no interviene: hemos comprobado que casi siempre es incorrecto y, por eso, tendemos a ignorarlo.»
Esa frase, «casi siempre es incorrecto», es la clave. Google no ignora lang porque «no sea importante», sino porque la señal no es fiable a escala web. La gente deja valores predeterminados de plantilla lang="en" después de localizar el contenido; las plantillas de CMS y frameworks envían un valor predeterminado que nunca se actualiza (el código generado por Vue CLI, por ejemplo, fija lang="en" independientemente de lo que construyas). Cuando una señal se equivoca con tanta frecuencia, la decisión de ingeniería sensata es dejar de confiar en ella y detectar el idioma directamente a partir del contenido, que es exactamente lo que Google dice que hace. Esa cita de 2016 es antigua, pero la documentación actual de Search Central citada arriba reitera la misma política de forma independiente; trátala como orientación vigente y no retractada, no como un caso aislado obsoleto.
La única excepción: contenido traducido automáticamente
Hay un único lugar concreto y limitado donde la documentación de Google sí presta atención a un valor de estilo lang. Si publicas contenido traducido automáticamente, la guía de resultados traducidos de Google te pide marcar esos bloques con un formato especial: lang="<target>-x-mtfrom-<source>", por ejemplo lang="es-x-mtfrom-en" para contenido traducido automáticamente del inglés al español. Esa es la excepción que confirma la regla: Google ignora lang para la detección general del idioma, pero definió y lee esta convención de etiquetado específica. (El mecanismo relacionado, si quieres excluirte por completo de las funciones de traducción, es la regla notranslate: «To opt out of all translation features in Google Search, use the notranslate rule, which can be implemented as a meta tag or an HTTP header» (traducción) «Para excluirte de todas las funciones de traducción en Google Search, usa la regla notranslate, que puede implementarse como una metaetiqueta o una cabecera HTTP» según la misma documentación.)
¿Usa Bing el atributo lang?
Sí, y aquí lang adquiere una importancia bastante mayor de lo que sugiere la historia de «Google lo ignora». La postura de Bing es la opuesta a la de Google y está poco cubierta.
En una publicación de 2011 del Webmaster Blog, Cómo indicar a Bing el país y el idioma de tu sitio web, Bing expone un orden de prioridad de señales de «ubicación del documento» que usa para la relevancia. El orden, de arriba abajo:
- La metaetiqueta
content-languageen el<head>(<meta http-equiv="content-language" content="en-us">). - El atributo
<html lang="en-us">y después el atributo<title lang="en-us">, como alternativas: «the priority order for these tags is:<meta>,<html>,<title>» (traducción) «el orden de prioridad de estas etiquetas es:<meta>,<html>,<title>». - ccTLD.
- Búsqueda de Reverse-IP, usada solo cuando las señales superiores no son concluyentes.
El consejo de Bing es elegir una opción y ser coherente: «It’s best that you use one option, instead of multiple options here» (traducción) «es mejor usar una opción en lugar de varias». Así que, a diferencia de Google, Bing usa explícitamente <html lang> como una señal real de orientación, aunque de menor prioridad. Para un sitio con tráfico de Bing significativo, eso cambia la acción recomendada: establece lang correctamente y considera añadir una metaetiqueta content-language coincidente.
Esto también cierra el círculo con el lado hreflang: Bing apenas usa hreflang como lo hace Google; content-language más lang es su mecanismo paralelo.
Por qué el atributo lang sigue importando: accesibilidad
Incluso dejando completamente de lado la búsqueda, lang se gana su lugar. Es un atributo de accesibilidad obligatorio: el criterio de éxito 3.1.1 de WCAG (nivel A) exige que el idioma humano predeterminado de cada página pueda determinarse programáticamente, lo que en la práctica significa un <html lang> válido. Otro criterio, el 3.1.2, cubre el marcado de los cambios de idioma dentro de una página.
Los efectos posteriores son concretos y están bien documentados (el artículo de Adrian Roselli On Use of Lang Attribute enumera muchos): los lectores de pantalla usan lang para elegir el motor y la voz de pronunciación correctos (el motor fonético de JAWS y el cambio automático de voz de VoiceOver); CSS hyphens: auto depende de él; el comportamiento de spellcheck se basa en él; la representación de las comillas y la selección de la fuente CJK predeterminada lo siguen, y las pantallas Braille se comportan de forma distinta con él. La forma exacta en que se manifiesta cada efecto varía según el lector de pantalla, el navegador y la voz instalada —las propias pruebas de Roselli muestran que JAWS y VoiceOver no se comportan de forma idéntica—, así que trata un valor lang correcto como habilitador del comportamiento adecuado, no como una garantía de una experiencia idéntica en todas las pilas de tecnología asistiva.
Y no es un problema resuelto. Según el informe actual de WebAIM Million, «missing document language» afecta al 13,5 % de las páginas de inicio: es el sexto fallo automatizado de accesibilidad más común de la web. La tasa mejora (baja desde el 15,8 % del año anterior, y desde el 17,1 % y el 18,6 % de los años previos), pero «un problema grande y en descenso» sigue siendo un problema. Las propias herramientas de Google reflejan este encuadre: las comprobaciones html-has-lang y html-lang-valid de Lighthouse están en la categoría Accessibility, no en la de SEO, una buena señal de que incluso las herramientas de desarrollo de Google clasifican lang como una cuestión de accesibilidad y no de posicionamiento. Esas comprobaciones se basan en la regla de axe-core del mismo nombre de Deque, que clasifica la ausencia de lang como un problema «Serious» de nivel A de WCAG 2,0/2,1.
Comportamiento del navegador: el aviso de traducción automática
Hay otro comportamiento visible que controla lang: el aviso del navegador «¿Traducir esta página?». Chrome y otros navegadores ponderan lang junto con el análisis del texto visible real al decidir si ofrecen una traducción. Un valor incorrecto o ausente puede fallar en ambos sentidos: ofrecer por error traducir una página que ya está en el idioma de la persona lectora, o no ofrecerlo en una página realmente extranjera.
El ejemplo real más llamativo es el de Manuel Matuzovic, el atributo lang: navegadores que cuentan mentiras: la emisora austríaca ORF.at publicó contenido alemán con lang="en", así que la traducción automática de Chrome trató el texto alemán como inglés y lo «tradujo», convirtiendo el nombre del distrito vienés «Liesing» en la palabra inglesa «lies». Esa es la trampa del valor predeterminado de plantilla que produce un error visible para la persona usuaria, exactamente el tipo de problema al que se refería el «casi siempre es incorrecto» de Mueller.
Cómo establecerlo correctamente
- Usa una etiqueta BCP 47 válida. Solo el subtag de idioma (
en,es,fr) si no necesitas distinguir regiones; idioma y región (en-US,en-GB,pt-BR) si sí. Obtén los códigos del Registro de Subtags de Idioma de IANA; no los inventes y recuerda:GB, noUK. - Establécelo también en el elemento que cambia. Para una frase extranjera incrustada en una página por lo demás monolingüe, restablece
langlocalmente:<span lang="fr">c'est la vie</span>. Los descendientes sin atributo heredan ellangde su ancestro más cercano, así que el valor raíz cubre todo lo que no sobrescribas. - Elimina el valor predeterminado de plantilla. El
lang="en"que trae tu plantilla o CMS solo es correcto si el contenido está realmente en inglés. Este es el fallo que señaló Mueller y el error de ORF.at en miniatura: audítalo. - Mantén lang y hreflang coherentes. Si el
langde una página dicees-MXpero la anotación hreflang de esa misma URL diceen, hay un desajuste. Es exactamente el problema «Desajuste entre hreflang y HTML lang» que documenté en la guía de hreflang de Ahrefs, donde lo expresé así: «Google doesn’t use the HTML language attribute, but other search engines and browsers do. It’s important to keep these two attributes consistent with one another» (traducción) «Google no usa el atributo de idioma HTML, pero otros motores de búsqueda y navegadores sí. Es importante mantener coherentes estos dos atributos entre sí». Google ignora la partelangde esa comparación, pero un desajuste sigue indicando que algo está mal configurado, por eso las herramientas de auditoría de sitios lo señalan.
Mitos comunes
- «El
langcorrecto mejorará mi posicionamiento en Google». No. Google afirma que no usalangpara detectar el idioma. Puede importar para Bing y ayudar indirectamente mediante la accesibilidad y el comportamiento de traducción, pero no hay respaldo para un beneficio directo en el posicionamiento de Google. - «
langy hreflang son básicamente lo mismo». No:langdescribe la página en la que está; hreflang apunta a otras URL. Una página puede tener unlangcorrecto y ningún hreflang, o un hreflang correcto y unlangincorrecto. - «A ningún motor de búsqueda le importa
lang». Bing sí lo usa explícitamente (como señal de orientación secundaria detrás decontent-language). Para cualquier sitio con tráfico real de Bing, no es una situación de «a nadie le importa». - «Dejar
lang="en"por defecto es inofensivo si mi contenido no está en inglés». Se acerca mucho a la descripción literal del fallo que Mueller llamó «casi siempre incorrecto», y es lo que activa avisos de traducción y pronunciaciones erróneas en lectores de pantalla. - «El
langcorrecto aumenta el CTR un 22 %» / «Los rastreadores de IA procesan páginas etiquetadas con lang un 40 % más rápido». Estas cifras concretas circulan en algunos blogs de marketing SEO sin estudio, metodología ni fuente primaria rastreables. No pude corroborar ninguna con una declaración oficial ni con datos de primera mano: trátalas como folclore de sonido convincente y sin base que se acumula alrededor de temas técnicos poco examinados. - «
lang=""es lo mismo que no tenerlo». No: un valor vacío explícito significa «idioma desconocido», un estado real y distinto de la ausencia completa del atributo.
Dónde encaja esto
Este es el análisis del atributo dentro del subgrupo HTML SEO: el hermano del tratamiento a nivel de elemento de <article>, <nav> y <main> en el artículo sobre HTML semántico, y del centro más amplio de HTML SEO. Para la historia completa de la orientación entre páginas —los tres métodos de implementación, las reglas recíprocas y la frecuencia con que los grupos se rompen a escala— está el análisis profundo de hreflang; el trabajo de este artículo es que mantengas claras ambas cosas.
Resumen de IA
Una versión condensada del contenido Advanced:
langdeclara el idioma de este documento (<html lang="en">o una variante regional comoen-US) mediante una etiqueta BCP 47. Es una autodescripción, no un mecanismo de orientación o enrutamiento.- No es hreflang. La documentación de Google agrupa ambos como elementos que no usa para detectar el idioma: «Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page… we use algorithms» (traducción) «Google no usa hreflang ni el atributo HTML lang para detectar el idioma de una página… utiliza algoritmos».
langdescribe la página en la que está; hreflang apunta a URL en otros idiomas. - Google ignora
langpara la detección —Mueller: “we don’t use that at all… almost always wrong,” (traducción) «no lo usamos en absoluto… casi siempre es incorrecto», porque los valores predeterminados de plantillas y CMS no son fiables a escala. Una excepción: etiquetar bloques traducidos automáticamente conlang="es-x-mtfrom-en". - Bing hace lo contrario: su Webmaster Blog de 2011 nombra
<html lang>como señal secundaria de ubicación del documento, detrás de la metaetiquetacontent-language(orden: meta > html > title). Para el tráfico de Bing, establecelangcorrectamente. - La accesibilidad es lo importante: WCAG 3.1.1 lo exige; dirige la pronunciación de los lectores de pantalla,
hyphens: auto, el corrector ortográfico y las fuentes CJK. «Missing document language» sigue afectando a aproximadamente el 13,5 % de las páginas de inicio: un fallo de WebAIM Million entre los seis principales, aunque está disminuyendo. - Los navegadores lo usan para el aviso de traducción automática: un valor incorrecto falla (el caso de ORF.at, con
lang="en"sobre contenido alemán, que «tradujo» un nombre de distrito como «lies»). - Hazlo bien: usa una etiqueta BCP 47 válida (
GB, noUK), restablecelangen frases extranjeras incrustadas, elimina ellang="en"de plantilla en páginas que no estén en inglés y manténlangcoherente con hreflang (el problema de auditoría «Desajuste entre hreflang y HTML lang»).
Documentación oficial
Documentación de fuentes primarias y referencias de estándares.
- Versiones localizadas de tus páginas — la frase «Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page» (traducción) «Google no usa hreflang ni el atributo HTML lang para detectar el idioma de una página».
- Resultados de Google traducidos — la convención de etiquetado de traducción automática
lang="x-mtfrom-"y la exclusiónnotranslate. - Gestión de sitios multirregionales y multilingües — contexto adicional sobre las señales de idioma y región.
Bing / Microsoft
- Cómo indicar a Bing el país y el idioma de tu sitio web (Bing Webmaster Blog, 2011) — el orden de prioridad de ubicación del documento
meta > html > title. La URL original está retirada; el texto se confirmó mediante la captura de Wayback Machine.
Estándares y referencias técnicas
- MDN — atributo global
lang— requisito BCP 47, comportamiento de cadena vacía frente a ausencia, herencia y referencias WCAG. - W3C Internationalization — Declaring language in HTML — orientación del registro BCP 47/IANA y reglas para elementos anidados con contenido en varios idiomas.
- Deque University — regla axe
html-has-lang— clasificación de nivel A de WCAG 2,0/2,1 que sustenta la auditoría de accesibilidad de Lighthouse. - WebAIM Million — encuesta anual con la tasa de fallos de «missing document language».
Citas de las fuentes
Declaraciones registradas. Cada enlace lleva directamente al pasaje citado que respalda la fuente.
Google — no usa lang para detectar el idioma
- “Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page; instead, we use algorithms to determine the language.” (traducción) «Google no usa hreflang ni el atributo HTML lang para detectar el idioma de una página; en su lugar, utiliza algoritmos para determinarlo.» — Documentación de Google Search Central. Ir a la cita
Google — la excepción de traducción automática y notranslate
- “To opt out of all translation features in Google Search, use the notranslate rule, which can be implemented as a meta tag or an HTTP header.” (traducción) «Para excluirte de todas las funciones de traducción en Google Search, usa la regla notranslate, que puede implementarse como una metaetiqueta o una cabecera HTTP.» — Resultados traducidos de Google Search. Ir a la cita
John Mueller, Google — «casi siempre incorrecto»
- “We don’t use that at all. So we use the hreflang links if you have that if you have different language versions. But the language attribute within the HTML markup is something we don’t use at all. We’ve found that this language markup is something that is almost always wrong. So we tend to ignore that.” (traducción) «No empleamos ese atributo. Cuando hay versiones en varios idiomas recurrimos a los enlaces hreflang, pero ignoramos el atributo de idioma del marcado HTML porque hemos observado que casi siempre contiene un valor incorrecto.» — según la cobertura de Search Engine Roundtable de una sesión de Google Webmaster de 2016. Lee la cobertura Transmitido mediante el artículo de Barry Schwartz sobre la sesión de 2016 (el vídeo original no se puede consultar de forma independiente). La política actual de Search Central citada arriba confirma de forma independiente la postura «no usamos lang para detectar el idioma», así que la trato como orientación vigente pese a la antigüedad de la cita.
Bing / Microsoft — lang es una señal secundaria de orientación
- Orden de prioridad de las señales de ubicación del documento: “the priority order for these tags is:
<meta>,<html>,<title>,” (traducción) «el orden de prioridad de estas etiquetas es:<meta>,<html>,<title>», junto con la recomendación de “use one option, instead of multiple options here.” (traducción) «usa una opción en lugar de varias». — Bing Webmaster Blog, «Cómo indicar a Bing el país y el idioma de tu sitio web», 2011. Citado de la publicación de 2011 mediante su captura de Wayback Machine: la URL original está retirada del archivo actual del blog de Bing y no encontré ninguna declaración más reciente que sustituya el mecanismo. Su antigüedad (2011) es una salvedad real; lo cito como orientación antigua y vigente, no como novedad.
Yo — mantener coherentes lang y hreflang
- “Google doesn’t use the HTML language attribute, but other search engines and browsers do. It’s important to keep these two attributes consistent with one another.” (traducción) «Google no utiliza el atributo de idioma HTML, aunque otros buscadores y los navegadores sí lo hacen. Conviene que ambos atributos mantengan valores coherentes.» — de la guía de hreflang de Ahrefs, en el problema de auditoría «Desajuste entre hreflang y HTML lang». Léelo
¿Qué etiqueta de idioma necesito realmente?
Un recorrido rápido para cuando estás mirando una página y no sabes qué establecer.
1. ¿Solo necesitas declarar en qué idioma está esta página?
Es el atributo lang. Establece <html lang="…">. Ve al paso 2.
2. ¿Necesitas distinguir variantes regionales (inglés de EE. UU. frente a Reino Unido, portugués brasileño frente a europeo)?
- No → usa solo el subtag de idioma:
<html lang="en">,lang="es",lang="pt">. - Sí → usa idioma y región:
<html lang="en-US">,lang="en-GB">,lang="pt-BR">. (La región esGB, noUK.)
*3. ¿La página contiene pasajes en un idioma distinto (una cita francesa en un artículo inglés)?
- Sí → envuélvelos y restablece el valor localmente:
<span lang="fr">c'est la vie</span>. Todo lo demás hereda el<html lang>raíz. - No → el valor raíz cubre toda la página.
4. ¿También tienes la misma página en otros idiomas en otras URL?
- Sí → además necesitas hreflang, un mecanismo separado que apunta a esas URL alternativas. Mantén el
langde cada página coherente con su entrada hreflang. (Consulta el análisis profundo de hreflang; es una implementación propia.) - No → has terminado con
langpor sí solo.
5. ¿El contenido está traducido automáticamente?
- Sí → según Google, etiqueta el bloque traducido:
lang="<target>-x-mtfrom-<source>"(por ejemplo,lang="es-x-mtfrom-en"). - No → solo necesitas una etiqueta BCP 47 normal.
6. ¿Importa el tráfico de Bing?
- Sí → establece
langcorrectamente y considera añadir una metaetiquetacontent-languagecoincidente; Bing da más peso a la metaetiqueta que a<html lang>. Elige un valor coherente y no establezcas valores contradictorios. - No →
langen<html>más la corrección de accesibilidad son suficientes.
Hoja de referencia rápida del atributo lang
lang frente a hreflang: la diferencia en una línea
lang | hreflang | |
|---|---|---|
| Declara | El idioma del contenido de esta página | Las otras URL que son versiones en otros idiomas |
| Forma | Un valor en <html> (o en cualquier elemento) | Un conjunto de anotaciones <link rel="alternate"> (o sitemap/cabecera) |
| ¿Lo usa Google? | No (lo ignora para detectar el idioma) | Sí, para dirigir a la variante correcta de URL |
| ¿Lo usa Bing? | Sí, como señal secundaria de orientación | Apenas |
| ¿Accesibilidad / aviso de traducción? | Sí | No |
Quién lee <html lang>
| Consumidor | Qué hace con él |
|---|---|
| Lo ignora para detectar el idioma (usa algoritmos) | |
| Bing | Señal secundaria de orientación, detrás de la meta content-language |
| Lectores de pantalla | Selección de pronunciación/voz (WCAG 3.1.1) |
| Navegadores | Una entrada para el aviso de traducción automática |
| CSS / corrector ortográfico | hyphens: auto, corrector ortográfico, comillas y fuentes CJK |
Valores válidos
- Solo idioma:
en,es,fr,de - Idioma y región:
en-US,en-GB,pt-BR,zh-Hans - No válido:
eng(tres letras),en-UK(usaGB) y nombres completos de idiomas lang=""= «desconocido» (un estado real, distinto de ausente)- Bloque traducido automáticamente:
lang="es-x-mtfrom-en"
Datos rápidos
- Mueller:
langes «almost always wrong» (traducción) «casi siempre incorrecto»; Google lo ignora para detectar el idioma. - Orden de prioridad de Bing: meta
content-language><html lang>><title lang>. - «Missing document language» ≈ 13,5 % de las páginas de inicio (WebAIM Million, fallo entre los seis principales, con tendencia descendente).
html-has-langde Lighthouse está en Accessibility, no en SEO.- Mantén
langcoherente con hreflang: es el problema de auditoría «Desajuste entre hreflang y HTML lang».
Errores del atributo HTML lang
- Dejar
lang="en"en todas las plantillas localizadas. Establece el idioma a partir del locale real del documento y prueba las rutas que no estén en inglés. - Usar
langen lugar de hreflang.langdescribe este documento; hreflang conecta URL alternativas. Implementa cada uno para su función. - Añadir un código de país que no coincida con el contenido. Usa una etiqueta BCP 47 válida y añade una región solo cuando la variante lingüística sea realmente regional.
- Poner el atributo en un contenedor en lugar de en el
<html>raíz. Declara el idioma principal de la página en el elemento de documento; usa atributoslanglocales para los pasajes en otro idioma. - Suponer que Google necesita
langpara detectar el idioma. Mantenlo por la accesibilidad, los navegadores, Bing y los estándares, no como una palanca de posicionamiento de Google.
Un lector de pantalla usa una pronunciación incorrecta
Causa probable: idioma raíz ausente, no válido o incorrecto; los pasajes en idiomas extranjeros también pueden no estar marcados. Solución: establece el valor BCP 47 correcto en <html> y los valores locales donde cambie el idioma. Confirmación: inspecciona el árbol de accesibilidad y prueba con la voz del lector de pantalla correspondiente.
Todas las páginas localizadas dicen lang="en"
Causa probable: una plantilla base codificada o un mapa de locales que nunca llega al shell del documento. Solución: deriva el valor raíz del locale de la ruta o del contenido en el servidor o durante la compilación. Confirmación: rastrea URL representativas de cada locale y compara el idioma declarado con el contenido visible.
lang y hreflang no coinciden
Causa probable: mapas de locales separados, códigos de región no válidos o un valor predeterminado de plantilla. Solución: usa una configuración de locales normalizada y conserva las funciones distintas de las dos señales. Confirmación: cada página declara su propio idioma de contenido y sus enlaces alternativos apuntan a las variantes recíprocas correctas.
Los avisos de traducción del navegador son incorrectos
Causa probable: el idioma declarado entra en conflicto con el texto visible predominante o los bloques en varios idiomas no están delimitados. Solución: corrige la declaración raíz y marca los pasajes sustanciales con su propio lang. Confirmación: el navegador y las comprobaciones de accesibilidad identifican el idioma principal previsto.
Herramientas para las declaraciones de idioma
- On-Page SEO Checker muestra el idioma bruto del documento junto con otras señales HTML.
- hreflang Generator + Linter comprueba los códigos y las relaciones entre idiomas alternativos; úsalo junto con la auditoría del
langraíz, no en su lugar. - Las DevTools del navegador muestran el valor
<html lang>raíz y el árbol de accesibilidad que usa la tecnología asistiva. - Un rastreador con extracción XPath puede comparar la declaración entre las plantillas de locales:
string(/html/@lang).
Recursos que merecen tu tiempo
Mis artículos relacionados
- Hreflang: guía fácil para principiantes — el análisis profundo de hreflang en el que aparezco acreditado, incluido el problema de auditoría «Desajuste entre hreflang y HTML lang» que conecta
langy hreflang. - Guía de SEO técnico para principiantes — el lugar que ocupan el marcado y las señales internacionales en el panorama más amplio.
Mis charlas
- How Search Works (SlideShare) — mi explicación del rastreo, el renderizado, la indexación y el posicionamiento, incluido cómo Google lee y normaliza el marcado. (Se aplica mi advertencia habitual: «This is my understanding of systems… not going to be 100% complete or accurate» (traducción) «Esta es mi comprensión de los sistemas… no será 100 % completa ni exacta».)
Oficial
- Google — Versiones localizadas de tus páginas y Resultados de Google traducidos.
- Bing — Cómo indicar a Bing el país y el idioma de tu sitio web (2011, mediante Wayback Machine).
De la industria
- MDN — atributo global
lang— la referencia técnica definitiva: BCP 47, vacío frente a ausencia y herencia. - W3C — Declarar el idioma en HTML — la guía del organismo de estándares, incluidas las páginas con varios idiomas.
- Deque — regla axe
html-has-lang— la regla de accesibilidad que sustenta la auditoría de Lighthouse. - WebAIM Million — la encuesta anual con la tasa actual de fallo «missing document language».
- Adrian Roselli — Sobre el uso del atributo lang — el catálogo profundo de accesibilidad sobre los efectos reales de
lang. - Manuel Matuzovic — el atributo lang: navegadores que mienten — el caso de estudio de traducción automática de ORF.at con
lang="en"sobre alemán. - Google: ignoramos el atributo HTML lang (Search Engine Roundtable) — la cita completa de Mueller sobre «almost always wrong».
- r/TechSEO — la comunidad para marcado, internacionalización y depuración de auditorías.
Ponte a prueba: el atributo HTML lang
Cinco preguntas rápidas sobre qué hace lang y en qué se diferencia de hreflang. Elige una respuesta para cada una y después compruébalas.
Registro de cambios
Actualizado el 22 ago 2026.
Resumen editorial y detalles registrados del cambio.Detalles del cambio
-
Los detalles del cambio están disponibles actualmente en inglés.
La comparación completa no está disponible: no se archivó una instantánea anterior para esta revisión.
Actualizado el 9 ago 2026.
Resumen editorial y detalles registrados del cambio.Detalles del cambio
-
Los detalles del cambio están disponibles actualmente en inglés.
La comparación completa no está disponible: no se archivó una instantánea anterior para esta revisión.
Actualizado el 18 jul 2026.
Resumen editorial y detalles registrados del cambio.Detalles del cambio
-
Los detalles del cambio están disponibles actualmente en inglés.
-
Los detalles del cambio están disponibles actualmente en inglés.
-
Los detalles del cambio están disponibles actualmente en inglés.
La comparación completa no está disponible: no se archivó una instantánea anterior para esta revisión.