Video Schema Generator — Free JSON-LD for Videos
Generate VideoObject structured data for embedded YouTube videos, tutorials, and product videos. Get eligibility for video rich results and key moments.
🎬Video Schema
Fields marked with * are required for valid schema markup.
JSON-LD Output
<span class=400">"text-gray-500"><script type=400">"application/ld+json"></span>
{
400">"@context": 400">"https://schema.org",
400">"@type": 400">"VideoObject"
}
<span class=400">"text-gray-500"></script></span>Copy this code and paste it into the <head> section of your HTML page.
What is VideoObject Schema?
VideoObject is the Schema.org type for video content — whether self-hosted, embedded from YouTube/Vimeo, or live-streamed. It conveys the thumbnail image, video duration, upload date, content URL or embed URL, and optional rich features like key moments, transcript, and live broadcast status.
VideoObject is the gateway to Google's Video Search experience, the Videos tab, video rich results in main search, and key moments / chapter scrubbing on mobile. Pages embedding video without schema are invisible to these surfaces — Google has no way to know the page contains video.
Why VideoObject Schema Matters
- Video tab inclusion: Google's dedicated Video tab indexes only pages with valid VideoObject schema or YouTube URLs. Embedded video without schema = no Video tab visibility.
- Thumbnail in main SERP: Pages with video schema get a video thumbnail icon next to the title in main search results, signaling video content and lifting CTR.
- Key moments / chapter scrubbing: Mobile search shows scrubbable chapter markers on long-form videos (10+ minutes) when hasPart with Clip schema is implemented. Major CTR booster.
- Discover surfacing: Google Discover increasingly features video content, particularly with strong VideoObject schema.
- YouTube embed reclamation: If you embed YouTube videos on your site, adding VideoObject schema lets YOUR page rank for the video, not just YouTube.com.
VideoObject Schema Properties Explained
Required Properties
- name: Video title.
- description: Video summary (at least 50 words for rich result eligibility).
- thumbnailUrl: Absolute URL to a still image (1280×720 minimum). NOT the video URL — it must be an image.
- uploadDate: ISO 8601 date the video was uploaded.
Strongly Recommended Properties
- duration: ISO 8601 duration.
PT8M40S= 8 minutes 40 seconds. - contentUrl: Direct URL to the video file (if self-hosted).
- embedUrl: Embedded player URL (YouTube embed URL, Vimeo embed URL).
- hasPart: Array of Clip objects for key moments / chapters.
- transcript: Full text transcript (often appears as collapsible content below the video).
- publisher: Organization that published the video.
- isFamilyFriendly: Boolean — true / false.
- interactionStatistic: View count, like count (often pulled from YouTube API).
Step-by-Step Implementation
Step 1: Embed the Video on Your Page
The page must visibly contain the video — Google validates that the schema matches actual page content. Either self-host (HTML5 video tag) or embed from YouTube/Vimeo (iframe with embed URL).
Step 2: Generate a Thumbnail
For self-hosted: extract a representative frame. For YouTube embeds: use the auto-generated thumbnail URL pattern https://img.youtube.com/vi/[VIDEO_ID]/maxresdefault.jpg. Image must be 1280×720 or larger and a valid image MIME type.
Step 3: Calculate Duration in ISO 8601
Convert your video duration to ISO 8601: 8 minutes 40 seconds = PT8M40S, 1 hour 15 minutes = PT1H15M, 45 seconds = PT45S. Critical for video rich results — many other formats fail validation.
Step 4: Set Upload Date Accurately
Use the date the video was originally created or first published on your page, not today's date. ISO 8601 format: 2026-05-26 for date-only or 2026-05-26T14:30:00-04:00 for precise time.
Step 5: Add Key Moments (Recommended for Long Videos)
For videos over 10 minutes, add hasPart with Clip objects for chapters. Each clip needs name, startOffset (seconds), and url with timestamp fragment (e.g., https://yoursite.com/video#t=120). Significantly increases mobile CTR.
VideoObject Schema Best Practices
- Always use absolute URLs in thumbnailUrl, contentUrl, embedUrl — relative URLs fail validation.
- Match the description in schema to the description visible near the embed on your page.
- For YouTube embeds, use the privacy-enhanced embed URL:
https://www.youtube-nocookie.com/embed/[ID]. - Provide both contentUrl AND embedUrl when possible — gives Google maximum flexibility.
- Add a written summary or transcript visibly on the page below the video — improves SEO and accessibility.
- Use higher-quality thumbnails (1920×1080) when available — Google may downscale but starts from higher source.
- For live streams: set the BroadcastEvent subtype, include endDate, and update isLiveBroadcast to false after the stream ends.
Common Mistakes to Avoid
- thumbnailUrl pointing to the video file or watch page instead of an image.
- Free-text duration ("8:40" or "8 min 40 sec") instead of ISO 8601 (PT8M40S).
- Adding VideoObject to pages that don't visibly contain the video.
- Missing description (or description under 50 words).
- Stale uploadDate that gets reset to current time on every page load.
- For YouTube embeds, using the watch URL (youtube.com/watch?v=...) instead of the embed URL (youtube.com/embed/...).
- Setting isFamilyFriendly to false when the video is family-friendly (signals adult content unnecessarily).
Frequently Asked Questions
What is VideoObject schema?
VideoObject is the Schema.org type for video content embedded on or hosted by your page. It tells Google the page contains video, provides the thumbnail, duration, upload date, and content URL — enabling video rich results, key moments, and Video Search inclusion.
Do I need VideoObject for embedded YouTube videos?
Yes. Even though YouTube has its own metadata, adding VideoObject schema to YOUR page that embeds the video gives YOUR page video rich result eligibility. Without it, only the original YouTube URL gets video treatment in search.
How are key moments / chapters defined?
Add the hasPart array with Clip objects, each having name, startOffset (seconds from start), and url with timestamp fragment. Key moments appear as scrubbable chapter markers in mobile search results.
Should thumbnailUrl point to an image or the video itself?
Always an image. ThumbnailUrl is a still image URL (JPEG or PNG, 1280×720 or larger preferred). Google uses this as the preview thumbnail in search results — never link to the video file or YouTube watch page here.
What's the difference between contentUrl and embedUrl?
contentUrl is the direct URL to the video file (MP4) — used if you self-host. embedUrl is the URL for the embedded player (YouTube embed URL, Vimeo embed URL) — used for third-party hosted video. Both can coexist.
Does VideoObject work for live streams?
Yes, use the BroadcastEvent subtype with isLiveBroadcast: true plus startDate and endDate. After the stream ends, update the schema to a regular VideoObject if you keep the recording available.
Related Schema Generators
- Article Schema Generator — pair video schema with article schema for editorial video content.
- Recipe Schema Generator — include video in recipe schema for cooking video content.
- How-To Schema Generator — pair with video for tutorial content.