Guide

How YouTube thumbnails work

A thumbnail downloader is not magic. It is a polite client of files YouTube already put on a CDN, keyed by an 11-character ID. This page is the map.

The ID is the key

Every watch, Short, embed, and youtu.be link collapses to eleven characters. Thumbnail URLs do not use the title. They use that ID. If you cannot extract it, you cannot fetch a still. The ID extractor and ID guide cover the URL shapes.

The CDN path is predictable

https://i.ytimg.com/vi/{id}/{filename} is the JPEG family. https://i.ytimg.com/vi_webp/{id}/{filename} is WebP when YouTube encoded one. img.youtube.com often aliases the same objects. Filenames are listed in sizes.

Placeholders lie if you only look at HTTP 200

Some missing maxres requests do not 404. They return a tiny 120×90 image with a broken-film graphic. A downloader that saves that file as “HD” is lying. ThumbUHD measures width and height and treats ≤120×90 as unavailable.

Titles come from oEmbed, not from the JPEG

YouTube’s public oEmbed endpoint (youtube.com/oembed) returns title, author, and a thumbnail URL for public videos. Unlisted or private videos typically refuse oEmbed. The stills may still exist; the title will not. We do not use a Data API key on this site.

What we will not fetch

Video streams. Audio. Captions. Storyboard sprite sheets (undocumented, brittle). Channel banners that require the Data API. If a still is not a public i.ytimg.com object we can measure, it is out of scope.

A request, in order

  1. Parse the paste for an 11-character video ID (watch, Shorts, embed, live, youtu.be, music, nocookie).
  2. Ask https://www.youtube.com/oembed?url=…&format=json for title and author when the video is public.
  3. HEAD/GET each candidate on i.ytimg.com and read real width, height, and bytes.
  4. Hide 120×90 results on “large” filenames. Keep default.jpg, which is supposed to be 120×90.
GET https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=VIDEO_ID
GET https://i.ytimg.com/vi/VIDEO_ID/maxresdefault.jpg

Full path list: YouTube thumbnail URL format.

Why a downloader still needs to probe

You cannot know from the watch page alone whether maxres exists. Two videos on the same channel can differ: one has a custom 1280×720 still, the other lives on HQ. Guessing “always maxres” is how fake-UHD sites ship placeholders. The size checker is that probe with the numbers printed.

FAQ

CDN questions

Where does YouTube store thumbnails?

On a content delivery network, typically i.ytimg.com (and img.youtube.com as an alias). Paths look like /vi/VIDEO_ID/maxresdefault.jpg and /vi_webp/VIDEO_ID/maxresdefault.webp.

Does this site download the YouTube video?

No. Only the public still images. No streams, no audio, no watermark stripping.

Why does maxresdefault return a tiny image instead of 404?

YouTube often serves a 120×90 placeholder when HD was never published. HTTP 200 does not mean HD. Measure width and height.

Do I need a YouTube API key to get a thumbnail?

No. The ID plus i.ytimg.com is enough for stills. Titles for public videos come from youtube.com/oembed, which also needs no key.

Can I get a thumbnail for an unlisted video?

If you have the URL, some CDN stills may still load. oEmbed titles often fail. Private videos are out of scope.

What is oEmbed used for on a thumbnail downloader?

Title, author, and a thumbnail URL YouTube already chose. It does not replace probing maxres vs HQ. The JPEG is a separate CDN object.

Are storyboard images the same as thumbnails?

No. Storyboards are unofficial sprite sheets for hover scrubbing. This site does not fetch them. Public thumbs are maxres, HQ, and 0.jpg–3.jpg.

Does the title live inside the JPEG?

Only if the creator burnt type into the image. The video title in YouTube’s UI is metadata. oEmbed returns that title as text, not as pixels.