Skip to main content
Back to Blog
13 min readBrass-SEO Team

Video SEO for Small Business (No YouTube Needed)

You hosted the explainer video on your own site instead of YouTube. Smart move for brand control. Now Google can't find it, and you're wondering whether you made a mistake. You didn't. You just skipped the parts that make a self-hosted video visible to search.

Google can index video that lives on your own domain, but only when it can find three things: the video file, a clear thumbnail, and a text description of what the video contains. Miss any one and the video stays invisible, even when the page around it ranks fine. This guide walks through what those three things are and where transcripts quietly do most of the heavy lifting.

Quick Navigation


How Google Finds and Indexes Video

Google indexes a video when it can identify a real video file, a thumbnail, and a title on a publicly crawlable page. Google's own video indexing documentation lists these as the baseline: the video must be the main content of the page, the thumbnail must be high quality, and the file must be in a supported format that Googlebot can fetch. Block any of those with a login wall or a robots rule and the video drops out.

Three failure points account for most invisible videos. The file sits behind JavaScript that Googlebot never executes. The page offers no thumbnail Google can pull. There's no text on the page telling Google what the video is about. Each one is fixable, and the fixes stack.

Visibility shows up in two places. A video can earn a video rich result in regular Google Search, with a thumbnail and a play badge next to the listing. It can also surface in the dedicated Videos tab. Both depend on the same foundation, so you build once and qualify for both.

Brass-SEO checks indexing status for any URL through the URL Inspection API. Ask whether Google has crawled and indexed the page your video lives on before you spend time debugging schema. If the page itself isn't indexed, the video never will be.

VideoObject Structured Data

VideoObject structured data is the JSON-LD block that tells Google your page contains a specific video and what it's about. Google treats VideoObject as the primary signal for video rich results, and four properties are required: name, description, thumbnailUrl, and uploadDate. Leave one out and the video won't qualify for a rich result.

Two more properties matter for ranking and presentation. contentUrl points to the raw video file, and duration gives the length in ISO 8601 format. Google recommends supplying at least one of contentUrl or embedUrl so it can locate the actual media. Here's a minimal block you can adapt:

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to Install the Bracket in Under 3 Minutes",
  "description": "A step-by-step walkthrough of mounting the wall bracket, including the two screws people usually miss.",
  "thumbnailUrl": "https://example.com/images/bracket-thumb.jpg",
  "uploadDate": "2026-06-20",
  "duration": "PT2M48S",
  "contentUrl": "https://example.com/video/bracket-install.mp4"
}

Add transcript and hasPart clip markers if you want Google to surface key moments, the way it does with chapter links on some video results. Those are bonuses. Get the four required fields right first.

Structured data has a quirk worth knowing: Google reads the markup, then verifies it against what's actually on the page. A thumbnail URL that 404s, or a description that doesn't match the video, can disqualify the result. For the broader mechanics of schema and how Google validates it, our guide on the schema markup trick most sites skip covers the validation step in depth.

Video Sitemaps

A video sitemap is an XML file that lists each video URL with its thumbnail, title, description, and file location, so Google can discover videos it might miss during a normal crawl. Google supports video-specific sitemap extensions, and they're the most reliable way to tell Google about video that loads through JavaScript or sits on a page with several other elements.

You have two options. Add <video:video> entries to your existing sitemap, or publish a separate video sitemap and reference it in robots.txt. Each entry needs a thumbnail location, a title, a description, and either a content location (the file) or a player location (the embed). The fields mirror your VideoObject markup on purpose, so fill them consistently across both.

Most small business sites run on a CMS that generates sitemaps automatically. Check whether yours produces video entries. WordPress plugins like Yoast and Rank Math can, but the setting is often off by default. If your platform won't generate video sitemap entries, a static video-sitemap.xml you maintain by hand works fine for a handful of videos.

Thumbnails That Qualify for Rich Results

A qualifying video thumbnail is a high-resolution image, at least 60x30 pixels by Google's stated minimum and ideally far larger, that represents a real frame or scene from the video. Google pulls this image for the video rich result, so a blurry or generic thumbnail costs you the click even when you rank. Supply it explicitly in both VideoObject and your video sitemap rather than hoping Google picks a good frame.

Practical specs that work: a 16:9 image at 1280x720 or larger, in JPG or PNG, served from a URL Google can crawl. Make the thumbnail show what the video delivers. A face mid-explanation, the finished product, the screen being demoed. Stock imagery and pure text cards underperform because they don't preview the content.

One detail trips people up. The thumbnail URL must return the image directly, not redirect through a tracking link or a JavaScript loader. Test it by opening the URL in a private browser window. If you see the image, Googlebot probably can too.

Transcripts and Captions Are Crawlable Text

A transcript is the full spoken text of your video rendered as readable HTML on the page, and it's the single highest-payoff video SEO move because it converts audio Google can't parse into text it ranks. Google does not reliably transcribe your video for you. The words spoken in a self-hosted MP4 are invisible to search unless you put them on the page yourself.

Captions and transcripts serve different surfaces. Captions are the timed text track (a WebVTT or SRT file) that displays on the video for viewers and accessibility. A transcript is the same words laid out as body text below or beside the player. You want both. Captions meet accessibility requirements under WCAG and help viewers who watch without sound. The transcript feeds the crawler.

The SEO payoff is concrete. A three-minute video might carry 400 to 500 words of spoken content. Published as a transcript, that's 400 to 500 words of keyword-rich, on-topic text the rest of your page may lack. It answers questions in the exact language people search with, because that's how you spoke them. We dug into this mechanic for audio content in turning audio into SEO content, and the same logic applies frame for frame to video.

Producing accurate captions and a transcript by hand is slow. Our sister product BrassTranscripts (brasstranscripts.com) generates transcripts and caption files from a video or audio upload if you'd rather skip the typing. Whatever tool you use, edit the output for accuracy before publishing, because a garbled transcript hurts more than it helps.

One Prominent Video per Page

Google recommends one prominent video as the main content of a page, because video rich results reward pages where the video is the point, not a decoration in the footer. When you scatter five small videos across a page, Google struggles to identify which one the page is about, and none of them earn a rich result. Pick the hero video and build the page around it.

This shapes how you structure a site with lots of video. Give each important video its own page or its own clearly dominant section. A product demo gets a page. A tutorial gets a page. The video sits high, above the fold where possible, with the title as the page heading and the transcript supporting it below.

Supporting clips can still live on the page. They just shouldn't compete with the main video for the page's identity. Mark only the primary video with VideoObject and the video sitemap entry, and let the secondary ones ride along as plain embeds.

Hosting Tradeoffs: Self-Host, YouTube, or Vimeo

Self-hosting gives you full control over branding and the page, but you carry the bandwidth cost and the indexing work yourself. A YouTube embed hands Google a video it already indexes and serves fast, at the cost of YouTube branding and a sidebar of competitor videos after playback. Vimeo sits between the two: cleaner player, no recommended-video clutter, but a paid plan and less search reach than YouTube. The right choice depends on what you're optimizing for.

Here's the plain-English version of each path:

  • Self-host the file on your own domain when brand control and keeping visitors on your page matter most. You'll handle the VideoObject markup, the sitemap, and the thumbnail. You also own page-speed impact.
  • Embed YouTube when you want the easiest route to video search visibility and you don't mind YouTube's branding. The video can rank on YouTube and in Google's video results without extra schema work from you.
  • Embed Vimeo when you want a professional, distraction-free player and you're willing to pay for it. Reach is narrower than YouTube, so pair it with strong on-page text.

A hybrid works well for many small businesses. Host on YouTube for the search reach, embed that video on your own page, and add the transcript below it. You get YouTube's indexing plus your own page's topical text. The transcript carries the keywords either way.

Page Speed and Video

Video is one of the heaviest things you can put on a page, and a poorly loaded video can wreck your Core Web Vitals, the loading and stability metrics Google uses as a ranking signal. An auto-playing, auto-downloading MP4 forces the browser to fetch megabytes before the page settles. That inflates Largest Contentful Paint, the metric Google wants under 2.5 seconds for a good score.

Three habits keep video from dragging the page down. Set preload="none" so the file doesn't download until someone clicks play. Add explicit width and height (or a CSS aspect-ratio box) so the video doesn't shift layout as it loads, which protects your Cumulative Layout Shift score. Use a lightweight poster image as the placeholder instead of letting the browser render the first frame.

For YouTube and Vimeo embeds, the standard iframe loads a surprising amount of script before anyone presses play. A facade pattern, a clickable thumbnail that swaps in the real iframe only on interaction, cuts that weight dramatically. If you want to understand the metrics behind all this, our Core Web Vitals explainer breaks down each score and its threshold.

You can check the speed of a specific page, video and all, with Brass-SEO. Run a page audit on the URL and the analysis flags slow-loading elements alongside the on-page SEO issues, so you see whether the video is the bottleneck or something else is.

Putting It Together

A self-hosted video earns search visibility when four things line up: a crawlable file, accurate VideoObject markup, a real thumbnail, and a published transcript. Add a video sitemap entry and you've covered Google's discovery path end to end. None of it requires a YouTube channel.

Brass-SEO connects to both Google Search Console and Google Analytics 4, both required, and reads your actual search and traffic data to show which pages are working. After you ship the transcript and the schema, watch the page in your reports to see whether impressions for video queries climb. Start with a free first SEO analysis to see where your video pages stand today. Brass-SEO runs $25/month with a 3-day free trial and read-only access to your Google accounts.

Frequently Asked Questions

Do I Need a YouTube Channel to Rank a Video?

No. Google indexes video hosted on your own domain as long as the file is crawlable, the page carries a real thumbnail, and VideoObject structured data describes the video. A YouTube channel gives you extra reach through YouTube search, but it isn't required for video rich results in Google Search.

What Are the Required VideoObject Fields?

Google requires four VideoObject properties for a video rich result: name, description, thumbnailUrl, and uploadDate. Supplying contentUrl or embedUrl is strongly recommended so Google can locate the actual media file. Add duration to display the video length in results.

Does Google Transcribe My Video Automatically?

No, not reliably for self-hosted video. The spoken words in your MP4 stay invisible to search unless you publish them as a transcript on the page. That's why a transcript is the highest-value video SEO step: it converts audio Google can't parse into ranking text. A transcription tool can generate the transcript and caption files for you in minutes.

Should I Self-Host or Embed from YouTube?

Self-host when brand control and keeping visitors on your page matter most, and you're willing to handle the schema, sitemap, and page-speed work. Embed YouTube for the easiest path to video search visibility. A common middle path: host on YouTube, embed it on your own page, and add a transcript below for topical text.

Will a Video Slow Down My Page?

It can, if loaded carelessly. An auto-downloading video inflates Largest Contentful Paint, which Google wants under 2.5 seconds. Set preload="none", define explicit width and height to prevent layout shift, and use a facade pattern for YouTube and Vimeo embeds so the heavy iframe loads only on click.

How Many Videos Should One Page Have?

Google recommends one prominent video as the main content of a page. Scattering several small videos confuses Google about which one the page is about, and none earn a rich result. Give each important video its own page or dominant section, and mark only that primary video with VideoObject and a sitemap entry.


Learn More

Ready to try Brass-SEO?

Get AI-powered SEO insights from your Google Search Console and Analytics data.