Video Structured Data: Complete Implementation Guide
VideoObject structured data enables you to provide Google with detailed metadata about videos on your pages, including the title, description, thumbnail, upload date, duration, and key moments. When properly implemented, this markup can generate video rich results — prominent search listings featuring a video thumbnail, duration badge, and playback details that drive significantly higher click-through rates. Video structured data is essential for any site hosting video content, whether it is tutorials, product demonstrations, news segments, or educational material. With video consumption continuing to grow, this markup helps your content surface in both standard search results and Google's dedicated video search tab.
Why Use VideoObject Schema?
- Display a prominent video thumbnail with duration badge in search results, dramatically increasing click-through rates
- Enable Key Moments (video chapters) in search results, allowing users to jump directly to specific sections of your video
- Appear in Google's Video tab search results and video carousels on the main search page
- Help Google understand your video content for better matching against relevant search queries
- Increase engagement by providing users with a clear preview of what the video covers before they click
Required Properties
These properties are required by Google for VideoObject structured data to be eligible for rich results.
| Property | Description |
|---|---|
| name | The title of the video. Should be descriptive, concise, and match the visible title on the page. |
| thumbnailUrl | A URL to the video's thumbnail image. Must be crawlable and indexable. Google recommends images at least 1200 pixels wide. |
| uploadDate | The date the video was first published, in ISO 8601 format. This is required for Google to assess the freshness of the content. |
| contentUrl or embedUrl | The URL to the actual video file (contentUrl) or an embeddable player URL (embedUrl). At least one must be provided for Google to verify the video. |
Recommended Properties
Adding these properties improves your chances of appearing in rich results and provides more context to search engines.
| Property | Description |
|---|---|
| description | A detailed description of the video content. Keep it under 300 characters for optimal display in search results. |
| duration | The length of the video in ISO 8601 duration format, such as PT5M30S for 5 minutes and 30 seconds. Displayed as a badge on the thumbnail. |
| hasPart (for Key Moments) | An array of Clip objects representing key moments or chapters within the video. Each Clip must include a name, startOffset, and url. |
| interactionStatistic | An InteractionCounter object representing the number of views. Includes interactionType of WatchAction and userInteractionCount. |
| publication | A BroadcastEvent object with isLiveBroadcast set to true for live-streamed content, along with startDate and endDate. |
JSON-LD Example
Here is a complete VideoObject structured data example you can use as a starting point. Or use our VideoObject generator to create one automatically.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "How to Build a Garden Raised Bed — Step-by-Step Guide",
"description": "Learn how to build a raised garden bed from scratch using timber sleepers. This guide covers materials, tools, soil preparation, and planting tips for beginners.",
"thumbnailUrl": "https://example.com/images/raised-bed-thumb.jpg",
"uploadDate": "2026-02-18",
"duration": "PT12M45S",
"contentUrl": "https://example.com/videos/raised-bed-guide.mp4",
"embedUrl": "https://example.com/embed/raised-bed-guide",
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": {
"@type": "WatchAction"
},
"userInteractionCount": 48230
},
"hasPart": [
{
"@type": "Clip",
"name": "Materials and tools needed",
"startOffset": 0,
"endOffset": 95,
"url": "https://example.com/videos/raised-bed-guide?t=0"
},
{
"@type": "Clip",
"name": "Measuring and cutting the sleepers",
"startOffset": 95,
"endOffset": 280,
"url": "https://example.com/videos/raised-bed-guide?t=95"
},
{
"@type": "Clip",
"name": "Assembling the frame",
"startOffset": 280,
"endOffset": 490,
"url": "https://example.com/videos/raised-bed-guide?t=280"
},
{
"@type": "Clip",
"name": "Filling with soil and compost",
"startOffset": 490,
"endOffset": 620,
"url": "https://example.com/videos/raised-bed-guide?t=490"
},
{
"@type": "Clip",
"name": "Planting tips for beginners",
"startOffset": 620,
"endOffset": 765,
"url": "https://example.com/videos/raised-bed-guide?t=620"
}
],
"author": {
"@type": "Person",
"name": "Claire Gardener",
"url": "https://example.com/authors/claire-gardener"
}
}
</script>How to Implement VideoObject Schema
- 1Identify all pages on your site that contain video content and ensure each video is the primary or prominent content on the page — Google may not generate rich results for incidental videos.
- 2Add a JSON-LD script block to each video page using the VideoObject type with all required properties: name, thumbnailUrl, uploadDate, and either contentUrl or embedUrl.
- 3Include the duration property in ISO 8601 format to enable the duration badge on thumbnails in search results.
- 4For longer videos, add Key Moments using the hasPart property with an array of Clip objects, each specifying a name, startOffset (in seconds), and a URL with a timestamp parameter.
- 5Validate your structured data using Google's Rich Results Test and resolve any errors, paying particular attention to thumbnail accessibility and video URL validity.
- 6Monitor the Video enhancement report in Google Search Console to track indexing status, rich result impressions, and any issues that need attention.
Common Mistakes to Avoid
- Using a thumbnailUrl that is blocked by robots.txt or requires authentication — the thumbnail must be freely crawlable for Google to display it in rich results.
- Omitting the duration property, which means your video thumbnails will lack the duration badge that users rely on when scanning search results.
- Providing an embedUrl that points to a page rather than an embeddable player — the URL must load a functional video player when accessed directly.
- Adding VideoObject markup to pages where the video is not the main content, such as a blog post with an incidental embedded clip — Google prioritises pages where the video is prominent.
- Formatting the duration incorrectly — it must follow ISO 8601 format (e.g., PT1H30M for 1 hour 30 minutes, PT5M45S for 5 minutes 45 seconds), not a plain time string.
Testing & Validation
Before deploying your VideoObject structured data, validate it using these tools:
- 1Google Rich Results Test — Paste your page URL or code snippet to check if your structured data is eligible for rich results.
- 2Schema Markup Validator — Validates your JSON-LD syntax against the schema.org specification.
- 3Google Search Console — After deployment, monitor the Enhancements report for any errors or warnings.
Frequently Asked Questions
Do I need VideoObject markup if my videos are hosted on YouTube?
If you embed YouTube videos on your own site, adding VideoObject structured data to your page helps Google associate the video with your content and can generate rich results for your URL rather than just the YouTube listing. Without markup, Google may only surface the YouTube version in search results.
What are Key Moments and how do I enable them?
Key Moments are labelled timestamps that appear in video rich results, allowing users to jump to specific sections. You can enable them by adding Clip objects within the hasPart property of your VideoObject markup. Each Clip needs a name, startOffset (in seconds), and a URL with a timestamp. Alternatively, if your video is on YouTube, chapter markers in the description are automatically detected.
How large should my video thumbnail be?
Google recommends video thumbnails be at least 1200 pixels wide with an aspect ratio of 16:9. The minimum accepted size is 160 x 90 pixels, but larger thumbnails display better in search results and are more likely to generate rich results. Ensure thumbnails are in JPEG, PNG, or WebP format.
Can I use VideoObject for live streams?
Yes. For live-streamed content, add a publication property with a BroadcastEvent type, setting isLiveBroadcast to true and including startDate and endDate values. This enables the LIVE badge in search results during the broadcast. After the stream ends, update the markup to reflect the recorded version.
Does video structured data help with ranking in Google Video search?
While structured data is not a direct ranking factor, it significantly improves Google's ability to understand, index, and display your video content. Pages with valid VideoObject markup are far more likely to appear in the Video tab and video carousels than pages without it, effectively increasing your video's search visibility.
Ready to Generate Your VideoObject Schema?
Use our free generator to create valid VideoObject structured data in seconds.
Open VideoObject Generator