Video SEO: Getting Your Videos Into Google's Video Carousel and Rich Results

No Comments

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. PT8M30S for 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 thumbnailUrl must 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.

  1. 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.
  2. Mark them up explicitly with hasPart. Add a Clip for each segment inside your VideoObject, each with a name, a startOffset (seconds from the start), and a url that 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 VideoObject to 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 Clip markup.

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.

    Subscribe to our newsletter!

    More from our blog