Video sitemap extension with thumbnail, title, description, and player URL
Give AI crawlers a direct inventory of analysable video without relying on JavaScript players.
What this signal tests
We check that your sitemap.xml declares the video namespace (xmlns:video) and includes video:thumbnail_loc, video:title, video:description, and either video:content_loc (direct video file) or video:player_loc (player URL) for each video. Duration should fall between one second and eight hours.
Why it matters for your visibility in AI
Most video on the web sits inside a JavaScript player. Crawlers that do not execute JavaScript (which includes most AI ingestion bots) see an empty div where the player belongs. They have no idea a video is there, let alone what it is about. A video sitemap bypasses that entirely: it is a flat list of video metadata an XML parser can read in milliseconds. A missing video sitemap means your tutorials, product demos, conference talks, and explainers are invisible to AI assistants that summarise the web. When a user asks an AI agent to find a tutorial on your topic, the agent recommends a competitor whose videos were discoverable. Your investment in production never reaches the audience that is now using AI as their primary search interface.
Pass criteria at a glance
| Criterion | Passes when |
|---|---|
| All required tags present + coverage. |
How we test it
We fetch your sitemap.xml, check for the xmlns:video namespace, and parse video:video entries. For each entry we verify the required tags (thumbnail_loc, title, description, content_loc OR player_loc) are present and well-formed. We check duration is in the valid range and compare the sitemap's video list against the <video> elements present on a sample of pages.
Show technical detection method
xmlns:video declared and all required video:* fields present; duration in range; covers >=80% of <video> elements.
If your site fails: how to fix it
- Add xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" to your sitemap.xml urlset element.
- For each page with video, add a <video:video> child containing video:thumbnail_loc (1280x720 minimum recommended), video:title (max 100 chars), video:description (max 2048 chars), and video:content_loc or video:player_loc.
- Include video:duration in seconds (between 1 and 28800), video:publication_date in W3C datetime format, and video:uploader for full credit.
- If you use a WordPress video plugin (Yoast Video SEO, Smash Balloon), enable video sitemap output. For Squarespace/Webflow, generate the XML server-side from your video CMS.
- Validate the sitemap with Google Search Console's sitemap report. Errors here cause silent exclusion from video search and downstream AI ingestion.
Quick facts
| Maturity | ESTABLISHED |
|---|---|
| Weight | medium |
| Category | Multimodal |
Primary sources
Related signals
Frequently asked questions
Should I list YouTube-embedded videos in my sitemap?
Yes, if the video is core to your page's content. Use the YouTube embed URL as the player_loc. This tells AI crawlers a video exists even if they cannot parse the embed iframe. The video stays on YouTube; the sitemap just makes its presence on your page discoverable.
What duration should I use if my video is split into segments?
List each segment as a separate <video:video> entry under its own URL if it has its own page. If they all play on a single page, list the total combined duration on one entry and use the lead segment's thumbnail and title.
Do I need a video sitemap if I already have VideoObject JSON-LD on the page?
Both help, and they target slightly different consumers. JSON-LD is read at page load by crawlers that fetched the HTML. The sitemap is read by crawlers that index the catalog of URLs separately and may never have fetched the page. Belt-and-braces coverage.
Run your own scan
Run a free scan and see how your site grades across all 155 AI-readiness signals.