No video sitemap found
What is this issue?
This issue checks whether a website has a dedicated video sitemap that helps search engines discover and index video content, enabling video rich results in Google Search.
A passing implementation means:
- A video sitemap exists at a standard location (e.g.,
/video-sitemap.xmlor/sitemap-video.xml) - The sitemap is properly formatted with
<video:video>entries following the Video Sitemap schema - Videos are listed with required metadata (URL, thumbnail, title, description)
- The video sitemap is referenced in the main sitemap or robots.txt
Example:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://example.com/videos/tutorial</loc>
<video:video>
<video:thumbnail_loc>https://example.com/thumbs/tutorial.jpg</video:thumbnail_loc>
<video:title>SEO Tutorial for Beginners</video:title>
<video:description>Learn SEO basics in this comprehensive guide</video:description>
<video:content_loc>https://example.com/videos/tutorial.mp4</video:content_loc>
<video:duration>600</video:duration>
</video:video>
</url>
</urlset>Why it matters
Video Discovery: Search engines may not discover videos that are loaded via JavaScript, embedded from third-party platforms, or located deep in the site structure. A video sitemap ensures all videos are found.
Video Rich Results: Properly indexed videos can appear in Google Video search and may be eligible for video rich results in regular search results with video thumbnails and duration.
SEO Traffic: Videos can drive significant traffic through Google Video search and enhance regular search results with visual appeal.
Metadata Context: The video sitemap provides important metadata (duration, thumbnail, title, description) that helps search engines understand and rank video content.
SEO Health Score: Having a video sitemap improves the technical SEO score by demonstrating comprehensive video content optimization.
How to fix it
Create a video sitemap - Generate an XML sitemap specifically for videos following the Video Sitemap schema.
Include required metadata - For each video, include:
<video:content_loc>or<video:player_loc>(required)<video:thumbnail_loc>(required)<video:title>(required)<video:description>(required)<video:duration>(recommended, in seconds)
Add optional metadata - Consider including:
<video:publication_date><video:tag><video:category><video:family_friendly>
Submit the sitemap - Add the video sitemap URL to:
- Google Search Console
- Your main sitemap index file (if using one)
- The
Sitemap:directive in robots.txt
Keep it updated - Ensure the sitemap is regenerated when new videos are added or old ones removed.
Validate the format - Use Google Search Console's sitemap testing tool to verify the sitemap is properly formatted.
Examples
Example 1: Basic Video Sitemap
Problematic State (Fails): No video sitemap exists. Videos are only discoverable through crawling HTML pages.
Corrected State (Passes):
Create a video sitemap at /video-sitemap.xml:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://example.com/videos/tutorial</loc>
<video:video>
<video:thumbnail_loc>https://example.com/thumbs/tutorial.jpg</video:thumbnail_loc>
<video:title>SEO Tutorial for Beginners</video:title>
<video:description>Learn SEO basics</video:description>
<video:content_loc>https://example.com/videos/tutorial.mp4</video:content_loc>
<video:duration>600</video:duration>
</video:video>
</url>
</urlset>Example 2: Missing Sitemap Declaration
Problematic State (Fails):
A video sitemap exists at /video-sitemap.xml but is not declared in robots.txt.
Corrected State (Passes): Add the sitemap to robots.txt:
User-agent: *
Disallow: /admin/
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/video-sitemap.xmlExample 3: Videos Not Discoverable via HTML
Problematic State (Fails): Videos are loaded via JavaScript and not present in the initial HTML:
<div id="video-player"></div>
<script>
// Video loaded dynamically via JavaScript
</script>Corrected State (Passes): Create a video sitemap to ensure these videos are discovered:
<url>
<loc>https://example.com/videos/tutorial</loc>
<video:video>
<video:content_loc>https://example.com/videos/tutorial.mp4</video:content_loc>
<video:thumbnail_loc>https://example.com/thumbs/tutorial.jpg</video:thumbnail_loc>
</video:video>
</url>How PixyScan detects this
This is a suggestion, and it only applies to a site that actually publishes video.
Count the video embeds the crawl found. Counted as embeds, not as elements:
- each
<video>element counts once, however many<source>fallbacks it carries. A<video>withmp4,webmandoggsources is one video written the way every browser-compatibility guide says to write it, and it used to be counted as three - a
<source type="video/…">that sits outside a<video>counts as its own video - an
<iframe>pointing at a video platform counts as one video. YouTube (includingyoutube-nocookie.comandyoutu.be), Vimeo, Dailymotion, Wistia, Loom, Brightcove, JW Player and VideoPress are recognised. Only YouTube and Vimeo were recognised before, so a site using a hosted B2B player counted zero videos and this check could never fire
- each
Find and walk the XML sitemap, from the
Sitemap:directives inrobots.txtand the conventional paths, including nested sitemap-index files.Look for
<video:video>entries inside each<url>element, reading both the namespaced form and the bare element name.Report when all of these hold:
- an XML sitemap exists (if there is none, that is issue #4's finding, not this one)
- the sitemap contains no
<video:video>entries at all - the crawl found at least one video
One video is the threshold, because unlike images a single video is already worth declaring for video search.
The finding records the video count it was based on, so the suggestion can name the number it saw rather than asserting a bare absence.
What we store
Storage Level
Site Level — This issue is evaluated at the site/domain level.
Database Table / Prisma Model
SiteCrawlBehaviourData
Stored Fields
| Field | Type | Description |
|---|---|---|
| sitemapUrls | Json? | Array of sitemap URLs found during the crawl |
| videoSitemapEntries | Json? | Array of video sitemap entries found during crawl |
Detection Dependencies
- The following data sources are required to evaluate this issue:
- XML Sitemap — The crawler looks for video sitemaps (sitemap with video extensions)
- Video Sitemap — Entries containing
<video:video>tags are parsed - HTTP Response — The crawler fetches and parses video sitemap files