Video Schema Generator

Generate valid schema.org VideoObject JSON-LD for better video SEO.

Free video schema generator. Build a valid schema.org/VideoObject JSON-LD block — including duration, clips, publisher, interaction counts — and paste it straight into your page head. 100% client-side, nothing uploaded. It runs free in your browser on Gera Tools, with nothing uploaded.

Last updated Source: Gera Tools

What is VideoObject structured data and why does it matter?

schema.org/VideoObject is a type of JSON-LD structured data that tells search engines — Google, Bing, and AI-powered assistants — exactly what your video is about: its title, description, duration, upload date, and more. When Google can parse this markup, your video becomes eligible for rich results in both the standard web index and the dedicated Video tab. Rich results typically show a thumbnail, title, duration badge, and upload date directly in the SERP — dramatically improving click-through rates compared to a plain blue link.

The Video Schema Generator builds a valid schema.org/VideoObject JSON-LD block in seconds. Paste the output into your page’s <head> element and your video becomes eligible for Google’s video rich results — the thumbnail-and-duration cards that appear in the main search results and the dedicated Video tab.

Structured data for video is one of the highest-leverage SEO moves available for content publishers. A video rich result occupies significantly more vertical space than a plain link, shows an inline thumbnail that catches the eye before the headline, and displays the video duration and upload date — all signals that increase click-through rate without any change to your content.

The three field categories

The schema is built according to the schema.org/VideoObject specification and Google’s VideoObject guidelines. Three categories of field are supported:

Required fields — the minimum set Google needs to render a rich result: video title (name), description, a direct thumbnail image URL, the upload date, a duration in ISO 8601 format, and at least one of a direct content URL or an embed URL.

Optional fields — publisher details (with optional logo as an ImageObject), author, language, region restrictions, view count (expressed as a WatchAction InteractionCounter), boolean flags for family-friendliness, subscription requirement, and live broadcast status, an expiry date, and comma-separated keywords.

Clips — each clip is a schema.org/Clip node listed under hasPart. It carries a name, a startOffset and endOffset in seconds, and an optional deep-link URL. Clips enable chapter-level rich results and are the schema equivalent of YouTube’s chapter timestamps.

Duration: the ISO 8601 format explained

Google requires duration in ISO 8601 format (PT(H)H(M)M(S)S). The rule:

  • PT prefix means “period of time”
  • 12M30S means 12 minutes and 30 seconds
  • 1H5M means 1 hour and 5 minutes (no seconds component needed if zero)
  • PT0S is valid for live streams with no fixed duration

The hour/minute/second builder in this tool constructs the string automatically. You never need to type PT12M30S by hand.

Worked example

A cooking channel publishes a how-to video. Their generated VideoObject looks like this (abbreviated):

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to Make Perfect Sourdough Bread",
  "description": "A step-by-step guide from starter to baked loaf.",
  "thumbnailUrl": "https://example.com/thumbnails/sourdough.jpg",
  "uploadDate": "2026-06-01",
  "duration": "PT12M30S",
  "embedUrl": "https://www.youtube.com/embed/exampleId",
  "hasPart": [
    { "@type": "Clip", "name": "Introduction", "startOffset": 0, "endOffset": 30 },
    { "@type": "Clip", "name": "Making the starter", "startOffset": 30, "endOffset": 180 }
  ]
}

The duration PT12M30S tells Google the video is 12 minutes and 30 seconds long — the figure shown in the duration badge. The two clips allow Google to surface “Making the starter” as a timestamped chapter link in the search result.

Formula note

The only non-trivial calculation is the ISO 8601 duration construction. Given hours (H), minutes (M), and seconds (S):

  • If H = 0, M = 12, S = 30: result is PT12M30S
  • If H = 1, M = 5, S = 0: result is PT1H5M
  • Components with a zero value are omitted unless all three are zero (which is invalid and blocked by validation)

The interaction count, when present, is emitted as a WatchAction InteractionCounter with userInteractionCount set to the integer value — the schema pattern recommended by Google for view counts.

FieldStatusNotes
nameRequiredThe video title.
descriptionRequiredPlain text; no HTML.
thumbnailUrlRequiredMust be a crawlable image URL ≥ Google’s minimum dimensions.
uploadDateRequiredISO 8601 with timezone recommended.
contentUrl or embedUrlRequired (one of)contentUrl is a raw file; embedUrl is a player.
durationRecommendedISO 8601; needed for the duration badge.
hasPart (Clip)OptionalEnables chapter/key-moments rich results.
publisher, interactionStatisticOptionalImprove entity attribution.

Common validation failures

  • Thumbnail too small or non-indexable. Google needs a fetchable image at its minimum resolution; a thumbnail behind auth or on a Disallowed path fails silently.
  • uploadDate in the future or without a timezone. Use a real, past date; add a timezone offset for reliability.
  • HTML in description. The field must be plain text — entities and tags are rejected.
  • Multiple VideoObjects on one page without a clear primary. Put the canonical video’s schema on the canonical URL only.

Always confirm the finished block in Google’s Rich Results Test before publishing — a client-side generator cannot check that your thumbnail URL is reachable or that dates resolve correctly.

Sources