Skip to main content

Confirm

Are you sure?

SEO · Checked on every page

Image SEO optimizationWhat it checks and how to fix it

What it checks

Looks at the images in the page content (outside nav, header and footer) for four things: width and height attributes, a descriptive file name (not IMG_1234, DSC_, image1, screenshot, a UUID or a hash), a srcset or <picture>, and a loading attribute. Fails when any file name is non-descriptive or more than half the images lack dimensions, warns on smaller gaps and passes when every image has all four.

Why it matters

Images without dimensions make the layout jump as they load, which hurts Cumulative Layout Shift and Core Web Vitals. Images without srcset ship desktop-sized files to phones, and without a loading attribute offscreen images compete with the content above the fold. A descriptive file name is one of the few signals image search has about what a picture shows.

How to fix it

Name files after what they show, declare their intrinsic size, offer several widths and lazy-load images below the
fold (keep loading="eager" for the main image at the top).

<img src="/images/dmarc-report-dashboard-800.webp"
     srcset="/images/dmarc-report-dashboard-400.webp 400w,
             /images/dmarc-report-dashboard-800.webp 800w,
             /images/dmarc-report-dashboard-1600.webp 1600w"
     sizes="(max-width: 800px) 100vw, 800px"
     width="800" height="450"
     loading="lazy"
     alt="DMARC aggregate report dashboard">

In Rails:

<%= image_tag "dmarc-report-dashboard-800.webp",
      srcset: { "dmarc-report-dashboard-400.webp" => "400w", "dmarc-report-dashboard-800.webp" => "800w" },
      sizes: "(max-width: 800px) 100vw, 800px",
      width: 800, height: 450, loading: "lazy", alt: "DMARC aggregate report dashboard" %>

Monitor this automatically

Full Stack Audit runs this check and 126 others on your site on a schedule, and emails you when one that passed starts failing.

More SEO checks