Video SEO: How to Rank Your Videos in Google Search

Video SEO: How to Rank Your Videos in Google Search

Somebody in your company made a video. It cost real money, it is genuinely good, and it sits on a page that gets forty visits a month.

Meanwhile a competitor's thinner video, on a thinner page, shows up in Google with a thumbnail beside it — the only coloured rectangle in a column of blue links — and takes the click.

The difference is almost never production quality. It is that one of those pages told Google what the video is, and the other left it to guess.

What video SEO actually means

Video SEO is the practice of making a video — and the page it lives on — legible to search engines, so the page ranks for the queries the video answers and, where it qualifies, earns a video thumbnail in the results.

Two outcomes worth separating, because they are optimised differently:

  • The page ranks. Standard SEO, helped by the video: more time on page, a better answer to the query, something worth linking to.
  • The video gets a rich result. A thumbnail in web results, or a listing in Google's video tab. This is where structured data and thumbnails do the work.

A search engine cannot watch your video. It reads the page around it, the metadata you attach to it, and the text you make available — the transcript, the captions, the headings. Everything below is a way of writing that down explicitly instead of hoping it gets inferred.

First decision: YouTube, your own site, or both

This is the question every video SEO conversation stalls on, so let's settle it.

When you embed a YouTube video, the video entity belongs to youtube.com. Google can — and frequently does — surface the video result pointing at the watch page rather than at yours. You get exposure; YouTube gets the session, the recommendations rail, and the next click.

When you host the video on your own domain, the video result points to your page. You keep the visitor, the analytics, the funnel, and any monetization attached to it. The cost is that you now have to do the work described in this article, and you have to serve the file properly.

YouTube embed Self-hosted / video platform
Discovery on YouTube Yes — second-largest search engine No
Search result points to Often the YouTube watch page Your page
Session after the click YouTube's recommendations Your site
Branding around the player YouTube's Yours
Structured data control Limited Total
Delivery cost Free CDN bandwidth
Data you keep Aggregate YouTube analytics Everything, joined to your CRM

The pragmatic answer for most businesses is both, with different jobs: YouTube as a discovery channel with its own edits, and your own hosting for the videos attached to pages that must convert — product, pricing, docs, courses, landing pages. If you are weighing that split seriously, our piece on making money without YouTube covers the commercial side.

What you should not do is publish the same video only as a YouTube embed on a page you need to rank, and then wonder why the rich result sends people somewhere else.

The rule that changed everything: video must be the main content

In August 2023 Google made a quiet change with loud consequences: video thumbnails in search results are shown only when the video is the main content of the page.

Overnight, sites lost video thumbnails on pages where the video was a decorative sidebar, a background loop in the hero, or a testimonial reel below the fold. Nothing was penalised — the pages still ranked — but the thumbnail, and the click-through advantage it carries, went away.

The practical translation:

  • One primary video per page, placed high, visibly the point of the page.
  • The page's title, H1 and opening paragraph should describe that video's subject, not the broader category.
  • If a page has ten videos, it is a gallery. Give each video its own URL if you want each one to rank.
  • Autoplaying background loops with no audio and no controls are decoration. Google reads them that way too.

This single rule explains most "my video isn't showing in search" cases before any schema is written.

a designer at a bright white desk in an open-plan office, reviewing an image on a large monitor

VideoObject schema: the part that does the heavy lifting

Structured data is how you tell Google what the video is, without asking it to infer. Google's video rich results are built on the VideoObject type from schema.org, and the field list is short.

Required: name, description, thumbnailUrl, uploadDate. Strongly recommended: duration, contentUrl, embedUrl.

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to set up multi-camera live streaming",
  "description": "A 6-minute walkthrough of switching, bitrate settings and redundancy for a two-camera live event.",
  "thumbnailUrl": ["https://example.com/img/multicam-1280x720.jpg"],
  "uploadDate": "2026-08-13T09:00:00+02:00",
  "duration": "PT6M24S",
  "contentUrl": "https://example.com/video/multicam.mp4",
  "embedUrl": "https://example.com/embed/multicam",
  "publisher": {
    "@type": "Organization",
    "name": "Example",
    "logo": { "@type": "ImageObject", "url": "https://example.com/img/logo.png" }
  }
}

Four details that break implementations more often than anything else:

  • duration is ISO 8601. PT6M24S, not 6:24. A wrong duration is worse than none — it can suppress the rich result.
  • uploadDate needs a timezone offset. Bare dates are accepted but vaguer than they need to be.
  • thumbnailUrl must be crawlable. Not blocked by robots.txt, not behind a signed URL that expires, ideally 1280×720 or larger, 16:9.
  • contentUrl vs embedUrl. contentUrl points at the media file, embedUrl at a player page that works on its own. Give both when you can; giving neither leaves Google unable to fetch the video at all.

Most decent video platforms — Teyuto included — emit this automatically for hosted videos and expose an oEmbed or API payload you can render into your own pages. If yours does not, a video CMS that stores duration, poster and publish date already has every field you need; it is a template change, not a project.

Add hasPart with Clip entries, or a SeekToAction, and Google can show chapter links directly under your result — each one deep-linking to a timestamp. It occupies more vertical space in the SERP than a plain listing, which is the entire point.

"hasPart": [
  { "@type": "Clip", "name": "Bitrate settings", "startOffset": 128,
    "url": "https://example.com/video/multicam?t=128" }
]

Chapters only make sense on videos long enough to have structure — tutorials, webinars, recorded sessions. On a 40-second product loop, skip it.

Video sitemaps: still worth it, still misunderstood

A video sitemap is not a replacement for schema; it is a discovery aid. Schema tells Google what a video is, once the page is crawled. A sitemap tells Google the video exists and gives it a last-modified date to prioritise.

Worth doing when you have a large library, videos added frequently, or pages whose players are rendered by JavaScript. Ignorable if you publish two videos a quarter and both have solid markup.

<url>
  <loc>https://example.com/guides/multicam-live-streaming</loc>
  <video:video>
    <video:thumbnail_loc>https://example.com/img/multicam-1280x720.jpg</video:thumbnail_loc>
    <video:title>How to set up multi-camera live streaming</video:title>
    <video:description>Switching, bitrate and redundancy for a two-camera event.</video:description>
    <video:content_loc>https://example.com/video/multicam.mp4</video:content_loc>
    <video:duration>384</video:duration>
    <video:publication_date>2026-08-13T09:00:00+02:00</video:publication_date>
  </video:video>
</url>

Note the inconsistency, because it catches people: sitemap duration is seconds; schema duration is ISO 8601.

Transcripts and captions: the text Google can actually read

A video is opaque to a crawler. A transcript is not.

Publishing the transcript on the page — real HTML, not a downloadable PDF, not injected after a click — gives search engines several hundred to several thousand words of relevant, on-topic text that would otherwise be locked inside a media file. It is the highest-leverage thing on this list after "make the video the main content", and the most commonly skipped.

Do it properly:

  • Visible in the DOM. A collapsed <details> block is fine; text loaded only on click by JavaScript is not.
  • Timestamped and clickable where the video is long — it turns the transcript into a navigation aid, which is what keeps people on the page.
  • Edited, not raw ASR. Speech-to-text output with no punctuation reads badly and helps less than you would hope.
  • Captions as WebVTT on the player itself. Captions serve accessibility and the 80% of social-adjacent viewers watching muted; they also make the video usable to more people, which is the honest reason to ship them.

Accessibility law has caught up with this too — the European Accessibility Act applies to a broad set of digital services from June 2025, and captions are squarely inside it. Doing it for SEO and doing it for compliance produce the same deliverable.

If you host a substantial library, per-video transcripts also feed on-site search — see semantic video search for what that unlocks once the text exists.

a person typing on a laptop at a desk beside floor-to-ceiling office windows overlooking a city

Thumbnails, titles and the click

Ranking is half the job. The thumbnail is what converts a ranking into a visit.

  • Custom, not a random frame. Auto-extracted posters are reliably the worst frame of the video — a blink, a mid-word mouth, a motion blur.
  • 1280×720 minimum, 16:9, JPEG or PNG, on a crawlable URL. Same image in thumbnailUrl, sitemap, and og:image so nothing conflicts.
  • Legible at 120px wide. That is roughly how it appears on mobile. One subject, high contrast, few words or none.
  • Titles under ~60 characters, front-loaded with the query intent. "Multi-camera live streaming setup (6 min walkthrough)" beats "Our Guide To Streaming".
  • Descriptions written for a human, matching the video, unique per video. Duplicate boilerplate descriptions across a library are a wasted signal.

Page speed: where video SEO quietly loses

Video is the heaviest thing most pages carry, and Core Web Vitals do not grant it an exemption.

Mistake What it costs
preload="auto" on the player Megabytes downloaded before anyone presses play
Full player JS in the critical path Delayed interactivity on every page load
Poster image at 4K Usually your LCP element — now a slow one
No width/height on the player Layout shift as the page settles
Third-party embed loaded immediately Third-party scripts, cookies, and their latency

The fixes are unglamorous and effective: preload="none" or metadata, a facade — poster image plus play button that loads the real player on click — an appropriately sized and compressed poster, explicit dimensions, and adaptive bitrate delivery so mobile visitors are not handed a 1080p ladder rung they cannot use.

A facade typically removes hundreds of kilobytes and several hundred milliseconds from first load, and costs one click from people who were going to click anyway. Modern codecs help on the bandwidth side, once the loading behaviour is right.

Measuring it: Search Console's video report

Search Console has a Video indexing report, and it is blunt in a useful way. The failure reasons you will meet:

  • "Video is not the main content of the page" — the August 2023 rule, biting. Restructure the page or accept a plain blue link.
  • "No prominent video found" — the crawler could not locate a player. Usually JS-rendered players with no <video>, no embedUrl, and nothing in a sitemap.
  • "Thumbnail could not be fetched" — blocked by robots.txt, expiring signed URL, or a hostname mismatch.
  • "Video outside the viewport" — it is below the fold or hidden behind a tab on first paint.

Check it after every publishing-template change. A single bad template silently drops video results across an entire library, and nobody notices until traffic does.

Mistakes worth naming

  • Reusing one title and description across a whole library. Common in bulk migrations, and it flattens every video into the same undifferentiated entity.
  • Blocking the video directory in robots.txt. Google needs to fetch the thumbnail and, ideally, the media.
  • Ten videos on one page. Pick one, or split the page.
  • Schema that contradicts the page. Different title in JSON-LD than in the H1 is a trust problem, not a clever trick.
  • Gating the video behind a form and expecting it to rank. If the crawler cannot reach it, it does not exist.
  • Treating video SEO as a launch task. Transcripts, chapters and thumbnails are worth adding to the videos you published two years ago that still get traffic.

Frequently asked questions

Does adding video to a page improve its ranking? Not directly — there is no ranking boost for containing a <video> tag. It helps indirectly, through engagement, dwell time and better answering the query, and it makes the page eligible for a video rich result that lifts click-through.

Do I need both schema markup and a video sitemap? Schema is the priority; it is what generates the rich result. A sitemap is the accelerant for large or frequently updated libraries. Small sites with good markup do fine without one.

Is self-hosting bad for SEO because of page speed? Only if implemented badly. Delivered from a CDN with adaptive bitrate, a facade and a compressed poster, a self-hosted video is routinely faster than a third-party embed dragging its own script bundle along.

Will YouTube outrank my own page for the same video? Frequently, yes — YouTube pages carry enormous domain authority. That is the argument for treating YouTube as a discovery channel and your own domain as the destination, with a different edit on each.

How long until a new video appears in search? Days to a few weeks, depending on crawl frequency. Requesting indexing in Search Console and listing it in a sitemap shortens the wait; nothing makes it instant.

Do transcripts really help, or is that folklore? They help, and the mechanism is not mysterious: they are the only substantial text on the page about the video's actual content. They also improve accessibility and on-site search, so the case does not rest on SEO alone.


Video SEO rewards being explicit. Name the video, describe it accurately, publish the words that are spoken in it, give it a thumbnail somebody would click, and make it unmistakably the reason the page exists. Almost every "why doesn't my video show up" case is one of those five, missing.

If you would rather not hand-build schema, transcripts and posters for every video you publish, Teyuto hosts your library on your own domain and emits the markup, captions and fast, adaptive delivery with it. Start free and put your best video on a page that keeps the click.

← All articles

Own your streaming

Start free today. Launch your platform this week. Keep every euro it earns.

Upload your first video