Overview
Introduction
VideoObject schema is what makes a page's embedded video eligible for video rich results, video previews in search, and inclusion in Google's video index in the first place - without it, a page hosting a video is just a page with a <video> tag as far as a crawler is concerned.
This generator collects the handful of fields Google's video guidelines actually check (name, description, thumbnail, upload date, duration, and a way to locate the video) and outputs a complete, correctly-shaped JSON-LD block ready to paste into a page's <head>.
What Is Video Schema Generator?
A form-driven generator for VideoObject JSON-LD, covering the fields Google's video structured data guidelines treat as required (name, description, thumbnailUrl, uploadDate) plus duration and a contentUrl or embedUrl to locate the video itself.
thumbnailUrl is built as an array (matching Google's own documented examples) and an optional publisher is nested as an Organization with a logo, the same shape used across this category's other generators.
How Video Schema Generator Works
Name, description, and uploadDate map directly to their VideoObject properties; the thumbnail URL is wrapped in a single-item array to match the array shape Google's documentation uses.
duration is typed directly as an ISO 8601 duration (e.g. PT1M33S); contentUrl and embedUrl are both optional individually but the generator requires at least one, since that's how a crawler actually locates the video.
When To Use Video Schema Generator
Publishing a page with an embedded YouTube, Vimeo, or self-hosted video and wanting it eligible for Google's video rich results.
Retrofitting VideoObject schema onto an existing video library or course-platform page template.
Often used alongside Structured Data Validator, Article Schema Generator and Event Schema Generator.
Features
Advantages
- Enforces the fields Google's video guidelines actually require, catching missing thumbnail or upload-date fields before they ship as invalid markup.
- Wraps thumbnailUrl in the array form Google's own documentation uses, rather than leaving it as an easy-to-get-wrong bare string.
- Nests an optional publisher as a proper Organization with a logo, matching the shape used across this category's other generators.
Limitations
- Doesn't verify that contentUrl or embedUrl actually resolves to a working video, or that the thumbnail image meets Google's minimum size guidance.
- Covers a single video per generated block; a page with a video gallery needs one VideoObject generated per video.
- Doesn't expose interactionStatistic (view count) or clip/key-moment markup, which are more advanced VideoObject properties beyond this generator's core field set.
Examples
Best Practices & Notes
Best Practices
- Use a thumbnail that matches the video's actual first-frame or a representative still, since a misleading thumbnail can violate Google's structured data content policies.
- Keep uploadDate accurate to when the video was first published, not when the schema was added to the page.
- Prefer embedUrl for platform-hosted video (YouTube, Vimeo) and reserve contentUrl for a directly-accessible video file URL.
- Write description as a genuine summary of the video's content, long enough to be useful, rather than a copy of the page's meta description.
Developer Notes
duration is stored and emitted as a raw ISO 8601 string (PT#H#M#S) rather than parsed into a structured time value, matching the literal wire format schema.org expects; the generator requires at least one of contentUrl/embedUrl because a VideoObject with neither, while technically parseable JSON-LD, gives crawlers no way to actually locate the video and won't qualify for video indexing.
Video Schema Generator Use Cases
- Adding VideoObject schema to a product demo, tutorial, or course lesson page
- Marking up an embedded YouTube or Vimeo video so it's eligible for Google's video rich results
- Retrofitting structured data onto an existing video content library, one video template at a time
Common Mistakes
- Writing duration in clock format like '1:33' instead of the required ISO 8601 format (PT1M33S).
- Leaving both contentUrl and embedUrl blank, which produces markup a crawler has no way to use for video indexing.
Tips
- Run the generated output through the Structured Data Validator tool in this category to confirm the required fields are present before shipping.
- If the video is hosted on YouTube, use the /embed/ form of the URL for embedUrl rather than the regular watch page URL.