The four things that decide indexing — and the one that quietly fails.
A video on your page helps that page mainly by being useful to the person watching it.
That is the honest frame. "Video improves rankings" is not a claim Google makes and not one we will make for you.
What you can control is narrower and much more concrete: whether Google can see the video exists, fetch it, and index it. That is a technical job, and it belongs with the rest of your technical and on-page SEO work.
One boundary first. This post is about video hosted or embedded on your own domain. Growing a channel, optimising titles and descriptions for YouTube's own search is a different discipline — our YouTube marketing guide covers that side.
What Google needs before it can index your video
Google documents a short, specific set of requirements. Miss one and the video is invisible in search even though a visitor can watch it perfectly well.
| Element | Required or recommended | What breaks without it |
|---|---|---|
| A watch page — the video is the point of the page | Required | Google treats a supplementary video as not eligible; the reported reason is "video isn't on a watch page" |
Player present on load, in a <video>, <iframe>, <embed> or <object> element | Required | Google cannot determine the video's position and size, and skips it |
| Thumbnail at a stable URL, fetchable by Googlebot and Googlebot Images | Required | No thumbnail, no eligibility for any video feature |
| A supported video file Google is allowed to fetch | Required | The streaming file cannot be processed, so nothing is indexed |
VideoObject: name, thumbnailUrl, uploadDate | Required for rich results | The video is not eligible for video rich results |
contentUrl, description, duration, embedUrl | Recommended | Google has to guess the file and the description |
| Video sitemap entry | Recommended | Slower discovery, especially for newly added videos |
Clip or SeekToAction | Recommended | No key moments in the result |
On thumbnails specifically, Google supports BMP, GIF, JPEG, PNG, WebP, SVG and AVIF, asks for a minimum of 60×30 pixels with larger preferred, and requires that at least 80% of the pixels are effectively opaque. A mostly transparent PNG is a documented failure reason. The same crawlability logic applies as in ordinary image SEO: if robots.txt or a login blocks it, it does not exist.
Source: Google Search Central, "Video SEO best practices", last updated 18 December 2025.
The player has to be there when the page loads
This is the point most pages get wrong, and it is the commonest real cause of a video not being indexed.
Google does not interact with your page. It does not scroll, swipe, click a poster image or press play. Google's lazy-loading documentation states this directly and tells you to make lazy-loaded content appear as it enters the viewport, with no user action required — using browser-native lazy-loading or the IntersectionObserver API.
So the pattern of showing a static thumbnail and only injecting the player on click — common in lightbox plugins and "click to load YouTube" privacy scripts — hides the player from the crawler entirely. Search Console reports it as "cannot determine video position and size".
- Render the player at its real size on load, not after a tap.
- If JavaScript injects the video, confirm the
<video>or<iframe>appears in the rendered HTML in the URL Inspection tool. - If you call a media API, keep the HTML container in place even when the API call fails.
- Do not use fragment identifiers to load the video, and do not let other elements cover the player.
Sources: "Fix lazy-loaded content", last updated 10 December 2025; "Video indexing report", Search Console Help — no last-updated date is printed on that page, read 9 October 2026.
VideoObject markup: required versus recommended
Three properties are required: name, thumbnailUrl and uploadDate. Everything else is recommended, and the recommended set is where the useful detail lives.
Google recommends contentUrl over embedUrl because it is the most effective way for Google to fetch the file. contentUrl must point at the video file itself, not the page holding it; embedUrl must point at the player, not the page.
{
"@type": "VideoObject",
"name": "How to read a GSC coverage report",
"thumbnailUrl": ["https://example.in/thumbs/gsc-coverage-1280x720.jpg"],
"uploadDate": "2026-09-14T09:30:00+05:30",
"description": "A six-minute walkthrough of the coverage report.",
"duration": "PT6M12S",
"contentUrl": "https://cdn.example.in/video/gsc-coverage.mp4",
"embedUrl": "https://player.example.in/embed/gsc-coverage"
}Key moments are also structured data, not a setting. Clip nests inside hasPart and needs name, startOffset and url; it works in every language Search supports. SeekToAction nests inside potentialAction and is supported in a named subset of languages including English. Google says it prioritises key moments that site owners set, and that markup never guarantees a specific feature.
We are not re-teaching JSON-LD here — our schema markup guide covers syntax and placement, and the schema markup generator will scaffold the block for you.
Source: "Video (VideoObject, Clip, BroadcastEvent) structured data", last updated 24 September 2026.
Video sitemaps: what they actually require
A video sitemap is the extension that tells Google a page has video and where the file and thumbnail live. Google calls it especially useful for recently added content and for videos it might otherwise not find.
Required per entry: <video:video>, <video:thumbnail_loc>, <video:title>, <video:description> (maximum 2,048 characters), and at least one of <video:content_loc> or <video:player_loc> — with content_loc preferred where you have it.
<url>
<loc>https://ex.in/watch/gsc-coverage/</loc>
<video:video>
<video:thumbnail_loc>https://ex.in/t/gsc.jpg</video:thumbnail_loc>
<video:title>How to read a GSC coverage report</video:title>
<video:description>A six-minute walkthrough.</video:description>
<video:content_loc>https://cdn.ex.in/v/gsc.mp4</video:content_loc>
</video:video>
</url>Duration, publication date, view count, uploader and live status are optional. Only use <video:expiration_date> when the video genuinely expires — an expired date removes the video from results. If your XML sitemap setup is plugin-generated, check whether video entries are actually being written; most SEO plugins do not add them by default.
Source: "Video sitemaps and alternatives", last updated 20 May 2026.
Transcripts: useful, but not a ranking trick
A transcript gives you real things. It does not give you a ranking lever, and anyone selling it as one is overstating it.
What it genuinely does:
- Puts the content in text. A six-minute explanation becomes indexable prose covering phrasings your page copy never had.
- Accessibility. Captions and a readable transcript serve people who cannot or will not play audio — which is most people on a commute.
- Repurposing. One transcript becomes the outline for a post, a carousel and an email, which is the cheapest content you will ever produce.
- Timestamps. The transcript is what you build
Clipmarkup from.
What it does not do: it is not a documented video indexing requirement, and dumping a raw auto-transcript at the foot of the page adds a wall of unedited text no one reads. Edit it into something a human would scan, or put it behind a disclosure element.
Self-hosted, YouTube embed, or a video platform
This is the decision most teams actually have to make, and it is a trade between control, page weight and where the indexing benefit lands.
| Option | What you control | Page-speed cost | Who gets the indexing benefit |
|---|---|---|---|
| Self-hosted (your server or CDN) | Everything — file, player, contentUrl, thumbnail, markup | Highest; you own bandwidth, encoding and buffering | Your page, provided the file is fetchable and not blocked |
| YouTube embed | Little — player, thumbnail and availability are YouTube's | Heavy third-party iframe; measurable LCP and script cost | Shared: YouTube holds the canonical video, your watch page can still be indexed |
| Video platform (Vimeo, Wistia, Bunny and similar) | Most of it — player, embedUrl, often sitemap and markup output | Moderate and tunable | Your page, as long as the player and file are reachable by Google |
The speed cost is not theoretical. A heavy embed above the fold is one of the easier ways to wreck a good score — see Core Web Vitals and our page speed guide for how to measure the damage before you commit.
Our default recommendation for a business site: a video platform for anything that carries commercial weight, YouTube embeds where reach matters more than control, self-hosting only when you have the CDN to back it.
First-hand: the first thing we check when a client says their videos aren't in search
From Digital Hangover's client work. This is our own diagnostic order, not a study, and it carries no measured figure — we have not published aggregate data on it.
- Run URL Inspection on the watch page and read the rendered HTML. If there is no
<video>or<iframe>in it, nothing downstream matters. This is where most of them stop. - Open the thumbnail URL in a logged-out browser. Password-walled staging CDNs and robots-blocked media folders are routine.
- Ask whether the page is a watch page at all. A product page with a 20-second loop is not, and no amount of markup changes that.
- Then look at the markup and the sitemap. Markup is the step everyone starts with and it is almost never the actual blocker.
That sequencing is most of the value. Fixing schema on a page whose player never loads for the crawler is wasted effort — which is why our SEO services engagements start with a render check, not a markup audit.
What the Search Console video report shows — and what it doesn't
The video indexing report in Search Console is page-level, not video-level, and that distinction explains most of the confusion about it.
It shows: indexed pages where Google indexed a video, indexed pages where it found a video and indexed none, the reason in each case, approximate Search and Discover impressions aggregated by page, the video and thumbnail URL, whether Google considers it a watch page, where the metadata came from, and a filter by sitemap.
It does not show: the total number of unique indexed videos on your site, a complete list of what can and cannot be indexed, every page a given video appears on, or anything about pages that are not indexed. The "last crawled" date refers to the page, not the video.
One detail worth planning around: Google indexes only one video per page. If a page carries five videos, four of them are not competing for anything. Give the important ones their own watch pages.
Source: "Video indexing report", Search Console Help — no last-updated date is printed on that page, read 9 October 2026.
Where to go from here
Work in the order the crawler does: player, thumbnail, file, markup, sitemap, report.
Frequently asked questions
Does adding a video to a page improve its rankings?
Google does not document video as a ranking factor, so we do not claim it. A video helps a page by being useful to the visitor and by making the page eligible for video features in search. The SEO work is making sure Google can find, fetch and index it.
How many videos per page will Google index?
One. Search Console's video indexing report states that only one video per page is indexed, and the report shows details for a single video even when a page has several. If you have multiple videos that matter, give each one its own watch page.
Is a video sitemap required for video rich results?
No — Google lists the video sitemap as recommended, not required. It helps Google find videos it might otherwise miss and is especially useful for recently added content. The required pieces are a crawlable player and thumbnail plus VideoObject name, thumbnailUrl and uploadDate.
Does a transcript help my video rank?
A transcript is not a documented indexing or ranking requirement. What it genuinely gives you is indexable on-page text, accessibility for people who cannot play audio, raw material for repurposing, and the timestamps you need to build Clip key-moment markup.
Why does Search Console say "cannot determine video position and size"?
Because the player is not present when the page loads — usually a poster image that only injects the video after a click. Google does not click, swipe or scroll. Render the player at its real size on load and confirm it appears in the rendered HTML in the URL Inspection tool.
We start with a render check, not a markup audit
Indexing diagnostics, VideoObject markup and video sitemap setup, built into the SEO programme.
Make Digital Hangover a preferred source
One tap tells Google to show more of our SEO and marketing coverage in your Top Stories.
