My Tool Studio
Schema

Video Schema Generator

This video schema generator writes VideoObject JSON-LD with the three properties Google requires, name, thumbnailUrl and uploadDate, plus description, duration, embed and file URLs. Paste a YouTube or Vimeo link and it fills the title, description, thumbnail, upload date, duration, view count and embed URL. Add key moments as Clip rows or let Google find them with SeekToAction. You can add extra thumbnail sizes, allowed or blocked regions, a transcript, and livestream details for the LIVE badge. Content teams use it after embedding a tutorial or product demo on their own page, and can paste existing VideoObject markup to fix it. Google only shows video results where the video is the main content of the page.

Always freeNo sign upRuns in your browser
Paste a YouTube or Vimeo link. We read the public title, description, thumbnail, upload date, duration and view count, and fill the embed URL. Set the watch page URL to the page on your site that shows the video.
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 *

ISO 8601:select date / time / timezone above

Video duration

ISO 8601 duration:PT0S

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.

Output
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject"
}
</script>
Test in Google Rich Results TestValidate at validator.schema.orgThe test links copy your code first. Paste it into the tester's Code tab.

How to use

01

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.

02

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.

03

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

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?
name, thumbnailUrl and uploadDate. description, contentUrl, embedUrl, duration, interactionStatistic and hasPart are recommended. The Validation panel shows the required three as errors and asks for a description, duration and an embed or content URL as warnings.
Can the video schema generator read a YouTube video's details?
Yes. It reads the public watch page for the title, description, thumbnail, upload date, duration and view count, and builds the embed URL. If YouTube serves a consent page, it falls back to YouTube's oEmbed data, which gives only the title and thumbnail. Vimeo links use Vimeo's oEmbed data.
How do I add key moments to video schema?
Add a Clip row for each chapter with a name, start second and optional end second. Each clip's URL is the watch page URL with ?t= and the start second added. Google needs the video page to support that start time parameter.
What is SeekToAction in VideoObject markup?
It tells Google how to link to any second of the video, so Google can pick key moments itself. The tool writes a target URL ending in t={seek_to_second_number}. Use it instead of Clip rows, not with them; the checkbox is disabled while clips exist.
What's the difference between contentUrl and embedUrl in VideoObject schema?
contentUrl points to the video file itself, such as an .mp4 you host. embedUrl points to the player, such as a YouTube embed link. Google recommends at least one so it can fetch the video.
Can I use VideoObject schema for a YouTube video embedded on my page?
Yes. Put your own page in Watch page URL and the YouTube embed link in Embed URL. The video must be the main content of that page for Google to show a video result.
How does the video schema generator format the upload date?
You pick a date, a time and a UTC offset, and the tool joins them into a full ISO 8601 datetime such as 2026-05-14T09:30:00+05:00. The preview under the card shows the exact value.
How do I add a view count to VideoObject JSON-LD?
Enter the total views in View count, or let the YouTube auto-fill set it. It is written as interactionStatistic with an InteractionCounter of type WatchAction. Update it now and then, since it does not refresh itself.
How do I mark up a livestream in VideoObject schema?
Tick This is a livestream and enter the start and end times. The tool adds a publication BroadcastEvent with isLiveBroadcast true and those times, using the upload time zone. Google uses this for the LIVE badge. For a replay that is removed later, set an expiration date as well.

More Schema tools

View all