Import existing JSON-LD(paste code or read it from a URL)
Paste a VideoObject JSON-LD block, several script tags or a whole page's HTML. The form fills with what it finds so you can edit and improve it.
Video details
Upload date & time *
Video duration
Key moments (optional)
Add chapters as Clip items with start and end times in seconds, or let Google find key moments itself with SeekToAction. Each clip URL is the watch page URL plus ?t=start.
More thumbnails, regions & livestream (optional)
Extra thumbnail URLs
Other sizes or crops of the thumbnail. With two or more, thumbnailUrl becomes an array.
View count (optional)
Publisher
Expiration (optional)
All Google-required and recommended properties we check for are present.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject"
}
</script>How to use
Auto-fill from the video
Paste a YouTube or Vimeo link and press Auto-fill from video. Then set Watch page URL to the page on your site that plays the video, and check each filled field.
Check date, duration and key moments
Confirm the upload date, time and time zone and the duration. Add clips with a name and start and end seconds, or tick Use SeekToAction instead.
Copy and test
Add a view count, publisher, regions, livestream times and expiry date if needed. Clear the errors in the Validation panel, press Copy script and use Test in Google Rich Results Test on the code or live page.
Why Video Schema Generator
- Fills title, thumbnail, date, duration and views from YouTube or Vimeo.
- Key moments as Clip rows or SeekToAction.
- Several thumbnails, region limits and livestream BroadcastEvent markup.
- Validation for required fields, JSON-LD or microdata output.
What Google needs before it shows a video result
Valid markup is only part of it. Google's video documentation sets conditions for the page and the files as well, and pages that miss them are not shown in video results even with correct JSON-LD.
- The markup must sit on a watch page, where the video is the main reason the page exists and visitors can play it.
- The thumbnail must be a crawlable image file that is not blocked by robots.txt.
- Googlebot must be able to fetch the video file or the player; contentUrl and embedUrl help with this.
- Each video needs a unique name and description on your site.
- Key moments need either Clip items whose URLs jump to the start time, or a SeekToAction that tells Google your URL pattern.
- Use the Video indexing report in Search Console after publishing to see which videos Google could index.
Example: a tutorial with three chapters
A 12 minute tutorial on repotting plants, embedded from YouTube on example.com/repotting, has three chapters. Set Watch page URL to that page, keep the YouTube embed URL, and add clips named Choosing a pot (0 to 95), Loosening the roots (95 to 410) and Watering after (410 to 720).
The output contains a VideoObject with duration PT12M and a hasPart array of three Clip objects. The first clip has startOffset 0, endOffset 95 and the url example.com/repotting?t=0; the others follow the same pattern. The page itself must accept the t parameter and start the player at that second.
If you would rather not maintain chapters by hand, tick Use SeekToAction instead. Google then chooses the key moments itself, using the URL pattern in the target.
Common questions
Which VideoObject fields are required by Google?
Can the video schema generator read a YouTube video's details?
How do I add key moments to video schema?
What is SeekToAction in VideoObject markup?
What's the difference between contentUrl and embedUrl in VideoObject schema?
Can I use VideoObject schema for a YouTube video embedded on my page?
How does the video schema generator format the upload date?
How do I add a view count to VideoObject JSON-LD?
How do I mark up a livestream in VideoObject schema?
More Schema tools
View allAutomatic Schema Markup Generator
Crawl your site, auto-detect + generate JSON-LD for every page
Schema Markup Generator
JSON-LD or microdata for 10 types, plus a validator
FAQ Schema Generator
Build FAQPage JSON-LD by hand, paste or URL import
Article Schema Generator
Build Article, BlogPosting or NewsArticle JSON-LD