Ch 14 — Media¶
Part V — Site design · The Technical SEO Reference
Playbook coupling:
seo-checklist.mdcovers media in five one-liners — Phase 2's image bullet (line 128), the Video module (line 137), the Discover module (line 140), and the favicon fragment in line 112. This chapter supplies the machinery: the image acquisition pipeline and its crawler layer, the full format contract, the removal toolbox, the video three-URL model with its thumbnail gate, the GSC video failure taxonomy, favicons' dual-crawler requirement, Discover's technical layer, OpenGraph properly quarantined as a standards layer, and news-surface eligibility (this chapter's canonical home).
Media SEO fails silently more than any other domain: an image implemented as a CSS background simply doesn't exist to Google Images; a video without a valid thumbnail is simply not a video result; a favicon blocked on either of two required fetches simply doesn't show. Almost nothing here errors loudly — the pipeline just drops the asset. Knowing each hard gate is the chapter.
14.1 The image pipeline¶
- 🟢 Discovery is
img srconly: Google finds images in thesrcattribute of<img>elements (including inside<picture>), and "Google doesn't index CSS images" —background-imageheroes are invisible to Google Images (image SEO doc, 2026-03-02). Per the Apr 16, 2024 changelog, extraction is src-attribute-only (→ Ch 6 §6.9 for the lazy-loading interplay: URLs must land in the renderedsrc). - 🟢 The crawler layer: Googlebot-Image (
Googlebot-Image/1.0) does image crawling, and ⚠️ its robots preferences have wide blast radius: "Crawling preferences addressed to the Googlebot-Image user agent affect Google Images, Discover, Google Video, and all features in Google Search where images, logos, and favicons are presented" (common crawlers, 2026-07-14). One disallow can take out your Discover cards and favicon at once. Googlebot-Video is the video parallel. (Full crawler taxonomy → Ch 5.) - 🟢 Responsive images:
srcset/<picture>with a plain<img src>fallback — the fallback guarantees discovery (📘 the fallback element is WHATWG HTML §4.8.1). Data-URI inlining is supported with page-size cautions (→ Ch 6 §6.3's byte budget).
14.2 Formats¶
- 🟢 The definitive list: "Google Search supports images referenced in the src attribute of img in the following file formats: BMP, GIF, JPEG, PNG, WebP, SVG, and AVIF." ⚠️ AVIF joined Aug 30, 2024 — before that its indexability was genuinely undocumented.
- 🟢 SVG indexes via
img src; inline<svg>accessibility text goes in<title>(📘 W3C/WAI), not alt. - ⚪ ⚠️ No format earns ranking treatment. Format matters through speed (LCP → Ch 15), nothing else — "WebP boosts rankings" is lore. Video thumbnails accept the same seven formats with extra constraints (§14.10).
14.3 Alt text, filenames, and context¶
- 🟢 "The most important attribute when it comes to providing more metadata for an image is the alt text… which also improves accessibility" — framed as image metadata + accessibility, not a page-ranking lever. The doc's own quality ladder: missing alt = bad; stuffed alt = bad;
alt="puppy"= better;alt="Dalmatian puppy playing fetch"= best. - 🟢 Filenames: "short, but descriptive" (
my-new-black-kitten.jpgoverIMG00023.JPG); automate at scale; translate when localizing (→ Ch 11). - 🟢 Image results inherit the host page's title/snippet — image ranking rides on landing-page quality (→ Ch 13).
- ⚪ Quarantined: alt as page-ranking factor, "keyword-rich filenames are a major lever," EXIF/geo metadata for rankings (the only embedded metadata Google documents consuming is IPTC, for licensing — §14.7).
14.4 CDNs and URL stability¶
- 🟢 Cross-domain is supported end-to-end: image sitemaps "can include URLs from other domains in the
<image:loc>elements"; favicons may be CDN-hosted. Pair with GSC verification of the CDN host and a permissive CDN robots.txt (→ Ch 4). - 🟢 ⚠️ Image URLs are crawl-budget objects: "If an image is referenced on multiple pages within a larger website, consider the site's overall crawl budget" — same image, same URL, everywhere. Every variant URL is a separate crawl, and the image pipeline reacts slowly (⚪ CDN cutovers: keep old image URLs 301ing and stable; expect weeks of re-processing).
14.5 Image sitemaps¶
- 🟢 Namespace
http://www.google.com/schemas/sitemap-image/1.1; required tags only<image:image>+<image:loc>; "Each<url>tag can contain up to 1,000<image:image>tags"; general 50MB/50k limits apply (→ Ch 9). - ⚠️ The deprecated-tags trap:
<image:caption>,<image:geo_location>,<image:title>,<image:license>are dead — plugins still emit them; they do nothing. License data moved to licensable-images markup (§14.7). - 🟢 Supplemental discovery only — not a requirement, not a guarantee.
14.6 The preferred-image mechanism (March 2026)¶
🟢 Added Mar 2, 2026 to the image SEO + Discover docs (V0-verified): three metadata routes to nominate a page's representative image — schema.org primaryImageOfPage, schema.org image on the main entity, or og:image. It is a hint, not a directive. Selection guidance: "Avoid using a generic image (for example, your site logo) or an image with text"; avoid extreme aspect ratios; high resolution. ⚠️ Related Jun 2025 clarification: the Recipe SD image property "doesn't influence the image that's chosen as a text result image" — structured-data images and text-result preview images are separate selections.
14.7 Licensable images¶
- 🟢 Live feature (doc 2025-12-10): badge in Google Images linking license info + acquisition page. Two routes with opposite maintenance profiles: structured data is per-page ("You need to add structured data for every instance an image is used, even if it's the same image") vs IPTC is per-file and portable ("embedded into the image itself… You only need to embed IPTC photo metadata once per image" — 📘 IPTC standard).
- 🟢 ⚠️ Precedence on conflict: "Google will use the structured data information."
- Properties:
contentUrl+ at least one ofcreator/creditText/copyrightNotice/license;license+acquireLicensePagepower the badge links. ⚠️ Syndication partners without the markup lose the badge unless IPTC travels in the file.
14.8 Image preview controls × AI surfaces¶
Inventory and full semantics live in Ch 7 §7.3; the image-specific interplay (robots meta spec, 2026-03-24):
- 🟢
max-image-preview:none/standard/large— documented scope "Google web search, Google Images, Discover, Assistant." ⚠️ AI Overviews/AI Mode are NOT in that scope list, whilenosnippet/max-snippetexplicitly cover them ("applies to all forms of search results (at Google: web search, Google Images, Discover, AI Overviews, AI Mode)") — never claimmax-image-previewcontrols AI surfaces. - 🟢 Conflicts: "the more restrictive rule applies" — a sitewide
nosnippetsuppresses image previews as part of the snippet. - 🟢
noimageindex: "Do not index images on this page" — ⚠️ page-scoped: "images appearing elsewhere may still be indexed through other pages" (§14.9). - 🟢
max-video-preview:[s]caps video snippet duration (0 = static image, -1 = unlimited). - ⚠️ Discover dependency: large previews require
max-image-preview:large(or AMP) — a sitewidestandard/nonequietly kills Discover cards (§14.16).
14.9 The image removal toolbox — four mechanisms, different speeds and scopes¶
| Mechanism | What it does | Speed/scope |
|---|---|---|
| 🟢 Inline-linking opt-out | Reply 200/204 with no content to Google-referrer requests: "Google will still crawl your page and see the image, but will display a thumbnail image generated at crawl time" — full-size view blocked, image still findable | Immediate-ish, "doesn't require re-processing"; explicitly not image cloaking |
| 🟢 robots.txt on Googlebot-Image | User-agent: Googlebot-Image / Disallow: /images/dogs.jpg (wildcards fine) |
Slower than the Removals tool; per-image, authoritative. ⚠️ Doc moved — old /appearance/ URL 404s; current: /crawling-indexing/prevent-images-on-your-page |
| 🟢 X-Robots-Tag noindex on the image response | Removes from the image index | Image must stay crawlable so the header can be read (→ Ch 7) |
| 🟢 Removals tool | Emergency suppression | ⚠️ "A successful request lasts only about six months" — permanent removal needs 404/410, auth, or noindex (→ Ch 7 §7.8) |
🟢 SafeSearch edge case: label explicit pages <meta name="rating" content="adult">; for mixed sites "we recommend grouping the explicit pages on a separate domain or subdomain" — otherwise the whole host risks filtering (SafeSearch doc; relevant to gambling-adjacent portfolios hosting mixed content).
14.10 Video: watch pages, the three URLs, the thumbnail gate¶
The post-Aug-2024 model (video doc, 2025-12-18):
- 🟢 "The watch page must be indexed" — video indexing is downstream of page indexing (everything in Chs 2–8 applies first).
- 🟢 ⚠️ "A watch page's main purpose is to show users a single video." The doc's own disqualified example: "A video category page that lists multiple videos of equal prominence." Video-on-the-page is not enough.
- 🟢 ⚠️ The thumbnail gate: "The video must have a valid thumbnail that's available at a stable URL." Missing/blocked/invalid thumbnail = page indexed, video not indexed as video. Micro-requirements: the seven image formats, minimum 60×30px, and ⚠️ at least 80% of pixels alpha >250 — mostly-transparent thumbnails are rejected.
- 🟢 The three-URL model: watch page URL; player URL (
embedUrl/iframe src); video file URL (contentUrl/<video:content_loc>). Previews and key moments need Google to fetch actual video bytes — don't robots-block player/content URLs, keep them stable. Embeds recognized:<video>,<embed>,<iframe>,<object>. Supported file formats: 3GP through WebM/WMV (21 listed). - 🟢 Paywalled video needs paywall structured data (→ Ch 12 §12.14).
14.11 VideoObject, key moments, LIVE badge¶
- 🟢 Required:
name(unique per video),thumbnailUrl,uploadDate(ISO 8601). Recommended:contentUrl,embedUrl,duration,description,expires,regionsAllowed/ineligibleRegion(added Sep 2024). - 🟢 ⚠️ Key moments are automatic: "Google Search tries to automatically detect the segments in your video and show key moments to users, without any effort on your part."
Clip(name/startOffset/url deep-link) andSeekToAction({seek_to_second_number}placeholder target) are overrides, not prerequisites — don't sell key-moments markup as an unlock. ⚠️ Availability differs (SD doc, 2026-02-13):Clip"is supported in all languages where Google Search is available," butSeekToActionis limited to twelve listed languages (English, Spanish, Portuguese, Italian, Chinese, French, Japanese, German, Turkish, Korean, Dutch, Russian). - 🟢 LIVE badge:
BroadcastEventin VideoObject,isLiveBroadcast:true+ start/end dates; "To make sure Google crawls your livestream video at the right time, use the Indexing API." ⚠️ That is the API's only media use: "The Indexing API can only be used to crawl pages with either JobPosting or BroadcastEvent embedded in a VideoObject" (→ Ch 9's Indexing API doctrine). - For YouTube-hosted video, key-moment timestamps can live in the YouTube description instead.
14.12 Video sitemaps and mRSS¶
- 🟢 Required per video:
<video:thumbnail_loc>,<video:title>(match the page title),<video:description>(≤2,048 chars), and ≥1 of<video:content_loc>/<video:player_loc>— ⚠️ neither may equal the watch page<loc>; Google recommendscontent_locas the most effective fetch route. - 🟢 Hard ranges: duration 1–28,800s; rating 0.0–5.0; ≤32
<video:tag>; uploader ≤255 chars; W3C datetime for dates. "Don't list videos that are unrelated to the content of the host page." All referenced files reachable: no robots blocks, no login walls, HTTP/FTP only — no streaming protocols in sitemap fields. - ⚠️ mRSS is accepted but second-class — the GSC video report has a named failure "MRSS failure; try using schema.org instead."
14.13 Third-party platforms¶
🟢 ⚠️ The double-indexing reality: "If your website embeds videos from third-party platforms like YouTube, Vimeo, or Facebook, Google may index the video both on your web page and on the third-party platform's equivalent page." Nothing in the docs promises the self-hosted copy wins the video result — "self-hosting always beats YouTube" is lore. player_loc exists precisely for platform iframes. 🟢 Server capacity is an official consideration — "Thumbnail could not be crawled due to hostload" is a named GSC failure.
14.14 Diagnosing video in Search Console¶
🟢 The video indexing report has two page states — "Video indexed" vs "No video indexed" — and its named failure reasons map 1:1 to §14.10's requirements: "Video isn't on a watch page," "No thumbnail URL provided," "Invalid thumbnail size," "Thumbnail blocked by robots.txt," "Thumbnail is transparent," "Thumbnail could not be crawled due to hostload," "Video not found on host service," "Video not processed yet," "MRSS failure." Read it as a decision tree, not a bug list. ⚠️ "Chart totals might not show the total number of unique videos indexed" (multi-video pages, cross-page embeds). The July 2026 platform properties (Instagram/TikTok/X/YouTube performance on Google surfaces) → Ch 19, their canonical home.
14.15 Favicons¶
From the favicon doc (2026-02-04):
- 🟢 ⚠️ Current requirements (Oct 24, 2024 change): 1:1 aspect ratio, minimum 8×8px, "larger than 48x48px" recommended, any valid favicon format. The old "multiple of 48px" advice is dead.
- 🟢 ⚠️ The dual-crawler requirement: "Googlebot-Image must be able to crawl the favicon file and Googlebot must be able to crawl the home page" — auditors usually check only the icon file. Supported rel values: icon, shortcut icon, apple-touch-icon, apple-touch-icon-precomposed; href relative/absolute/CDN.
- 🟢 One favicon per hostname, defined on the homepage; subdirectories can't have their own (subdomains can) — the same root-URI logic as site names (→ Ch 13 §13.4). Update latency "several days to several weeks"; accelerate via homepage recrawl request. Content policy: inappropriate icons (porn, hate symbols) are replaced with a default.
14.16 Google Discover — the technical layer¶
- 🟢 Eligibility is passive: "Content is automatically eligible to appear in Discover if it is indexed by Google and meets Discover's content policies." No tags, no feeds, no submission — and eligibility ≠ appearance.
- 🟢 The large-image spec: "At least 1200 px wide," >300,000 total pixels, 16:9 recommended; enabled via
max-image-preview:large(or AMP); nominate via "schema.org markup or the og:image meta tag" (§14.6). - 🟢 The volatility warning to bake into every forecast (playbook line 140): Discover traffic is "less predictable or dependable when compared to keyword-driven search visits." GSC Discover report: 16 months, threshold-gated — always separate Discover from Search in drop diagnosis (→ Ch 21).
- 🟡 ⚠️ Discover on desktop: unofficial. Confirmed only via Search Central Live Madrid attendee reports (Apr 2025) and staged-rollout observations (Schwartz, May 2025); the Discover doc (2026-03-09) never mentions desktop, and no official announcement exists (V0-verified absence). Present as 🟡/⚪, never as Google-documented.
- ⚠️ The doc no longer contains any RSS/feed/Follow-feature guidance; the old Follow-feature URL 404s. 🟢 Removal is dated: changelog Nov 19, 2025 — "Removed guidance on the Follow feature from Google Discover documentation. The Follow feature is no longer shown in Google Discover."
14.17 OpenGraph — a standards layer, not a Google ranking input¶
- 📘 OGP is an open spec "originally created at Facebook" (ogp.me). Required quartet:
og:title,og:type,og:image,og:url;og:imagesub-properties includeog:image:alt("A description of what is in the image (not a caption)"). - 🟢 Google's documented uses are exactly three:
og:imageas a preferred/representative-image route (Images/Discover, §14.6);og:titleas a title-link source (added May 14, 2024 → Ch 13 §13.1); OGP as an accepted video-metadata route (§14.10). Alsoog:site_nameis considered for site names (→ Ch 13 §13.4). - ⚪ Everything else — ranking claims, per-platform image dimensions (1200×630 etc.) — is platform territory, not Google.
14.18 Web Stories — verified 2026 status¶
- 🟢 Not deprecated (doc updated 2026-07-01, no notice): requires valid AMP + four mandatory metadata fields + self-referential canonical. But surfaces collapsed: current availability is single results in Search plus single Discover cards "most likely to appear in the United States, India, and Brazil." Removed from Google Images and the Discover carousel Feb 2024. ⚪ Forum reports of further Discover decline (2025) are unconfirmed. Verdict: maintain if you have them; don't build new ones for reach.
14.19 News surfaces — eligibility (canonical home; V0-verified)¶
- 🟢 No submission, no sitemap requirement, anywhere: "Publishers don't need to submit their site to be eligible to show content on Google News surfaces" (Publisher Center Help). Top Stories/News tab: "Publishers are automatically considered… They just need to produce high-quality content and comply with Google News content policies." news.google.com: "Google may find your site through our normal web crawl."
- 🟢 Publisher Center is no longer a gateway: since Apr 25, 2024, "publishers can no longer set up Google News publications" — its role is reader-facing customization/monetization, not eligibility.
- 🟢 News sitemaps (format → Ch 9) are a freshness/discovery aid — never an eligibility gate. Any pitch selling "Google News inclusion setup" is selling automatic consideration.
Symptoms & diagnosis¶
| Symptom | Likely cause | Where |
|---|---|---|
| Hero images absent from Google Images | CSS background-image; lazy-load never sets src |
§14.1 |
| Images gone from Discover + favicon broken simultaneously | Googlebot-Image disallow (shared blast radius) | §14.1, §14.15 |
| "No video indexed" in GSC | Work the failure taxonomy: watch page? thumbnail valid/crawlable/opaque? position detectable? | §14.10, §14.14 |
| Video result goes to YouTube instead of your page | Double-indexing — platform page won; not a bug | §14.13 |
| Discover traffic died after a template change | max-image-preview downgraded; images <1200px; date/byline regression (→ Ch 13) |
§14.16, §14.8 |
| Favicon not showing weeks after launch | Dual-crawler block; non-square; sub-8px; awaiting recrawl | §14.15 |
| Removed image reappeared after ~6 months | Removals tool expiry mistaken for permanent removal | §14.9 |
| Licensable badge missing on syndicated copies | Per-page SD absent there; no IPTC in file | §14.7 |
| "We need Google News submission" on a plan | Automatic consideration since 2024 — no such deliverable | §14.19 |
| Plugin emitting image:title/caption sitemap tags | Deprecated tags — dead weight | §14.5 |
Sources¶
All fetched 2026-08-04 (research corpus + V0 verdicts; V2 re-fetches all): - Google Images SEO best practices (2026-03-02) · Prevent images (2025-12-10) · SafeSearch (2025-12-10) - Image sitemaps (2025-12-10) · Licensable images (2025-12-10) - Video SEO best practices (2025-12-18) · Video structured data (2026-02-13) · Video sitemaps (2026-05-20) · Video indexing report · Indexing API quickstart (2026-07-16) - Robots meta spec (2026-03-24) · Removals tool - Favicon (2026-02-04) · Google Discover (2026-03-09) · Web Stories (2026-07-01) - Common crawlers (2026-07-14) · Changelog · 📘 ogp.me - V0-verified: preferred-image mechanism (Mar 2, 2026, three routes); Feb 5, 2026 Discover-likelihood entry; Apr 17, 2024 video-carousel removal; platform properties (Jul 7/29, 2026); news-surface eligibility quotes; Discover-desktop = no official source - V2 resolutions (2026-08-04): SeekToAction limited to 12 languages while Clip is all-languages (SD doc, added §14.11); Follow-feature removal dated Nov 19, 2025 (changelog, added §14.16); favicon requirement change confirmed via Oct 24, 2024 changelog entry ("1:1 aspect ratio… at least 8x8px… at least 48x48px" recommended) — the exact pre-change "multiple of 48px" phrasing rests on V0 archive work, not re-fetched