Fields

Fills the player and thumbnail URLs from the video id – no request is made.
The name as shown on the page.
A short description that matches the visible text.
Required by Google. At least 60×30 px, crawlable.
Date and time the video was first published.
Offset added to the dates. Without it Google assumes the time zone of Googlebot.
m:ss or h:mm:ss – converted to ISO 8601 (PT12M47S).
A direct link to the media file.
The URL of the embeddable player (iframe src).
Only if the video stops being available.
Shown as interactionStatistic (WatchAction).
Comma-separated ISO codes; leave empty if available everywhere.

Key moments

Mark chapters yourself (Clip) or let Google find them (SeekToAction with a URL template).

Live stream

Adds BroadcastEvent for the LIVE badge.

JSON-LD

Checking… ·

Files never leave your browserHow?

VideoObject markup with key moments and live streams

This video schema generator writes VideoObject JSON-LD for a page that hosts or embeds a video. Fill in title, thumbnails and upload date, add key moments or a live stream, and copy the validated script.

Last updated:

How it works

  1. Start from the video

    Paste a YouTube link to fill the player and thumbnail URLs, or enter your own file and player URLs.

  2. Title, date and duration

    Type the duration as 12:47 or 1:02:03 – it becomes PT12M47S. The upload date gets the time zone you choose.

  3. Key moments or live

    List clips with start and end, or give a URL template for automatic key moments; mark live streams for the LIVE badge.

Features

  • YouTube link to URLs

    The video id is taken from watch, youtu.be, shorts or embed links and turned into embed and thumbnail URLs – by string rules, without contacting YouTube.

  • Clips for chapters

    Each clip gets a name, start and end in m:ss (written as seconds) and a URL that starts the video there.

  • SeekToAction

    For automatic key moments the URL template must contain {seek_to_second_number}; the startOffset-input annotation is added for you.

  • Live streams

    A BroadcastEvent with isLiveBroadcast and start and end times makes the stream eligible for the LIVE badge.

Limits & privacy

Imported JSON-LD or HTML can be up to 1 MB. The form covers one video per page; pages with several videos need one VideoObject each, combined in the JSON.

Thumbnail and video URLs are not fetched or checked for availability. Thumbnails derived from a YouTube id use YouTube’s standard image names; maxresdefault does not exist for every video, so the hqdefault fallback is listed too.

Validation uses the schema.org vocabulary (© schema.org sponsors, CC BY-SA 3.0, see licenses). Everything stays in your browser – see the privacy page.

FAQ

Which video properties does Google require?

name, thumbnailUrl and uploadDate. Recommended are description, duration, contentUrl or embedUrl, and interactionStatistic.

Do I need markup for YouTube videos embedded on my page?

Google can often detect embedded YouTube videos, but markup describes your page's video explicitly and adds key moments and dates.

Clip or SeekToAction?

Clip when you define chapters yourself. SeekToAction when Google may find key moments automatically and your player can jump to any second through the URL.

How is duration written?

In ISO 8601: PT1M54S is 1 minute 54 seconds. Type 1:54 here and it is converted.

Should the video be the main content of the page?

For video features in Search, yes: the video should be prominent and easy to find on the page, not hidden in a sidebar.

Related tools