Skip to main content
HTML Validation

Bad value X for attribute “sizes” on element “source”: Bad media condition: Parse Error at Y

About This HTML Issue

sizes only accepts a valid media condition list (e.g., (min-width: 600px) 50vw, 100vw); malformed media conditions or missing length values trigger this parse error.

Detailed explanation

  • Element: source in a picture or audio/video context. For responsive images, use attributes srcset, optional media, and optional sizes.
  • Attribute: sizes applies only when srcset contains width descriptors (e.g., 320w, 640w). It is a comma-separated list of:
    • One or more media conditions followed by a length (e.g., (min-width: 800px) 50vw)
    • A final fallback length with no media condition (e.g., 100vw)

Common parse errors:

  • Missing parentheses around conditions: min-width: 600px → (min-width: 600px)
  • Using invalid units or tokens: 50 (needs a length like 50vw or 50rem)
  • Missing length after a condition: (min-width: 800px)
  • Trailing commas or malformed separators
  • Using sizes while srcset uses pixel density descriptors (1x, 2x); sizes is ignored for x-descriptors and may confuse validators
  • Valid media condition syntax mirrors CSS media queries without the @media keyword. Use logical operators and, or, not per CSS Media Queries spec, and ensure spaces and colons are correct.

HTML examples

  • Correct responsive image with width descriptors and sizes

    <picture>
    <source
      type="image/webp"
      srcset="hero-480.webp 480w, hero-800.webp 800w, hero-1200.webp 1200w"
      sizes="(min-width: 1200px) 1200px, (min-width: 800px) 800px, 100vw">
    <img
      src="hero-800.jpg"
      srcset="hero-480.jpg 480w, hero-800.jpg 800w, hero-1200.jpg 1200w"
      sizes="(min-width: 1200px) 1200px, (min-width: 800px) 800px, 100vw"
      alt="Hero image">
    </picture>
  • Using viewport width units for simpler sizing

    <img
    src="photo-640.jpg"
    srcset="photo-320.jpg 320w, photo-640.jpg 640w, photo-1024.jpg 1024w"
    sizes="(min-width: 900px) 50vw, 100vw"
    alt="Sample photo">
  • Correct when using pixel density descriptors (omit sizes)

    <img
    src="avatar@1x.jpg"
    srcset="avatar@1x.jpg 1x, avatar@2x.jpg 2x"
    alt="User avatar">

Fixing common mistakes

  • Add parentheses and a length:

    <img
    src="img-800.jpg"
    srcset="img-480.jpg 480w, img-800.jpg 800w"
    sizes="(min-width: 600px) 50vw, 100vw"
    alt="Example">
  • Remove stray comma and ensure final fallback:

    <img
    src="banner-800.jpg"
    srcset="banner-400.jpg 400w, banner-800.jpg 800w"
    sizes="(min-width: 700px) 60vw, 100vw"
    alt="Banner">
  • Minimal valid document example

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Valid sizes Attribute</title>
    </head>
    <body>
      <img
        src="pic-800.jpg"
        srcset="pic-400.jpg 400w, pic-800.jpg 800w"
        sizes="(min-width: 600px) 50vw, 100vw"
        alt="Picture">
    </body>
    </html>

Last reviewed: August 08, 2025

Was this guide helpful?

Find issues like this automatically

Rocket Validator scans thousands of pages in seconds, detecting HTML issues across your entire site.

Ready to validate your sites?
Start your free trial today.