YouTube video schema generator
Produce valid VideoObject JSON-LD for a page embedding a YouTube video, so search engines can show it as a video result. Fill the fields, copy the tag.
Video details
Fill in the title, description, thumbnail and a valid upload date to generate the markup.
How to mark up a page that embeds a video
Structured data describes something already on the page. Build the page first, then write markup that matches it, and the whole exercise stays straightforward.
- Embed the video on the page and get that working before you think about markup.
- Fill in the title and description. These should say the same thing as what a visitor sees, not a keyword-stuffed variant of it.
- Give it a thumbnail URL. The image YouTube serves for the video is a reasonable choice and you can get it from the thumbnail downloader.
- Enter the upload date and the runtime, and let the tool format both rather than typing the encoded strings by hand.
- Copy the script tag and paste it into the page template for that one page.
- Validate the live URL in the Rich Results Test, then check Search Console's Videos report a week later, because they catch different problems.
The fields, and what each one is for
VideoObject has a long vocabulary and most of it is optional. These are the parts that decide whether Google can use the markup at all.
- name is the video title and description is a summary of the video, not of the page it sits on.
- uploadDate is ISO 8601 and should carry a timezone offset, because a bare date is ambiguous about which day it means.
- thumbnailUrl has to be a crawlable image URL. If robots.txt blocks the image, the markup is inert no matter how valid it is.
- embedUrl is the player URL, the youtube.com/embed/VIDEO_ID form. contentUrl is a direct link to the media file, which you do not have for a YouTube-hosted video, so embedUrl is the one to supply.
- duration is the runtime of the video itself. Getting it wrong is worse than leaving it out, because a visible mismatch is exactly the kind of thing that gets a rich result withdrawn.
- The script tag is type="application/ld+json", and the object carries @context of https://schema.org with @type of VideoObject.
What goes wrong
Video markup fails quietly. The page keeps working, the test can even pass, and the video result never appears, with nothing in between to tell you why.
- Putting the same block in a shared template. Every page then claims the same video, and the markup contradicts the page it is on.
- An uploadDate with no timezone offset, which shows up as a warning rather than an error and gets ignored for months.
- Marking up a video that is behind a tab, a modal or a lazy-loaded section the crawler never opens. Google has to find the video on the page.
- A description written for search rather than for the video. When the markup and the visible page disagree, the markup is the part that gets distrusted.
- Validating once and never looking again. Requirements change, and a page that qualified last year can quietly stop qualifying.
Whether this is worth doing at all
Schema is a requirement for eligibility, not a ranking lever, so the honest question is whether the page has any business appearing as a video result.
- If the video is the main content, mark it up. That is exactly the case the format exists for.
- If the video is an aside on a text page, marking it up invites Google to treat the page as something it is not, which is rarely what you want.
- Remember you are competing with the YouTube watch page for the same video. Your page wins that comparison only when it adds something the watch page does not, such as a transcript, the code, or the full method.
- If the page has no embed and no plan to add one, there is nothing here to mark up, and doing it anyway is a structured data violation rather than a shortcut.
You just fixed one post. Now do the month.
The youtube video schema generator solves one piece of one post. OctoSpark plans, writes and schedules the whole calendar across every network you use, publishes it for you, and reports what actually performed.
- One calendar for every network
- Schedule once, publish everywhere
- Drafts written in your own voice
- See what actually performed
No card needed. These tools stay free either way.
Related free tools
- YouTube embed code generatorGenerate a YouTube iframe with the options that matter: start time, autoplay, mute, loop and privacy-enhanced mode, then copy the HTML into your page.
- YouTube thumbnail downloaderPaste a YouTube link and get every thumbnail size the video has, up to full 1280x720. Direct links to the images YouTube hosts: no signup, no watermark.
- UTM link generatorBuild trackable campaign URLs with consistent source, medium and campaign values.
Frequently asked questions
How this tool works, what it cannot do, and what happens to what you put into it.
Which VideoObject fields are actually required?
Google requires name, description, thumbnailUrl and uploadDate. duration and embedUrl or contentUrl are strongly recommended: without a duration you lose the runtime badge, and without an embed or content URL the video may not qualify as a video result at all.What format does duration use?
ISO 8601, so a 4 minute 31 second video is PT4M31S and a 1 hour 2 minute video is PT1H2M. It is not seconds and not mm:ss, so this tool builds the string for you and rejects a malformed one rather than emitting markup that silently fails validation.Does adding this schema guarantee a video rich result?
No. Valid markup makes the page eligible; whether Google shows a video result is its own decision, and it also needs to be able to crawl the thumbnail and find the video on the page. Schema is a requirement, not a lever.Where does the script tag go?
Anywhere in the HTML, head or body both work. One script per video, on the page that actually embeds it. Marking up a video that is not on the page is a structured data violation.Is my data private?
Yes. This tool does its work in your browser, so whatever you type, paste or upload stays on your device. Nothing is sent to our servers, which is also why it keeps working if you go offline after the page has loaded.Is this really free?
Yes. Every tool here is free with no account, no credit card and no usage cap. They exist so that the people who need our scheduling product find us, which only works if the tools are genuinely useful on their own.Do I need an account?
No. Open the page and use it. An account is only for OctoSpark itself, where you plan, schedule and publish a whole calendar rather than fixing one post at a time.Can I use the output commercially?
Yes. Anything you produce here is yours, including for client and commercial work. We claim no rights over it and we do not watermark it.