Media & Accessibility Checks
This check reference explains how the scanner judges the images, graphics, video and audio on a page: whether they come with text that people and software can read, and whether images keep the page light and stable. This dimension accounts for 15% of your AEO Score.
Text Alternatives
Alt text and labels tell screen readers, search engines and text-based tools what an image or graphic shows.
Image Accessibility
<img> elements. Images that look decorative are left out: an explicitly empty alt="", or a file address with words such as spacer, divider, bullet, arrow, icon-, bg-, background or pattern. For the rest it measures how many have alt text and how good that alt text is.
alt="" for decorative images. An Auto-Fix rule can add alt text in visitors' browsers, but most AI fetchers do not run scripts, so use "Copy permanent fix" to put it in your HTML.
<!-- Content image - needs descriptive alt -->
<img src="ceo-headshot.jpg"
alt="Jane Smith, CEO of TechCorp, smiling in professional attire">
<!-- Product image - include key details -->
<img src="blue-sneakers.jpg"
alt="Nike Air Max 90 in royal blue, side view">
<!-- Decorative image - empty alt -->
<img src="decorative-line.svg" alt="" role="presentation">
<!-- BAD: Generic or unhelpful --> <img src="chart.png" alt="image"> <img src="team.jpg" alt="photo"> <img src="product.jpg" alt="IMG_4521.jpg"> <img src="ceo.jpg" alt="Image of a person"> <!-- GOOD: Descriptive and contextual --> <img src="chart.png" alt="Bar chart showing 40% increase in Q3 revenue"> <img src="team.jpg" alt="Marketing team collaborating in conference room"> <img src="product.jpg" alt="Red leather handbag with gold buckle, front view"> <img src="ceo.jpg" alt="Sarah Chen, CEO, speaking at TechConf 2024">
SVG Accessibility
<svg> elements (identical copies counted once, definitions inside <defs> or <symbol> left out), <img> files ending in .svg, and .svg files in <object> or <embed>. Each inline SVG is checked for a <title> inside it, or role="img", aria-label or aria-labelledby.
<symbol> and <use>), and drops for very complex graphics and for each issue found. Decorative SVGs marked aria-hidden="true" still count as unlabelled here, although hiding them is right for screen readers.
role="img" and a <title> or aria-label; mark purely decorative ones aria-hidden="true". When a chart or infographic carries numbers, state them in the text as well.
<!-- Meaningful SVG - needs accessibility -->
<svg role="img" aria-label="Company growth chart"
viewBox="0 0 100 100">
<title>Company Growth Chart</title>
<desc>A line chart showing revenue growing 45% year over year</desc>
</svg>
<!-- Decorative SVG - hide from assistive tech -->
<svg aria-hidden="true" class="decorative-divider">
<!-- Decorative pattern -->
</svg>
Image Optimization
Formats, declared sizes and lazy loading that keep image-heavy pages fast and stable while they load.
Image Optimization
<img> elements: how many use loading="lazy", how many are WebP or AVIF (judged from the file address), how many declare both width and height, and whether any are BMP, TIFF or RAW files. The scanner does not download the images, so file size and compression quality are not measured.
loading="lazy" to images below the first screen (never to the main image at the top) and compress images, for example with Squoosh or ImageOptim. These attributes belong in your own HTML: Auto-Fix does not change images.
<!-- Before: Unoptimized image -->
<img src="photo-original.jpg"> <!-- 2.4MB -->
<!-- After: Optimized image -->
<img src="photo-optimized.webp"
width="800" height="600"
loading="lazy"
alt="Product showcase"> <!-- 95KB -->
# CLI tools for optimization
# ImageMagick - resize and compress
convert input.jpg -resize 800x600 -quality 85 output.jpg
# cwebp - convert to WebP
cwebp -q 80 input.jpg -o output.webp
<img src>. An image served through <picture> with WebP or AVIF sources and a JPEG fallback counts as JPEG, and so does WebP that a CDN serves from an address ending in .jpg. The pattern below is still good for visitors.
<picture> <source srcset="hero.avif" type="image/avif"> <source srcset="hero.webp" type="image/webp"> <img src="hero.jpg" alt="Hero banner" width="1200" height="600"> </picture>
<!-- Width and height let the browser reserve the space before the image loads -->
<img src="product.jpg" width="800" height="600" alt="Red leather handbag, front view">
<!-- Responsive layout: keep the attributes and let CSS scale the image -->
<style>
img {
max-width: 100%;
height: auto;
}
</style>
Responsive Images
Serving smaller files to smaller screens.
Responsive Images
<img> elements with a srcset (images under 50 × 50 pixels by their width and height attributes are skipped), checks that a srcset with width descriptors such as 800w has a sizes attribute, and looks for <picture> elements and art direction (<source media>).
srcset, otherwise 70. With more, it starts at 50 and adds up to 25 for the share of images with srcset, 15 when every width-based srcset has sizes (10 when most do), 10 for a <picture> element and 5 for art direction. Either way each issue found takes off 5. The score counts in the dimension whether or not the check is marked failed.
srcset, add sizes so the browser can pick the right file, and use <picture> when different screens need a different crop.
<img srcset="product-400w.jpg 400w,
product-800w.jpg 800w,
product-1200w.jpg 1200w"
sizes="(max-width: 600px) 100vw,
(max-width: 1200px) 50vw,
600px"
src="product-800w.jpg"
alt="Premium leather wallet in brown">
Semantic Media Elements
Using HTML elements that tie an image to the text that explains it.
Figure/Figcaption Usage
<img> elements on the page that sit inside a <figure>. Whether the figure has a <figcaption> is reported but not required.
<img> counts, including logos and icons, so pages with many small images score lower.
<figure>, with a <figcaption> that says what the image shows or why it matters.
<figure>
<img src="chart-revenue.png"
alt="Q3 2024 revenue breakdown by region">
<figcaption>
Figure 3: Q3 2024 Revenue by Region.
North America led with 45% of total revenue.
</figcaption>
</figure>
Video & Audio Accessibility
Captions and transcripts make spoken content readable by people who cannot hear it and by text-based tools.
Video Accessibility
<video> element in the HTML: whether it has a caption or subtitle track (<track kind="captions"> or kind="subtitles"), or an aria-label or aria-describedby. Embedded players such as YouTube iframes are not checked.
<video controls preload="metadata" poster="thumbnail.jpg">
<source src="demo.mp4" type="video/mp4">
<track kind="captions" src="captions-en.vtt"
srclang="en" label="English" default>
<track kind="captions" src="captions-es.vtt"
srclang="es" label="Spanish">
</video>
<article>
<h2>Product Demo Video</h2>
<video controls poster="demo-thumbnail.jpg">
<source src="demo.mp4" type="video/mp4">
<track kind="captions" src="demo-en.vtt" srclang="en" default>
</video>
<details class="video-transcript">
<summary>View Full Transcript</summary>
<div class="transcript-content">
<p><strong>[00:00]</strong> Welcome to our product demo...</p>
<p><strong>[00:15]</strong> First, let me show you...</p>
</div>
</details>
</article>
Audio Accessibility
<audio> elements and embedded players from podcast services (Spotify, SoundCloud, Anchor, Podbean, Buzzsprout, Transistor, Simplecast). It checks that each <audio> has controls and looks for a transcript: the word "transcript" in the page text, or an element whose class contains "transcript" (on Italian pages also "trascrizione").
<audio> has controls the failure is high, otherwise medium.
controls attribute to every <audio>, publish a full transcript on the page with the speakers named, and never autoplay with sound.
<article class="podcast-episode">
<h2>Episode 42: The Future of AI</h2>
<p class="episode-meta">Duration: 45 min | Published: Oct 15, 2024</p>
<audio controls preload="metadata">
<source src="episode-42.mp3" type="audio/mpeg">
</audio>
<section class="transcript">
<h3>Full Transcript</h3>
<p><strong>Host (Sarah):</strong> Welcome to Tech Talk...</p>
<p><strong>Dr. Chen:</strong> Thanks for having me, Sarah.</p>
</section>
</article>