Staaarter

Video Schema Generator

Fill in a video's name, description, thumbnail, upload date, and duration, and this tool builds a complete VideoObject JSON-LD object covering the fields Google's video indexing guidelines look for, wrapped in a ready-to-paste <script type="application/ld+json"> tag. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-08-04
By Staaarter Team
generatorjson-ldvideo

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.

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

A YouTube-embedded product demo

Input

Name: DevToolbox Quick Tour
Description: A two-minute walkthrough of the tool catalog's search and categories.
Thumbnail: https://example.com/video-thumb.jpg
Upload date: 2026-07-15
Duration: PT2M4S
Embed URL: https://www.youtube.com/embed/dQw4w9WgXcQ

Output

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "DevToolbox Quick Tour",
  "description": "A two-minute walkthrough of the tool catalog's search and categories.",
  "thumbnailUrl": [
    "https://example.com/video-thumb.jpg"
  ],
  "uploadDate": "2026-07-15",
  "duration": "PT2M4S",
  "embedUrl": "https://www.youtube.com/embed/dQw4w9WgXcQ"
}
</script>

thumbnailUrl is wrapped as an array and duration is expressed as an ISO 8601 duration, matching Google's documented VideoObject format.

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.

References

Frequently Asked Questions