Acerca de este problema HTML
El elemento <meta> se usa más comúnmente dentro de la sección <head> para definir metadatos como la codificación de caracteres, configuraciones del viewport o descripciones. Dentro del <head>, atributos como charset, http-equiv y name son perfectamente válidos. Sin embargo, la especificación HTML también permite que <meta> aparezca dentro del <body> — pero solo bajo condiciones específicas.
Cuando un elemento <meta> aparece en el <body>, debe tener un atributo itemprop (para microdata) o un atributo property (para RDFa). También debe tener un atributo content. Además, no puede usar atributos http-equiv, charset o name en este contexto. Estas reglas existen porque la única razón válida para colocar una etiqueta <meta> en el <body> es para embeber metadatos legibles por máquina como parte de una anotación de datos estructurados — no para definir metadatos a nivel de documento.
Por qué esto importa
-
Cumplimiento de estándares: El estándar HTML living standard restringe explícitamente qué atributos puede usar
<meta>dependiendo de su ubicación. Violar esto produce HTML inválido. -
Comportamiento del navegador: Los navegadores pueden ignorar o malinterpretar elementos
<meta>que aparezcan en el<body>sin los atributos apropiados. Por ejemplo, una etiqueta<meta http-equiv="content-type">dentro del<body>no tendrá efecto en la codificación de caracteres, ya que eso debe determinarse antes de que el body sea analizado. -
SEO y datos estructurados: Los motores de búsqueda dependen de microdata y RDFa estructurados correctamente. Un elemento
<meta>en el body sinitempropopropertyno contribuirá a ningún dato estructurado y no sirve ningún propósito útil.
Causas comunes
-
Etiquetas
<meta>mal ubicadas: Un elemento<meta>destinado al<head>(como<meta http-equiv="...">o<meta name="description">) ha sido colocado accidentalmente dentro del<body>. Esto puede suceder debido a una etiqueta<head>sin cerrar, un CMS que inserta etiquetas en la ubicación incorrecta, o simplemente copiar markup en la sección equivocada. -
itempropopropertyfaltante: Un elemento<meta>dentro del<body>está siendo usado para datos estructurados pero carece del atributo requeridoitempropoproperty.
Ejemplos
Incorrecto: <meta> con http-equiv dentro del <body>
Esta etiqueta <meta> pertenece al <head>, no al <body>:
<body>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<form>
<input type="text" name="q">
</form>
</body>
Solucionado: mover el <meta> al <head>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>My Page</title>
</head>
<body>
<form>
<input type="text" name="q">
</form>
</body>
Incorrecto: <meta> en el <body> sin itemprop o property
<div itemscope itemtype="https://schema.org/Offer">
<span itemprop="price">9.99</span>
<meta content="USD">
</div>
El elemento <meta> carece del atributo itemprop, por lo que el validador reporta el error.
Solucionado: añadir el atributo itemprop
<div itemscope itemtype="https://schema.org/Offer">
<span itemprop="price">9.99</span>
<meta itemprop="priceCurrency" content="USD">
</div>
Correcto: usar property para RDFa
El atributo property también es válido para elementos <meta> en el <body> cuando se usa RDFa:
<div vocab="https://schema.org/" typeof="Event">
<span property="name">Concert</span>
<meta property="startDate" content="2025-08-15T19:00">
</div>
Incorrecto: <meta name="..."> dentro del <body>
El atributo name solo es válido en elementos <meta> dentro del <head>:
<body>
<meta name="author" content="Jane Doe">
<p>Welcome to my site.</p>
</body>
Solucionado: moverlo al <head>
<head>
<title>My Site</title>
<meta name="author" content="Jane Doe">
</head>
<body>
<p>Welcome to my site.</p>
</body>
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.
Más información: