Skip to main content

HTML Guide

Bad start tag in “p” in “noscript” in “head”.

A <p> element cannot be placed inside a <noscript> tag within the <head> section.

According to the HTML specification, the <head> element must only contain metadata, such as <title>, <meta>, <link>, <script>, and <style>. The <noscript> element is allowed in <head>, but it must only contain elements that are valid in head, not flow content like <p>. The <p> (paragraph) tag is flow content meant for the <body>. For fallback content in <head>, only metadata elements are allowed.

Incorrect example:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Example</title>
    <noscript>
      <p>JavaScript is disabled.</p>
    </noscript>
  </head>
  <body>
  </body>
</html>

Correct approaches:

  1. Remove the <p> from <noscript> in <head>:
    • If you must include fallback styles or links in case JavaScript is disabled, use only metadata tags.
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Example</title>
    <noscript>
      <link rel="stylesheet" href="no-js.css">
    </noscript>
  </head>
  <body>
  </body>
</html>
  1. Place textual fallback content in the <body> instead:
    • Moving the <noscript> block with flow content (such as <p>) to the body ensures validity.
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Example</title>
  </head>
  <body>
    <noscript>
      <p>JavaScript is disabled.</p>
    </noscript>
  </body>
</html>

Remember: Do not use <p> (or any flow content) in <noscript> inside <head>. Use such content only in the body.

Learn more:

Related W3C validator issues