head.closed-early
An element that does not belong in <head> (an <img>, <iframe>, <div>, stray text) ends it early, so search engines read the metadata after it as part of <body> and ignore it.
What to change
Move the element out of <head>, into <body>, or at least below every <title>, <meta> and <link>. Only <title>, <meta>, <link>, <script>, <style>, <base>, <noscript> and <template> belong in <head>. A tag manager's or ad pixel's <noscript><iframe> or <img> goes right after the opening <body> tag.
The documentation on developers.google.comA finding of this rule on a page carries the exact edits for that page: the markup it quotes, and what to write instead.
When it runs
Runs on every SEO audit: of a page, a crawl, a build directory or HTML. An error is a problem that keeps a page out of search or out of answers, or breaks how it shows there. Each finding takes 15 points off the page's score.
The severity here is the rule's usual one: a finding can be raised or lowered when the page gives a reason.
Run it, or skip it
Check a page for this rule alone, after a fix for instance:
npx @rivi-software/agentic-seo-check audit https://example.com --rule head.closed-early
Or from an assistant, with the MCP tool seo_audit_page:
{
"url": "https://example.com",
"rules": [
"head.closed-early"
]
}
To leave it out of an audit, pass --disable head.closed-early on the command, or disableRules: ["head.closed-early"] to a tool.
More in The document
All 12 rules- Info
viewport.not-scalableThe viewport disables user zoom (user-scalable=no or maximum-scale=1). - Info
charset.missingNo character encoding is declared, in the HTML or in the Content-Type header. - Info
doctype.missingThe document does not start with <!DOCTYPE html>. - Info
document.html-too-largeThe HTML document is larger than 1.5 MB. - Warning
head.metadata-in-bodyMetadata that search engines read only in <head> (title, meta description, viewport, canonical, hreflang) is written in <body> (warning). Metadata a framework streams into a hidden part of <body> and moves into <head> with JavaScript, as Next.js does for an async generateMetadata, is info. Robots meta tags are not reported: Google honours them in <body> too. - Info
charset.lateThe character encoding is declared after the first 1024 bytes, where the HTML spec requires it, and the Content-Type header does not declare it. - Warning
https.mixed-contentAn https page loads resources over http. Browsers block scripts, stylesheets, frames and responsive images (warning) and upgrade plain images, audio and video to https, which fails when the https URL does not exist (info). With a Content-Security-Policy of upgrade-insecure-requests, every resource is upgraded (info). - Info
favicon.missingThe home page has no <link rel="icon"> (or apple-touch-icon). Google takes the icon it shows next to the site in search results from the home page.