La etiqueta HTML <meta>

Metadatos e información del documento HTML


Quizás, una de las etiquetas HTML más populares que se colocan en el <head> de un documento HTML es la etiqueta <meta>. Se trata de una etiqueta que nos permite indicar metadatos o información interna del documento HTML. Estos datos no se suelen mostrar visualmente en la página, sino que el navegador los lee para conocer información relevante y utilizarlos en situaciones específicas.

La etiqueta <meta>

Por norma general, la etiqueta <meta> tiene los atributos name y content. Dependiendo del valor que le demos a name, tendremos que indicar un valor content correspondiente. Estas etiquetas se colocan en el interior de la etiqueta <head> de nuestro documento:

<head>
  <meta name="..." content="...">
</head>

Sin embargo, también existen algunas excepciones donde la etiqueta <meta>, en lugar de tener los atributos name y content, tiene otros diferentes.

Veamos una lista de etiquetas <meta> interesantes de las que hablaremos:

AtributoDescripciónMás info
CodificaciónIndica el tipo de codificación que se está usando en el documento.Ver Codificación
Tema de colorEstablece un color para la zona superior de ciertos navegadores móviles.Ver Tema de color
Redes socialesEstablece metadatos para redes sociales (Open Graph, de Facebook).Ver Redes sociales
SEO/GoogleEstablece una descripción para la página o documento HTML actual.Ver SEO/Google
Diseño responsiveEstablece metadatos para redes sociales (Twitter Cards, de Twitter).Ver Diseño responsive
Simulación HTTPSimula ciertas cabeceras HTTP de servidor desde el cliente.Ver Simulación HTTP

Codificación del documento

La etiqueta <meta> más popular probablemente sea <meta charset="utf-8">: una etiqueta que permite indicar el tipo de codificación de nuestro documento HTML. ¿Qué es el tipo de codificación? Pues a grandes rasgos, la forma en la que se muestran los carácteres de texto de una página.

Si en alguna ocasión has visto textos como código o también es porque probablemente tenga una codificación incorrecta o no se le haya establecido esta etiqueta:

<head>
  <title>Título del documento</title>
  <meta charset="utf-8">
</head>

En el valor del atributo charset realmente se puede indicar cualquier tipo de codificación, pero la más utilizada y recomendada es utf-8, la cuál permite tener un buen sistema de codificación, muy extendido y que soporta una gran variedad de carácteres, suficiente para la mayoría de idiomas y textos.

Tema de color del navegador

En los navegadores que lo soporten, una etiqueta <meta> muy curiosa es la que proporciona la posibilidad de establecer un tema de color para personalizar los colores de la interfaz del navegador que estemos utilizando. Para ello, tenemos que utilizar el atributo name="theme-color" y asociarle un color en hexadecimal:

Valor nameValor contentDescripción
theme-colorcolorColor en hexadecimal de la barra de navegación.

Al establecer este atributo en una etiqueta <meta>, el navegador coloreará la barra de direcciones con el color hexadecimal indicado en el atributo content de nuestro fragmento de código:

<head>
  <meta name="theme-color" content="#1e7bbf">
</head>

Así pues, con esto conseguiremos que por ejemplo, un dispositivo móvil con Android y Google Chrome, muestre la barra de navegación de la siguiente forma:

Meta theme

Sin embargo, actualmente, el soporte para esta característica es muy irregular, y muchos navegadores aún no lo soportan. Por ejemplo, en Chrome, sólo funciona en dispositivos móviles donde el sistema tenga el modo claro activado.

Metadatos de simulación HTTP

Existe una serie de etiquetas de metadatos especiales que indican a los robots del buscador o al navegador, que deben modificar las cabeceras HTTP para realizar acciones que suelen hacerse habitualmente desde el lado del servidor. Estas operaciones, en la mayoría de los casos, es mejor hacerlas directamente desde el servidor, sin embargo, proporcionan una alternativa en el caso que no sea posible.

Para diferenciarlas, en lugar de utilizar el atributo name, se utiliza el atributo http-equiv. Sin embargo, recuerda que estas etiquetas pueden ser ignoradas por algunos navegadores o robots de búsqueda, o incluso ser contraproducentes o afectar negativamente al rendimiento. Muchas de ellas existen sólo por motivos históricos.

Redirección Javascript

La etiqueta <meta http-equiv="refresh"> nos permite establecer redirecciones desde el lado del cliente. Hay que tener mucho cuidado, ya que las redirecciones que queremos hacer por motivos SEO o similares, deben hacerse desde servidor y establecer un código de error concreto, como 301 o 302. Además, desde cliente la web se carga y luego hace redirección, al contrario que en servidor, donde no se carga, sino que hace primero la redirección.

La sintaxis es la siguiente:

Valor http-equivValor contentDescripción
refreshsegundos;url=URLRedirige a la URL después del número de segundos indicado.

Veamos esta etiqueta en acción por si no se entiende bien:

<head>
  <meta http-equiv="refresh" content="30;url=https://manz.dev/">
</head>

En este caso, estamos estableciendo que al cargarse la web y transcurrir 30 segundos, el navegador debería realizar una redirección y moverse desde la página actual a la página https://manz.dev/.

Etiquetas de caché

Otros ejemplos clásicos de etiquetas <meta http-equiv> son las que tienen que ver con el caché de la página. Nuevamente, mencionar que estos detalles hoy en día suelen definirse en el lado del servidor, en lugar de mediante estas etiquetas. Algunos ejemplos de los atributos que se pueden utilizar son los siguientes:

Valor http-equivValor contentDescripción
expiresfechaFecha a partir de la cuál se considera caché expirada.
cache-controlmax-age=NIndica que la caché es válida hasta que transcurran N segundos.
cache-controlmust-revalidateUsado con el anterior, permite guardar y evaluar si se puede usar caché.
cache-controlpublicIndica al navegador que puede ser guardada en una caché pública.
cache-controlprivateIndica al navegador que sólo puede guardarse en caché de navegador.
cache-controlno-cacheIndica al navegador que evalue si utilizar el caché o no.
cache-controlno-storeIndica al navegador que la página no debería guardarse en caché.

Y finalmente, un ejemplo aplicando cada una de estas etiquetas:

<head>
  <meta http-equiv="expires" content="Fri, 29 Apr 2016 12:56:00 GMT">
  <meta http-equiv="cache-control" content="no-cache">
</head>

Antiguamente también existían algunas etiquetas como <meta http-equiv="pragma"> que actualmente se encuentran marcadas como obsoletas y que deben evitar utilizarse.

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev