You embedded a great video on your page. It loads fast, the content is valuable, and visitors love it. But when you search for your target keyword in Google, there is no video thumbnail next to your listing — just plain blue links while your competitors get eye-catching video rich results that steal the click.
The missing piece?
Video schema markup.
Google needs structured data to confidently display video rich results in search. Without properly implemented VideoObject schema, your videos are invisible in the SERPs — no matter how good they are. In this guide, we break down exactly how video schema markup works, which properties are required, how to implement it with JSON-LD, and the common mistakes that quietly sabotage your efforts.
Key Takeaways
- Video schema markup uses the VideoObject type in JSON-LD to tell Google about your video content.
- Required properties include name, description, thumbnailUrl, uploadDate, and contentUrl or embedUrl.
- Google’s Rich Results Test is the fastest way to validate your markup before publishing.
- Common mistakes like missing thumbnailUrl or low-quality transcript data will disqualify your page from video rich results.
- Video sitemaps and schema markup serve different purposes — you should use both.
Make Your Website Competitive.
Leverage our expertise in Website Design + SEO Marketing, and spend your time doing what you love to do!
What Is Video Schema Markup?
Video schema markup is structured data you add to a web page to describe an embedded or hosted video. It uses the
Schema.org VideoObject vocabulary, and tells search engines the video’s title, description, duration, thumbnail, upload date, and more.
When Google’s crawler finds valid VideoObject markup, it can generate
video rich results — those enhanced search listings with a thumbnail image, duration badge, and sometimes the publish date right in the SERP. According to Google’s own documentation, pages with valid structured data are eligible for enhanced display in Search, which can significantly improve click-through rates.
Studies consistently show that rich results earn higher CTRs than standard blue links. For video-specific results, the visual thumbnail alone can increase clicks by 30% or more compared to text-only listings.
VideoObject Schema: Required vs. Recommended Properties
Not all VideoObject properties carry the same weight. Google divides them into
required (must have to be eligible for rich results) and
recommended (improve your chances and display quality).
Required Properties
These are non-negotiable. Miss any of them, and Google will not consider your page for video rich results:
| Property |
What It Does |
Example |
| name |
The video title |
“How to Audit Your Website Schema” |
| description |
A text description of the video |
“In this tutorial, we walk through…” |
| thumbnailUrl |
URL to the video’s thumbnail image |
“https://example.com/thumb.jpg” |
| uploadDate |
The date the video was published (ISO 8601) |
“2025-09-15T08:00:00Z” |
| contentUrl or embedUrl |
Direct URL to the video file OR the embed player URL |
At least one is required |
Recommended Properties
These are not strictly required, but including them gives Google more confidence in your content and unlocks richer display features:
- duration — Video length in ISO 8601 format (e.g., PT5M30S for 5 minutes 30 seconds). Displays the duration badge in search results.
- interactionStatistic — View count data. Helps Google gauge video popularity.
- expires (if applicable) — When the video will no longer be available.
- hasPart (Clip markup) — Define key moments so Google can link to specific timestamps.
- transcript — A full text transcript of the video’s audio content.
- author — The creator of the video content.
- embedUrl — Even if you provide contentUrl, include embedUrl for the player.
The more recommended properties you include, the better. Think of required properties as the entry ticket and recommended properties as what gets you the best seat.
How to Implement Video Schema Markup with JSON-LD
Google recommends
JSON-LD as the preferred format for structured data. It is cleaner than Microdata, easier to maintain, and can be placed in the <head> or <body> of your HTML without touching your page template structure.
Here is a complete, production-ready example:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "How to Implement Video Schema Markup",
"description": "Step-by-step tutorial on adding VideoObject structured data to your website for video rich results in Google.",
"thumbnailUrl": "https://example.com/images/video-schema-thumb.jpg",
"uploadDate": "2025-09-15T08:00:00-07:00",
"duration": "PT8M42S",
"contentUrl": "https://example.com/videos/video-schema-tutorial.mp4",
"embedUrl": "https://www.youtube.com/embed/abc123",
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": { "@type": "WatchAction" },
"userInteractionCount": 4250
},
"transcript": "Welcome to this tutorial on video schema markup. Today we will cover the required properties..."
}
</script>
Implementation Steps
- Identify every page with embedded video. Audit your site to find all pages that include video content — product pages, blog posts, landing pages, and tutorials.
- Gather the required data. For each video, collect the title, description, thumbnail URL, upload date, and content or embed URL.
- Generate the JSON-LD. Use the template above, filling in your specific values. Make sure dates follow ISO 8601 format.
- Place the script in your page. Add the JSON-LD block to the page’s <head> section or just before the closing </body>
- Test before publishing. Use Google’s Rich Results Test (more on that below).
- Monitor in Search Console. After deployment, check the “Video” enhancement report for errors and valid pages.
If you are managing video schema across dozens or hundreds of pages, a programmatic approach — using your CMS’s custom fields or a tag manager — saves enormous time. Our
schema markup services help businesses implement and maintain structured data at scale without the manual overhead.
Testing Your Video Schema Markup
Before you publish,
validate your markup. Google provides two primary tools:
Google’s Rich Results Test
The
Rich Results Test is the fastest way to check whether your VideoObject markup qualifies for rich results. Paste a URL or code snippet, and it shows:
- Whether your markup is valid
- Which rich result types are detected
- Any errors or warnings
Pro tip: Test both the live URL and the code snippet. Sometimes server-side rendering issues mean the markup appears in your source code but is not present when Google fetches the page.
Schema Markup Validator
The
Schema Markup Validator checks your structured data against the full Schema.org specification. It catches issues the Rich Results Test might not flag, such as deprecated properties or incorrect data types.
Google Search Console
After deployment, the
Enhancements > Video report in Search Console tracks how Google processes your video markup over time. It surfaces errors, warnings, and the count of valid pages — making it your ongoing monitoring dashboard.
Common Video Schema Markup Mistakes
We know these mistakes well because we have made them ourselves. When we ran a
schema audit on our own eSEOspace site, our VideoObject markup had issues that were silently preventing rich results. Here are the most common problems we see — and the ones we fixed on our own site:
1. Missing or Broken thumbnailUrl
This is the single most common disqualifier. Google
requires a valid, crawlable thumbnail URL. If your thumbnailUrl points to a 404, is blocked by robots.txt, or is simply missing, your page will not earn video rich results — no matter how perfect everything else is.
Fix: Use a direct URL to a high-quality image (minimum 160×90 pixels, recommended 1920×1080). Verify the URL loads in an incognito browser window.
2. Garbage or Auto-Generated Transcripts
Including a transcript property is great for accessibility and SEO. But pasting in raw auto-generated captions full of errors, missing punctuation, and nonsensical phrases does more harm than good. Google can evaluate transcript quality, and a garbage transcript signals low-quality content.
Fix: If you include a transcript, clean it up. Fix spelling errors, add punctuation, and make sure it reads like coherent text. If you cannot invest the time, it is better to omit the transcript property entirely than to include a poor one.
3. Wrong Date Format for uploadDate
The uploadDate property must follow ISO 8601 format. Common mistakes include using MM/DD/YYYY, omitting the time component, or using a format your CMS generates that does not comply.
Fix: Use the format YYYY-MM-DDTHH:MM:SS+00:00 or YYYY-MM-DD. Always double-check the output from your CMS or template system.
4. Providing Neither contentUrl nor embedUrl
You need at least one of these. Some implementations skip both, which immediately invalidates the markup. If you host video on YouTube or Vimeo, use the embedUrl. If you self-host, provide the contentUrl pointing to the actual video file.
5. Schema Markup Without an Actual Video on the Page
Google cross-references your structured data with the actual page content. If your VideoObject markup describes a video that is not visually present on the page — or the video is hidden behind a click, lazy-loaded incorrectly, or gated behind a login — Google may ignore the markup or flag it as misleading.
Fix: The video described in your schema must be prominently visible on the page and playable without barriers.
Video Sitemaps vs. Schema Markup: Do You Need Both?
This is a question we hear often, and the answer is
yes — use both, because they serve different purposes.
| |
Video Sitemap |
Video Schema Markup |
| Purpose |
Helps Google discover and index video content |
Helps Google display video rich results |
| Format |
XML file submitted in Search Console |
JSON-LD on individual pages |
| Scope |
Site-wide video inventory |
Per-page video details |
| Rich results |
Does not directly trigger rich results |
Directly enables rich results |
| Best for |
Large sites with many videos |
Every page with embedded video |
A
video sitemap acts as a discovery mechanism — it tells Google “here are all the pages on my site that contain video.”
Schema markup tells Google the details about each specific video so it can generate rich results.
For the best results, submit a video sitemap in Google Search Console AND add VideoObject schema to every page with video content. Together, they maximize both discovery and display. For a deeper look at optimizing video on your website, see our full guide on video website SEO and our comprehensive video SEO guide.
Step-by-Step: Adding Video Schema to an Existing Page
Already have video content on your site? Here is how to retrofit VideoObject markup:
- Audit your current state. Run your page through the Rich Results Test to see if any video markup already exists.
- Screenshot the video details. Note the title, description, and exact embed or file URL from the page source.
- Find or create a thumbnail. If you are using YouTube embeds, the thumbnail URL follows the pattern https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg.
- Build the JSON-LD block. Use the template from the implementation section above.
- Add to the page. Place the JSON-LD in the <head> section via your CMS, theme editor, or tag manager.
- Run the Rich Results Test again to confirm the markup is valid and the VideoObject is detected.
- Request indexing. In Google Search Console, use the URL Inspection tool to request re-indexing of the updated page.
If you manage a large site with video across many pages, consider referencing a technical SEO schema guide for a systematic approach to implementing structured data site-wide.
Frequently Asked Questions
How long does it take for video rich results to appear after adding schema markup?
There is no guaranteed timeline. After Google recrawls your page and processes the valid markup, rich results can appear within a few days to several weeks. You can speed up the process by requesting indexing through Google Search Console’s URL Inspection tool. Monitor the Video enhancement report for status updates.
Can I use video schema markup for YouTube embeds on my site?
Yes, absolutely. Use the YouTube embed URL as your embedUrl property (e.g., https://www.youtube.com/embed/VIDEO_ID). You can also use the YouTube thumbnail URL for thumbnailUrl. The markup helps Google associate the video with your page specifically, not just the YouTube listing.
What is the difference between contentUrl and embedUrl in VideoObject schema?
contentUrl is the direct URL to the actual video media file (e.g., an .mp4 file). embedUrl is the URL to the video player page — typically an iframe embed URL from YouTube, Vimeo, or another platform. You need at least one, but including both is ideal. If you self-host videos, use contentUrl. If you embed from a platform, use embedUrl.
Do video rich results show up on mobile and desktop?
Yes. Google displays video rich results on both mobile and desktop search results, though the visual format may differ slightly. Mobile results often show video thumbnails more prominently, which makes video schema markup especially valuable for mobile traffic — which now accounts for the majority of searches.
Ready to get your videos showing up with rich results in Google? At eSEOspace, we implement video schema markup correctly — we have audited our own VideoObject structured data and fixed the issues firsthand, so we know exactly what works and what quietly fails. Whether you need a one-time implementation or ongoing structured data management, contact eSEOspace to make sure your video content gets the visibility it deserves.