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.

Publicado por primera vez: 2 jul 2026 · Última actualización: 22 ago 2026 · Avanzado
Idiomas
1 señal de evidencia en esta página

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 — lang declara el idioma natural de este documento (<html lang="en">, o una variante regional como en-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 HTML lang es 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 con lang="es-x-mtfrom-en". Establece un valor válido, mantenlo coherente con hreflang y elimina el lang="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 Page

Conviene 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 no en-UK (el subtag de región para el Reino Unido es GB). 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; restablece lang localmente 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 HTTP Content-Language: esa cabecera describe metadatos de transporte de la respuesta, no el documento analizado, y no sustituye a lang para 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?

  • lang es 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 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.

`lang` describes this document for browsers and assistive technology; hreflang maps alternate URLs for search-result routing. Fuente: Google Search Central

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:

  1. La metaetiqueta content-language en el <head> (<meta http-equiv="content-language" content="en-us">).
  2. 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>».
  3. ccTLD.
  4. 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.

Advertencia: esta es una publicación de 2011, actualmente retirada del archivo del blog de Bing. La cito mediante una captura de Wayback Machine; no encontré ninguna declaración más reciente de Bing que la sustituya, así que trato el mecanismo como vigente, pero conviene señalar honestamente su antigüedad en lugar de presentarlo como orientación reciente.

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.

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 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, no UK.
  • 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 lang localmente: <span lang="fr">c'est la vie</span>. Los descendientes sin atributo heredan el lang de 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 lang de una página dice es-MX pero la anotación hreflang de esa misma URL dice en, 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 parte lang de 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 lang correcto mejorará mi posicionamiento en Google». No. Google afirma que no usa lang para 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.
  • «lang y hreflang son básicamente lo mismo». No: lang describe la página en la que está; hreflang apunta a otras URL. Una página puede tener un lang correcto y ningún hreflang, o un hreflang correcto y un lang incorrecto.
  • «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 de content-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 lang correcto 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.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.