Video SEO: Getting Your Videos Into Google's Video Carousel and Rich Results
- June 21, 2024
- Technical SEO
Video can earn you two distinct prizes in Google search: a thumbnail next to your blue link, and a slot in the dedicated video carousel that often sits above the organic results. Neither is automatic. Google has to reliably identify that a page contains a video, understand what that video is about, and trust that the thumbnail and watch page it shows users will actually work. The mechanism for all of that is structured data plus crawlable hosting, and the rules are the same whether your player is a YouTube embed or a self-hosted MP4.
What Google needs before it shows a video result
For any video rich result, Google requires three things to line up: a page that prominently features the video, a thumbnail it can fetch, and a content URL it can actually access. If the video is the main content of the page, you're a strong candidate. If it's buried below 1,500 words of text in a tab the user has to click, Google may decide the page isn't really "about" the video and skip the enhancement.
The structured data that ties this together is VideoObject schema. Without it, Google can sometimes infer a video from an embed, but you give up control over the thumbnail, title, and eligibility for richer features like key moments. Treat VideoObject as mandatory, not optional.
The VideoObject markup that actually matters
Add JSON-LD to every page that hosts a video. The required and strongly recommended properties are short, but each one has a failure mode worth knowing.
name— the video title. Keep it distinct from your page title if the video covers a sub-topic.description— a plain-language summary. Don't stuff keywords; Google compares this against the actual video content.thumbnailUrl— one or more URLs to a high-resolution image. This must be a real, crawlable image (more on this below).uploadDate— in ISO 8601 format with a timezone, e.g.2026-06-04T08:00:00+00:00. A missing or malformed date is one of the most common reasons markup gets ignored.duration— ISO 8601 duration format, e.g.PT8M30Sfor eight minutes thirty seconds. This powers the duration badge on the thumbnail.contentUrl— the direct link to the media file (the .mp4). This is what Google fetches to verify the video.embedUrl— the URL of the player iframe. For YouTube this is the/embed/URL.
Provide contentUrl, embedUrl, or both. Self-hosters should always supply contentUrl pointing at the raw file. For YouTube-hosted video, you typically supply embedUrl and let YouTube's own metadata carry the content reference, but adding both never hurts.
A minimal but complete block looks like this:
{"@context":"https://schema.org","@type":"VideoObject","name":"How to Re-Tile a Bathroom Floor","description":"Step-by-step guide to removing old tile and laying new.","thumbnailUrl":"https://example.com/thumb-1280x720.jpg","uploadDate":"2026-06-04T08:00:00+00:00","duration":"PT8M30S","contentUrl":"https://example.com/video/retile.mp4","embedUrl":"https://example.com/player/retile"}
Thumbnails: the silent disqualifier
More video rich results fail on the thumbnail than on any other single field. The rules are strict and unforgiving:
- The image must be at least 60x30 pixels, but aim for 1280x720 or larger — Google favors high resolution for the carousel.
- It must be a supported format (JPG, PNG, WebP) and a publicly accessible URL that returns HTTP 200.
- It must not be blocked by robots.txt. If your CDN or image directory is disallowed, Googlebot can't fetch the thumbnail and the entire video result is suppressed.
- The URL in
thumbnailUrlmust be a real file Google can crawl, not a base64 data URI or an image generated client-side by JavaScript.
For YouTube-hosted video, the platform generates thumbnails automatically and they're already crawlable, which is one reason YouTube embeds qualify so easily. Self-hosters carry the full burden of serving a static, indexable thumbnail image.
Key moments: earning the chapter links
Key moments are the timestamped links beneath a video result that jump viewers to specific segments. They expand your footprint in the SERP and improve click-through. There are two ways to get them.
- Let Google detect them automatically. For YouTube videos with chapters defined in the description (timestamps starting at
0:00), Google can surface them with no markup at all. - Mark them up explicitly with
hasPart. Add aClipfor each segment inside yourVideoObject, each with aname, astartOffset(seconds from the start), and aurlthat includes the time fragment, e.g.https://example.com/watch?t=120.
Alternatively, the SeekToAction markup tells Google the URL pattern your player uses for timestamps, letting it generate key moments from automatically detected segments. Self-hosted players need the timestamp deep-linking to actually work — if ?t=120 doesn't seek the player, don't claim it does.
Video sitemaps and discovery
Structured data tells Google what a video is; a video sitemap helps Google find the pages and gives you a place to declare metadata at scale. You don't strictly need a separate video sitemap if your VideoObject markup is solid and your pages are well-linked, but it's the most reliable way to surface videos buried deep in a large site.
A video sitemap is a standard XML sitemap with a <video:video> block per URL, carrying <video:thumbnail_loc>, <video:title>, <video:description>, <video:content_loc> (the file) and/or <video:player_loc> (the embed), plus optional duration and publication date. Submit it in Search Console like any sitemap. Practical guidance:
- One sitemap entry maps to one watch page, not one media file. The
<loc>is the page a user lands on. - Keep sitemap metadata consistent with your on-page
VideoObject. Conflicting titles or durations create ambiguity Google resolves by ignoring the enhancement. - Don't gate the content or player URLs behind logins or paywalls you haven't declared — Google can't verify what it can't reach.
YouTube-hosted vs. self-hosted: the real trade-off
The eligibility requirements are identical, but the effort and the payoff differ.
- YouTube embeds qualify for rich results with minimal work: crawlable thumbnails, working players, and auto-detected key moments come free. The cost is that clicks and watch time accrue to your YouTube presence, and the canonical video result Google shows often points at youtube.com, not your page. Adding
VideoObjectto your embedding page strengthens your page's claim, but you're competing with YouTube's own URL. - Self-hosting keeps users and engagement on your domain and lets your page be the definitive result. The cost is that you own every requirement — crawlable thumbnails, an accessible
contentUrl, working seek behavior, fast delivery, and bandwidth. Miss any one and you get no enhancement at all.
A common hybrid: host on YouTube for reach and embed on a content-rich page, then add complete VideoObject markup so the page itself is also a credible result.
Common mistakes that kill video results
- Robots.txt blocking the thumbnail or content URL. Check that both are crawlable. This silently disqualifies more pages than any markup error.
- Lazy-loaded video that never renders for Googlebot. If the player only appears after user interaction or heavy JavaScript, Google may not register a video on the page.
- Wrong date or duration format. Both must be valid ISO 8601. A human-readable "June 4, 2026" or "8:30" breaks the markup.
- Thumbnail that doesn't represent the video. Misleading or off-topic thumbnails can get results demoted or removed.
- Claiming key moments your player can't perform. If timestamp URLs don't actually seek, drop the
Clipmarkup.
Verify before you wait
After implementing, run the page through Google's Rich Results Test to confirm the VideoObject is detected and error-free, then watch the Videos report and the Video enhancement report in Search Console. Indexing of video features can lag normal indexing by days to weeks, so confirm the markup is valid first rather than assuming a problem when results don't appear overnight. Get the technical foundation right — crawlable thumbnail, accessible content URL, clean schema, prominent placement — and the carousel placement follows.
Want this handled properly on your site?
It is exactly the kind of work an advanced technical SEO audit covers. See how an advanced SEO audit works →
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.








