# Element “meta” is missing one or more of the following attributes: “itemprop”, “property”.

> Canonical HTML version: https://rocketvalidator.com/html-validation/element-meta-is-missing-one-or-more-of-the-following-attributes-itemprop-property
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

The `<meta>` element is most commonly used inside the `<head>` section to define metadata like character encoding, viewport settings, or descriptions. Inside `<head>`, attributes like `charset`, `http-equiv`, and `name` are perfectly valid. However, the HTML specification also allows `<meta>` to appear inside the `<body>` — but only under specific conditions.

When a `<meta>` element appears in the `<body>`, it **must** have either an `itemprop` attribute (for microdata) or a `property` attribute (for RDFa). It must also have a `content` attribute. Additionally, it **cannot** use `http-equiv`, `charset`, or `name` attributes in this context. These rules exist because the only valid reason to place a `<meta>` tag in the `<body>` is to embed machine-readable metadata as part of a structured data annotation — not to define document-level metadata.

### Why this matters

- **Standards compliance:** The HTML living standard explicitly restricts which attributes `<meta>` can use depending on its placement. Violating this produces invalid HTML.
- **Browser behavior:** Browsers may ignore or misinterpret `<meta>` elements that appear in the `<body>` without proper attributes. For example, a `<meta http-equiv="content-type">` tag inside the `<body>` will have no effect on character encoding, since that must be determined before the body is parsed.
- **SEO and structured data:** Search engines rely on correctly structured microdata and RDFa. A `<meta>` element in the body without `itemprop` or `property` won't contribute to any structured data and serves no useful purpose.

### Common causes

1. **Misplaced `<meta>` tags:** A `<meta>` element meant for the `<head>` (such as `<meta http-equiv="...">` or `<meta name="description">`) has accidentally been placed inside the `<body>`. This can happen due to an unclosed `<head>` tag, a CMS inserting tags in the wrong location, or simply copying markup into the wrong section.
2. **Missing `itemprop` or `property`:** A `<meta>` element inside the `<body>` is being used for structured data but is missing the required `itemprop` or `property` attribute.

## Examples

### Incorrect: `<meta>` with `http-equiv` inside the `<body>`

This `<meta>` tag belongs in the `<head>`, not the `<body>`:

```html
<body>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <form>
    <input type="text" name="q">
  </form>
</body>
```

### Fixed: Move the `<meta>` to the `<head>`

```html
<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>
```

### Incorrect: `<meta>` in the `<body>` without `itemprop` or `property`

```html
<div itemscope itemtype="https://schema.org/Offer">
  <span itemprop="price">9.99</span>
  <meta content="USD">
</div>
```

The `<meta>` element is missing the `itemprop` attribute, so the validator reports the error.

### Fixed: Add the `itemprop` attribute

```html
<div itemscope itemtype="https://schema.org/Offer">
  <span itemprop="price">9.99</span>
  <meta itemprop="priceCurrency" content="USD">
</div>
```

### Correct: Using `property` for RDFa

The `property` attribute is also valid for `<meta>` elements in the `<body>` when using RDFa:

```html
<div vocab="https://schema.org/" typeof="Event">
  <span property="name">Concert</span>
  <meta property="startDate" content="2025-08-15T19:00">
</div>
```

### Incorrect: `<meta name="...">` inside the `<body>`

The `name` attribute is only valid on `<meta>` elements inside the `<head>`:

```html
<body>
  <meta name="author" content="Jane Doe">
  <p>Welcome to my site.</p>
</body>
```

### Fixed: Move it to the `<head>`

```html
<head>
  <title>My Site</title>
  <meta name="author" content="Jane Doe">
</head>
<body>
  <p>Welcome to my site.</p>
</body>
```
