Video Sitemap Generator
Help Google discover and index your videos for video rich results in search
Add URLs
No URLs Added
Add URLs using the form above to generate your sitemap.
Generated Sitemap
<!-- Add URLs to generate your sitemap -->
Other Sitemap Types
About Video Sitemap Generator
Video content is one of the fastest-growing areas of web search, with Google increasingly featuring video rich results — carousels, video previews, and key moments — prominently in search results. A video sitemap is the most reliable way to ensure Google discovers your videos, understands their content, and considers them for these high-visibility video features in search.
Without a video sitemap, Google may still discover your videos by crawling your pages, but it has no guarantee of finding all of them — especially videos loaded via JavaScript players, embedded from third-party platforms, or hosted on separate domains. A video sitemap provides explicit metadata about each video including title, description, thumbnail, duration, upload date, and content ratings — information Google uses to power video rich results.
Video rich results can dramatically increase click-through rates from search. A video thumbnail displayed inline with your search result stands out visually, communicates content format immediately, and attracts users who prefer video content. For sites that invest in video production — tutorials, product demos, educational content — video sitemaps translate that investment into measurable search traffic.
Video Sitemap Metadata and Rich Results
Video sitemaps use Google's video extension namespace (xmlns:video) and support a rich set of metadata fields that feed directly into Google's video understanding and rich result generation. Beyond basic title and description, you can specify video duration, upload date, content ratings, category, tags, and whether the video requires a subscription — all of which Google uses to match videos to relevant searches.
The video:thumbnail_loc field is particularly important — this is the image Google displays as the video preview in search results. A compelling thumbnail that accurately represents the video content improves click-through rates just as an OG image does for social sharing. Google may also generate its own thumbnails from your video, but providing an explicit thumbnail gives you control over first impressions.
Video sitemaps work for both self-hosted videos and embedded videos from platforms like YouTube or Vimeo. For YouTube embeds, Google generally discovers and indexes them without a sitemap since YouTube is a Google property. For self-hosted videos, Wistia embeds, and other third-party players, a video sitemap significantly improves discovery and indexing speed.
Key Considerations
Video Content URL vs Page URL
The video:content_loc tag should point to the actual video file URL (MP4, WebM) while the page <loc> tag points to the page where the video is embedded. Google needs both — the page URL for context and the content URL to analyze the video. For videos behind players, video:player_loc can point to the player embed URL instead of the raw file.
Thumbnail Requirements
The video:thumbnail_loc image must be at least 160x90px and at most 1920x1080px. Google recommends a 16:9 aspect ratio for best display in video carousels. The thumbnail must be publicly accessible — not behind authentication or blocked by robots.txt. A high-quality, representative thumbnail significantly improves click-through rates in video search results.
Duration Accuracy
The video:duration field specifies the video length in seconds. This value must be accurate — Google verifies it against the actual video. Duration appears in search results and helps users decide whether to click. Set it to the exact duration (e.g., 305 for a 5:05 video) and keep it updated if you trim or extend videos.
Family Safety and Restrictions
The video:family_friendly tag (yes/no) and video:restriction tag (for geographic or platform restrictions) affect where and to whom your videos appear in search. Always set family_friendly accurately — incorrect values can result in your videos being restricted from certain search contexts or violating Google's content policies.
Common Video Sitemap Issues
Video Discovery Issues
- •Video content URL not accessible to Googlebot — blocked by authentication or robots.txt
- •Missing video:content_loc or video:player_loc — Google can't verify the video exists
- •JavaScript-rendered video players not providing raw content URLs
- •Videos on CDN not linked back to verified Search Console domain
Metadata Errors
- •Missing video namespace declaration in sitemap XML
- •Inaccurate video:duration causing validation failures in Search Console
- •Thumbnail image too small or wrong aspect ratio for video carousels
- •Missing video:upload_date reducing eligibility for freshness-based ranking
Rich Result Eligibility
- •Videos not meeting minimum quality thresholds for video rich results
- •Duplicate video content appearing on multiple pages without canonical handling
- •Video structured data (JSON-LD) conflicting with sitemap metadata
- •Videos too short (under 30 seconds) for most video rich result features
Implementation Guide
Complete Video Sitemap XML Format
A properly formatted video sitemap with comprehensive metadata:
<?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://www.example.com/guides/css-gradients-tutorial</loc>
<video:video>
<!-- Required fields -->
<video:thumbnail_loc>https://www.example.com/thumbnails/css-gradients.jpg</video:thumbnail_loc>
<video:title>CSS Gradient Generator Tutorial – Linear, Radial & Conic</video:title>
<video:description>Learn how to create stunning CSS gradients using our free generator tool. Covers linear, radial, conic, and repeating gradients with live code examples.</video:description>
<!-- Video source — use content_loc for direct file, player_loc for embed -->
<video:content_loc>https://www.example.com/videos/css-gradients.mp4</video:content_loc>
<!-- Optional but recommended -->
<video:duration>480</video:duration>
<video:upload_date>2026-02-28T00:00:00+00:00</video:upload_date>
<video:family_friendly>yes</video:family_friendly>
<!-- Additional metadata for richer results -->
<video:tag>css</video:tag>
<video:tag>gradients</video:tag>
<video:tag>web design</video:tag>
<video:category>Tutorial</video:category>
</video:video>
</url>
</urlset>Next.js Video Sitemap Route
Generate a video sitemap dynamically from your content database:
// app/video-sitemap.xml/route.ts
import { getAllVideoContent } from "@/lib/videos";
export async function GET() {
const videos = await getAllVideoContent();
const escapeXml = (str: string) =>
str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
const 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">
${videos.map((v) => ` <url>
<loc>${v.pageUrl}</loc>
<video:video>
<video:thumbnail_loc>${v.thumbnailUrl}</video:thumbnail_loc>
<video:title>${escapeXml(v.title)}</video:title>
<video:description>${escapeXml(v.description)}</video:description>
<video:content_loc>${v.videoUrl}</video:content_loc>
<video:duration>${v.durationSeconds}</video:duration>
<video:upload_date>${new Date(v.uploadedAt).toISOString()}</video:upload_date>
<video:family_friendly>yes</video:family_friendly>
</video:video>
</url>`).join("\n")}
</urlset>`;
return new Response(xml, {
headers: { "Content-Type": "application/xml" },
});
}Complement Video Sitemap with JSON-LD
Add VideoObject structured data alongside your video sitemap for maximum rich result eligibility:
// Add to your video page component
const videoSchema = {
"@context": "https://schema.org",
"@type": "VideoObject",
name: "CSS Gradient Generator Tutorial",
description: "Learn how to create CSS gradients with our free tool.",
thumbnailUrl: "https://example.com/thumbnails/css-gradients.jpg",
uploadDate: "2026-02-28T00:00:00+00:00",
duration: "PT8M0S", // ISO 8601 duration format
contentUrl: "https://example.com/videos/css-gradients.mp4",
embedUrl: "https://example.com/embed/css-gradients",
// Key moments for chapter-based navigation in search results
hasPart: [
{
"@type": "Clip",
name: "Introduction",
startOffset: 0,
endOffset: 60,
url: "https://example.com/guides/css-gradients-tutorial#intro",
},
{
"@type": "Clip",
name: "Linear Gradients",
startOffset: 60,
endOffset: 180,
url: "https://example.com/guides/css-gradients-tutorial#linear",
},
],
};Common Use Cases
- Tutorial sites with instructional video content embedded on pages
- Product demo pages with self-hosted explainer videos
- Educational platforms where video is the primary content format
- Marketing sites wanting video rich results for product searches
- Blogs that regularly publish video walkthroughs alongside written guides
Pro Tip
Combine your video sitemap with VideoObject JSON-LD structured data on each video page. The sitemap ensures Google discovers your videos, while JSON-LD provides the structured metadata Google needs to generate Key Moments (video chapter navigation) in search results — one of the most valuable video rich result features for educational and tutorial content.