La etiqueta Meta Charset

Qué hace <meta charset="utf-8">, por qué la especificación HTML la quiere en los primeros 1024 bytes, cómo una codificación incorrecta causa mojibake, y por qué es un problema de corrección de renderizado más que un factor de ranking.

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

La etiqueta meta charset — <meta charset="utf-8"> — declara la codificación de caracteres de tu página para que los navegadores y rastreadores conviertan los bytes crudos en los caracteres correctos. La especificación HTML la requiere dentro de los primeros 1024 bytes del documento, y la mejor práctica es que sea el primer hijo literal de <head>. Si la pones mal (falta, tarde, o con una codificación no coincidente) obtienes mojibake: letras acentuadas, comillas curvas, guiones largos, escrituras no latinas y emojis se renderizan como basura — lo que puede corromper lo que se muestra y se indexa. NO es un factor de ranking directo; la única guía de Google es 'usar Unicode/UTF-8 cuando sea posible'. UTF-8 es la codificación casi universal y requerida por la especificación para HTML5 hoy. Una cabecera Content-Type enviada por el servidor con charset anula la etiqueta en la página, lo cual es una fuente común de errores de migración. Esta es una de las etiquetas orientadas al navegador en el clúster de meta etiquetas.

TL;DR — <meta charset="utf-8"> declara la codificación de caracteres del documento. La especificación HTML de WHATWG requiere que la declaración se serialice completamente dentro de los primeros 1024 bytes del documento, y para HTML5 el valor debe coincidir con utf-8; la mejor práctica es colocarla como el primer hijo literal de <head>. Una codificación faltante, tardía o no coincidente produce mojibake — caracteres acentuados corruptos, comillas curvas, escrituras no latinas y emoji — lo cual es un problema de renderizado y corrección de indexación, no una señal de ranking. La única línea pública de Google es “use Unicode/UTF-8 donde sea posible.” Un encabezado Content-Type enviado por el servidor con charset anula la etiqueta en el documento, lo cual es un error clásico de mojibake post-migración. Solo se permite un elemento meta charset por documento, y no tiene efecto en XML. Una marca de orden de bytes (BOM) UTF-8, si está presente, gana sobre todo lo demás; de lo contrario, el encabezado HTTP gana sobre la etiqueta en la página — orden de precedencia completo a continuación.

Evidence for this claim For HTML documents, the charset declaration must identify UTF-8. Scope: Modern HTML conformance requirements. Confidence: high · Verified: WHATWG HTML: Character encoding declaration Evidence for this claim The complete character-encoding declaration must occur within the first 1024 bytes of the document. Scope: HTML serialization requirement intended to make encoding available early to parsers. Confidence: high · Verified: WHATWG HTML: Specifying the document's character encoding

Qué es la etiqueta

La declaración de charset le dice al analizador qué codificación de caracteres usar cuando convierte los bytes del documento en texto. El WHATWG HTML Living Standard lo dice claramente: “The charset attribute specifies the character encoding used by the document. This is a character encoding declaration.” (traducción) «El atributo charset especifica la codificación de caracteres utilizada por el documento. Esta es una declaración de codificación de caracteres.» El enfoque de MDN es la versión práctica: “This attribute declares the document’s character encoding.” (traducción) «Este atributo declara la codificación de caracteres del documento.»

La sintaxis moderna es la forma corta:

<meta charset="utf-8">

También hay una forma heredada pre-HTML5 que aún verás en plantillas más antiguas:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Ambas declaran lo mismo. En un documento HTML5 moderno solo necesitas la forma corta <meta charset="utf-8"> — usar ambas es redundante, no dañino, y la especificación permite solo un elemento meta que declare charset por documento de todos modos. (La forma http-equiv es mejor considerarla como heredada en lugar de algo nuevo que añadir; si estás auditando una página que la tiene, no está rota, solo es antigua.)

Los requisitos de la especificación que realmente necesitas saber

UTF-8 es efectivamente obligatorio para HTML5. MDN lo dice directamente: el “value must be an ASCII case-insensitive match for the string utf-8, because UTF-8 is the only valid encoding for HTML5 documents.” (traducción) «el valor debe coincidir de forma insensible a mayúsculas y minúsculas con la cadena utf-8, porque UTF-8 es la única codificación válida para documentos HTML5.» La especificación WHATWG va más allá y requiere que la codificación real del documento sea UTF-8 independientemente de lo que se declare. UTF-8 cubre prácticamente todas las escrituras más emoji, por lo que la era de codificaciones por región ISO-8859-1 / Windows-1252 / Shift-JIS ha terminado para trabajo nuevo — esas sobreviven solo como casos de compatibilidad heredados.

Debe estar en los primeros 1024 bytes del documento. Este es un requisito estricto de la especificación, no una sugerencia suave. MDN: <meta> elements which declare a character encoding must be located entirely within the first 1024 bytes of the document.” (traducción) «Los elementos <meta> que declaran una codificación de caracteres deben ubicarse completamente dentro de los primeros 1024 bytes del documento.» La razón es mecánica: el analizador examina el flujo de bytes para detectar una codificación antes de poder interpretar el resto de manera segura. Si tu declaración aparece demasiado tarde, el analizador puede ya haberse comprometido con una codificación adivinada (o tener que reiniciar, lo que cuesta rendimiento). Observa el encuadre con cuidado: son los primeros 1024 bytes del documento completo, no solo de <head>.

Evidence for this claim The complete character-encoding declaration must occur within the first 1024 bytes of the document. Scope: HTML serialization requirement intended to make encoding available early to parsers. Confidence: high · Verified: WHATWG HTML: Specifying the document's character encoding

La mejor práctica supera el mínimo de la especificación: haz que sea el primer hijo de <head>. No te conformes con “en algún lugar de los primeros 1024 bytes” — coloca <meta charset="utf-8"> antes de tu <title>, <link>, <script>, <style> y cualquier otra etiqueta. Esta es la ubicación que las herramientas modernas verifican. Hay un problema abierto de Lighthouse (#10023) que propone una auditoría que verifica específicamente si <meta charset> es igual a document.head.firstElementChild — es decir, marcar la etiqueta cuando no es el primer elemento literal en head, no solo cuando falta. La dirección de las herramientas es hacia verificar la ubicación, no solo la presencia.

Solo un elemento meta de charset por documento, y el atributo charset no tiene efecto en documentos XML/XHTML (allí se permite solo para facilitar la migración hacia y desde XML). Vale la pena una advertencia si trabajas con contenido servido como XHTML o plantillas relacionadas con RSS/Atom.

BOM, cabecera HTTP, meta etiqueta — el orden de precedencia

Los navegadores no solo leen la meta etiqueta de forma aislada; el algoritmo de detección de codificación verifica tres fuentes en un orden fijo, y la primera que da una respuesta gana:

  1. Una marca de orden de bytes UTF-8 (BOM) — unos pocos bytes al inicio del archivo. Si el navegador detecta una BOM, eso determina la codificación con certeza; no se consulta nada más.
  2. El charset de la cabecera HTTP Content-Type, si el servidor envía uno y no hay BOM. Esto tiene prioridad sobre la declaración meta dentro del documento.
  3. La declaración <meta charset> (o http-equiv heredada) dentro del documento, verificada solo si ninguna de las anteriores proporcionó una codificación.
Evidence for this claim A UTF-8 BOM takes precedence over HTTP and in-document declarations; otherwise an HTTP charset has higher precedence than meta, so server and document declarations must agree. Scope: HTML documents, HTTP delivery and rendered metadata as applicable Confidence: high · Verified: Declaring character encodings in HTML

En la práctica, las BOM son raras en HTML escrito a mano (son más comunes como artefacto de ciertos editores de texto o herramientas de exportación de archivos), por lo que el conflicto entre cabecera y etiqueta es el que afecta con más frecuencia: una página que declara correctamente <meta charset="utf-8"> puede renderizarse con caracteres corruptos si un CDN, un proxy inverso o un servidor mal configurado envía un charset diferente en la cabecera. Es un síntoma clásico justo después de una migración de servidor o CDN: el HTML no cambió, pero la cabecera sí, y ahora la cabecera está en conflicto con la etiqueta. Cuando depures mojibake, verifica la BOM y el charset de la cabecera de respuesta, no solo el código fuente de la página.

¿Es meta charset un factor de ranking SEO?

No — y vale la pena ser directo porque el texto de las herramientas de auditoría basado en el miedo a veces implica lo contrario. Este es un requisito de corrección de renderizado e indexación, no una señal de ranking.

La guía de Google aquí es escasa e indirecta en comparación con las etiquetas que discute constantemente (título, meta descripción, robots, URL principal). No hay una página dedicada de Google Search Central sobre la codificación de caracteres: es una entrada dentro de la referencia general de meta etiquetas que Google admite, bajo “Content-Type y charset”. La única declaración registrada de Google es una recomendación, no una afirmación de ranking: “We recommend using Unicode/UTF-8 where possible.” (traducción) «Recomendamos usar Unicode/UTF-8 cuando sea posible». No aparece ninguna declaración textual de Mueller, Illyes, Splitt o Canel que nombre específicamente “meta charset” o “mojibake” en la prensa especializada o en los archivos de Search Off the Record: el charset se trata como higiene básica de estándares web, algo fundamental como el marcado válido, más que como un tema que merezca comentarios de SEO.

Bing tampoco tiene una posición pública distinta sobre la etiqueta en la página; su documentación hace referencia a UTF-8 solo para sus propios formatos de API/feed (archivos de clave de IndexNow, encabezados de solicitud de Webmaster API), no como orientación sobre el <meta charset> HTML en tus páginas. Dado que Bingbot es un analizador HTML estándar, la implicación práctica es la misma: sigue la regla de UTF-8 / 1024 bytes de la especificación HTML.

Entonces, ¿dónde puede perjudicarte? Indirectamente, y solo cuando la codificación está realmente rota: el texto ilegible es un problema de calidad de contenido y de experiencia de usuario, puede corromper lo que aparece en los fragmentos, y una salida gravemente rota puede parecer rota también para los sistemas de indexación de Google. El consenso de la industria, como lo expresa la propia guía de meta etiquetas de Ahrefs (de Joshua Hardwick), es que “a menos que tu página esté gravemente rota como resultado de problemas de charset (lo cual es poco probable), el impacto va a ser bastante mínimo.” Arrégialo porque el texto roto es malo, no porque esperes un aumento en el ranking.

Cómo comprobarlo y solucionarlo

Una ruta de diagnóstico rápida cuando sospechas un problema de codificación:

  • Ver código fuente / DevTools. Confirma que <meta charset="utf-8"> existe y es el primer hijo de <head>. En DevTools, comprueba el encabezado de respuesta Content-Type para un valor de charset — si no coincide con la etiqueta, el encabezado gana y es tu probable culpable. Descarta también un BOM: es más raro, pero si está presente, supera tanto al encabezado como a la etiqueta.
  • Los validadores y rastreadores lo señalan. El validador W3C y los verificadores basados en reglas (p. ej., la regla de Rocket Validator sobre “charset después de los primeros 1024 bytes”) señalarán una declaración tardía o ausente. Las auditorías de sitio en Ahrefs Site Audit y Screaming Frog sacan a la luz problemas de charset en todo un sitio.
  • Arregla la capa correcta. Si la ubicación es incorrecta, mueve la etiqueta al principio de head. Si la codificación es incorrecta (los bytes en sí no son UTF-8, o el encabezado envía un charset conflictivo), arreglar solo la meta etiqueta no ayudará — tienes que volver a codificar el archivo como UTF-8 y/o corregir el encabezado Content-Type del servidor para que el encabezado y la etiqueta coincidan.

La solución es casi siempre trivial una vez que has identificado qué capa tiene la culpa. Esta es una parte estable y consolidada de la especificación HTML — no hay ninguna desaprobación reciente ni cambio de comportamiento de plataforma que seguir; el único matiz en evolución es que las herramientas comprueban cada vez más la ubicación, no solo la presencia.

Dónde encaja esto

La etiqueta de charset es uno de los elementos de head orientados al navegador — como la etiqueta de viewport, se trata de renderizado, no de ranking, lo que la coloca en una categoría diferente de las etiquetas activas para SEO en el grupo de meta etiquetas (el elemento title, la meta descripción y la familia robots). Está adyacente al trabajo de internacionalización en el que paso mucho tiempo: la codificación es la capa debajo de hreflang y el contenido multiescritura — hreflang le dice a Google qué versión de idioma/región servir, pero si la codificación es incorrecta, el texto en esa versión está ilegible independientemente. Para el mapa completo de elementos de head agrupados por el trabajo que hacen, consulta el centro de meta etiquetas.

Add an expert note

Pin an expert quote

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