
You've embedded a video on your website. It plays correctly, looks good on mobile, and explains exactly what visitors need to know.
But can search engines understand what that video contains?
That's where VideoObject schema comes in.
VideoObject is a structured data type from Schema.org that helps search engines understand information about a video, including its title, description, thumbnail, upload date, and content location.
In this tutorial, we'll add VideoObject structured data to a webpage using JSON-LD, explain what each property does, and show you how to validate the implementation.
No complicated setup. Just practical code you can adapt to your own website.
What Is VideoObject Schema?
VideoObject is a Schema.org type used to describe video content in a machine-readable format.
Instead of relying entirely on the surrounding page text to understand a video, search engines can use structured data to identify important details about it.
Common properties include:
-
name: The video's title. -
description: A summary of the video. -
thumbnailUrl: The URL of a representative thumbnail image. -
uploadDate: When the video was first published. -
duration: How long the video runs. -
contentUrl: A direct URL to the video file. -
embedUrl: A URL for the video player.
Adding this markup doesn't guarantee rich search results or higher rankings. It provides clearer information about your content and may help eligible videos qualify for enhanced search appearances.
Step 1: Choose the Right Video Information
Before writing the schema, collect the details you want to describe.
For this example, imagine we're publishing a tutorial called "How to Prepare a Video for the Web."
We'll use placeholder URLs so you can replace them with your actual information.
| Property | Example |
|---|---|
| Video title | How to Prepare a Video for the Web |
| Description | A practical guide to preparing video content for online publishing. |
| Thumbnail | https://example.com/images/video-thumbnail.jpg |
| Upload date | 2026-10-10 |
| Duration | PT2M30S |
The duration uses ISO 8601 notation. PT2M30S means two minutes and thirty seconds.
Important: Use real, publicly accessible URLs and accurate metadata on your own website. Don't publish example values unchanged.
Step 2: Copy and Adapt This JSON-LD
JSON-LD is generally the most convenient format for implementing structured data because it can be added to a page without mixing the markup into the visible HTML content.
Here's a basic VideoObject example:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "How to Prepare a Video for the Web",
"description": "A practical guide to preparing video content for online publishing.",
"thumbnailUrl": [
"https://example.com/images/video-thumbnail.jpg"
],
"uploadDate": "2026-10-10",
"duration": "PT2M30S",
"contentUrl": "https://example.com/videos/video-guide.mp4"
}
</script>
Place this script in the HTML of the page containing the video. The <head> is a common location, although JSON-LD can also appear in the <body>.
Replace the example title, description, thumbnail, date, duration, and video URL with the actual details of your video.
The contentUrl should point to the actual video file, not merely to the webpage where the video appears.
If your video is embedded from another platform and you don't control its file URL, you can use embedUrl where appropriate instead.
Step 3: Understand the Properties
Let's look at the fields that matter most.
@context
"@context": "https://schema.org"
This tells parsers which vocabulary defines the properties in your markup.
@type
"@type": "VideoObject"
This identifies the entity you're describing as a video.
name
"name": "How to Prepare a Video for the Web"
Use the actual title of the video. Ideally, it should match the title visible to visitors.
description
"description": "A practical guide to preparing video content for online publishing."
Write a concise, accurate description. Avoid keyword stuffing or claims that the video doesn't support.
thumbnailUrl
"thumbnailUrl": [
"https://example.com/images/video-thumbnail.jpg"
]
Provide a crawlable thumbnail URL that represents the video.
The image should be accessible to search engines and should not be blocked by access restrictions.
uploadDate
"uploadDate": "2026-10-10"
Use the original publication date, including a time zone when supplying a timestamp. Don't change the date simply to make an older video appear new.
duration
"duration": "PT2M30S"
This is optional in the basic example, but useful when you know the video's actual runtime.
contentUrl and embedUrl
These properties serve different purposes.
contentUrl identifies the actual video media file.
embedUrl identifies a player URL through which the video can be embedded.
Use whichever property accurately describes your implementation. Don't invent a media URL or use the webpage URL as if it were the video file.
Step 4: Add the Markup to a Real Page
Suppose you publish a video explaining a product, demonstrating a service, or walking viewers through a process.
Your page might contain:
- A visible heading
- A short introduction
- An embedded video player
- A transcript
- Supporting information
The structured data should describe the video that's actually available on that page.
For example, if you're publishing professional production work, the video page could describe the featured film while the surrounding page explains its purpose and context. You can explore examples of how video projects are presented in Title Productions' work portfolio.
The important principle is consistency: your schema, visible page content, thumbnail, and video should all refer to the same item.
Don't add VideoObject markup to an unrelated page simply because it contains a link to a video elsewhere.
Step 5: Validate Before Publishing
Valid JSON isn't automatically valid structured data, and valid structured data doesn't automatically qualify for a Google rich result.
Use these tools before considering the implementation complete.
Check whether the markup uses recognised Schema.org types and properties.
Check whether Google recognises the page's markup for supported rich-result features and identify relevant errors.
After publishing, monitor your site's indexing and any relevant video indexing reports available in Search Console.
Each tool answers a different question. Passing one test doesn't guarantee that the page will be indexed or displayed with enhanced search features.
Common Mistakes to Avoid
1. Using a thumbnail that cannot be crawled
If search engines cannot access the thumbnail, they may not be able to use it as intended.
Check the image URL, permissions, and any relevant robots restrictions.
2. Marking up a video that isn't available on the page
Your structured data should accurately represent the page's content. Don't describe a video that visitors cannot find or access.
3. Using inaccurate metadata
A misleading title, incorrect publication date, or invented duration can undermine the usefulness of your markup.
Keep the information accurate and consistent.
4. Expecting schema to guarantee rankings
Structured data helps search engines interpret information. It is not a shortcut to the top of search results.
Video visibility also depends on factors such as crawlability, indexing, page quality, video accessibility, and the search engine's eligibility requirements.
5. Forgetting the user experience
Schema doesn't replace a useful webpage.
Make sure the video loads properly, has a meaningful title, works on relevant devices, and provides captions or a transcript when appropriate.
If you're building a broader publishing workflow, these details should be part of the content process rather than last-minute SEO fixes. For more practical perspectives on professional video and content production, see Title Productions' Insights.
Quick Copy-and-Paste Checklist
Before publishing, confirm that:
- [ ] The page contains the video being described.
- [ ] The title matches the actual video.
- [ ] The description accurately summarises the content.
- [ ] The thumbnail URL is correct and crawlable.
- [ ] The upload date is accurate.
- [ ] The duration matches the video's actual runtime, if supplied.
- [ ] Any
contentUrlpoints to the video file. - [ ] Any
embedUrlpoints to the appropriate player. - [ ] The JSON-LD parses correctly.
- [ ] The markup has been validated.
- [ ] The page is accessible to search engines.
Final Thoughts
VideoObject schema is a small implementation that can make your video content easier for machines to interpret.
The process is straightforward:
- Identify the video.
- Collect accurate metadata.
- Add JSON-LD.
- Validate the implementation.
- Monitor the page after publishing.
Start with one video page, test it carefully, and then apply the same process to other relevant pages.
One final reminder: structured data describes the content you actually publish. It works best when the video, webpage, thumbnail, and metadata all tell the same story.
Have you implemented VideoObject schema on a production website? Share what worked, what failed, or any validation issues you encountered in the comments.
Top comments (0)