# Attribute “name” not allowed on element “meta” at this point.

> Canonical HTML version: https://rocketvalidator.com/html-validation/attribute-name-not-allowed-on-element-meta-at-this-point
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

This error is misleading at first glance because the `<meta>` tag in question is often perfectly well-formed. The real problem is usually *above* the `<meta>` tag — an element that doesn't belong in `<head>` (such as `<img>`, `<div>`, `<p>`, or other flow content) has been placed there. When the HTML parser encounters such an element inside `<head>`, it implicitly closes the `<head>` and opens the `<body>`. From that point on, any subsequent `<meta>` tags are now technically inside the `<body>`, where the `name` attribute on `<meta>` is not permitted.

In other cases, the error can also occur when a `<meta name="...">` tag is explicitly placed inside `<body>`, or when a typo or malformed tag earlier in the document breaks the expected document structure.

This matters for several reasons. Search engines and social media platforms rely on `<meta>` tags being in the `<head>` to extract page descriptions, Open Graph data, and other metadata. If the document structure is broken and `<meta>` tags end up in the `<body>`, this metadata may be ignored entirely. Additionally, elements like `<img>` inside `<head>` won't render as expected, and the overall document structure will be invalid, potentially causing unpredictable behavior across browsers.

## How to fix it

1. **Look above the flagged `<meta>` tag.** Find any element in the `<head>` that doesn't belong there — common culprits include `<img>`, `<div>`, `<span>`, `<p>`, `<a>`, or `<section>`.
2. **Move the offending element** into the `<body>` where it belongs.
3. **If the `<meta>` tag itself is in the `<body>`**, move it into the `<head>`.
4. **Check for malformed tags** above the `<meta>` — an unclosed tag or a typo can break the parser's understanding of the document structure.

Only certain elements are allowed inside `<head>`: `<title>`, `<meta>`, `<link>`, `<style>`, `<script>`, `<noscript>`, `<base>`, and `<template>`.

## Examples

### An invalid element in `<head>` breaks the context

The `<img>` tag is not allowed inside `<head>`. The parser implicitly closes `<head>` when it encounters it, so the `<meta>` tag that follows ends up in `<body>`:

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
    <img src="photo.jpg" alt="A smiling cat">
    <meta name="description" content="A page about cats">
  </head>
  <body>
    <p>Welcome!</p>
  </body>
</html>
```

Move the `<img>` into the `<body>` to fix the issue:

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
    <meta name="description" content="A page about cats">
  </head>
  <body>
    <img src="photo.jpg" alt="A smiling cat">
    <p>Welcome!</p>
  </body>
</html>
```

### A `<meta>` tag accidentally placed in `<body>`

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <meta name="author" content="Jane Doe">
    <p>Hello world</p>
  </body>
</html>
```

Move the `<meta>` tag into `<head>`:

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
    <meta name="author" content="Jane Doe">
  </head>
  <body>
    <p>Hello world</p>
  </body>
</html>
```

### A malformed tag disrupts the `<head>`

A missing closing `>` on a `<link>` tag can confuse the parser, causing subsequent elements to be misinterpreted:

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
    <link rel="stylesheet" href="style.css"
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
  <body>
    <p>Content</p>
  </body>
</html>
```

Close the `<link>` tag properly:

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
    <link rel="stylesheet" href="style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
  <body>
    <p>Content</p>
  </body>
</html>
```
