Download Thumbnail From YouTube
The short answer: you do not download a thumbnail from the watch page — you download it from YouTube's image host. One URL per file: https://img.youtube.com/vi/<video-id>/maxresdefault.jpg. Open it, then save the image. There is no button on YouTube that hands you this file, and no login, and no app needed. The one thing that decides whether the download worked is not the picture you see but the status code the server sent: a missing file still comes back as a perfectly normal-looking JPEG.
That last point is the whole reason this page exists. On 1 October 2026 we requested all six thumbnail file names for four videos, and also recorded what each response actually carried: HTTP status, byte count, Content-Type, Content-Disposition, cache headers and the CORS header. Everything below comes from that run. Nothing here is copied from a downloader page, because downloader pages do not publish this — they print a fixed list of sizes and leave you to find out which ones exist.
The ID is the only part you need
Every route into a YouTube video exposes the same 11-character ID, and the ID is all the image URL needs:
| Where you found the video | Where the ID is |
|---|---|
youtube.com/watch?v=XXXXXXXXXXX | the value after v= |
youtu.be/XXXXXXXXXXX | everything after the slash |
youtube.com/shorts/XXXXXXXXXXX | everything after /shorts/ |
youtube.com/live/XXXXXXXXXXX | everything after /live/ |
youtube.com/embed/XXXXXXXXXXX | everything after /embed/ |
A playlist link that contains v= still yields an ID; a channel link or a playlist link without v= does not, and there is no thumbnail to download from either one. Also worth knowing before you script anything: adding a query string does not break the request. .../maxresdefault.jpg?x=1 returned 200 · 65,324 B · 1280 × 720 on 1 October 2026, byte-identical to the clean URL.
What actually came back, four videos, six names
Same six file names, same day, one request each. A 404 row is not "no image" — it is a real JPEG body and you can save it, which is exactly the trap.
| File | dQw4w9WgXcQ | 9bZkp7q19f0 | jNQXAC9IVRw | aqz-KE-bpKQ |
|---|---|---|---|---|
maxresdefault.jpg | 200 · 65,324 B · 1280 × 720 | 200 · 184,051 B · 1280 × 720 | 404 · 1,097 B · 120 × 90 | 200 · 108,323 B · 1278 × 720 |
hq720.jpg | 200 · 65,324 B · 1280 × 720 | 200 · 184,051 B · 1280 × 720 | 404 · 1,097 B · 120 × 90 | 200 · 179,638 B · 1280 × 720 |
sddefault.jpg | 200 · 31,029 B · 640 × 480 | 200 · 84,176 B · 640 × 480 | 404 · 1,097 B · 120 × 90 | 200 · 46,793 B · 640 × 480 |
hqdefault.jpg | 200 · 21,011 B · 480 × 360 | 200 · 53,433 B · 480 × 360 | 200 · 15,921 B · 480 × 360 | 200 · 32,195 B · 480 × 360 |
mqdefault.jpg | 200 · 10,303 B · 320 × 180 | 200 · 26,633 B · 320 × 180 | 200 · 8,710 B · 320 × 180 | 200 · 17,034 B · 320 × 180 |
default.jpg | 200 · 2,888 B · 120 × 90 | 200 · 5,096 B · 120 × 90 | 200 · 4,523 B · 120 × 90 | 200 · 4,120 B · 120 × 90 |
Read the pixel size out of each downloaded file's own JPEG header, so it is what the file is, not what the name promises.
"The biggest name" is not always the biggest file
On the first three videos in the table, hq720.jpg and maxresdefault.jpg returned byte-identical responses — the two names pointed at one file, which is what we reported when we first measured this on 30 September 2026. The 1 October run shows that this is not a rule. On aqz-KE-bpKQ:
maxresdefault.jpg→ 200 · 108,323 B · 1278 × 720hq720.jpg→ 200 · 179,638 B · 1280 × 720
Different byte counts, and the width is not even the same: 1278 against 1280. So on that video the file named hq720 is 71,315 bytes larger than the file named maxresdefault, and it is the one that is actually a full 1280 wide. If you asked for "the max resolution one" and saved whatever came back, you saved the smaller of the two. Download both and compare what you got; do not assume the longer file name means the better file.
When the big one is a 404, the numbered frames are still there
On jNQXAC9IVRw — an old upload — maxresdefault, hq720 and sddefault all answered 404. But the same video still had three usable 480 × 360 pictures under names nobody mentions:
| File | Requested | Status | Bytes | Measured size |
|---|---|---|---|---|
hq1.jpg | 1 Oct 2026 | 200 | 14,235 B | 480 × 360 |
hq2.jpg | 1 Oct 2026 | 200 | 15,921 B | 480 × 360 |
hq3.jpg | 1 Oct 2026 | 200 | 15,061 B | 480 × 360 |
mq1.jpg / mq2.jpg / mq3.jpg | 1 Oct 2026 | 200 | 8,133 B / 8,710 B / 8,374 B | 320 × 180 |
1.jpg / 2.jpg / 3.jpg | 1 Oct 2026 | 200 | 4,129 B / 4,523 B / 4,295 B | 120 × 90 |
These are the stills YouTube crops from the video itself rather than the artwork the uploader chose, so on this upload hq2.jpg answered with exactly the same 15,921 bytes as hqdefault.jpg — the frame it picked happens to be the poster frame. Where the named sizes are gone, they are the only pictures above 320 pixels wide left to download, and they are requestable with the identical URL pattern: https://img.youtube.com/vi/<video-id>/hq2.jpg. The same names returned real files on dQw4w9WgXcQ too (maxres1.jpg came back 200 · 40,095 B · 1280 × 720, a visibly different frame from its maxresdefault).
What the response headers tell you about your download
Content-Dispositionwas empty on every response — real files and placeholders alike. YouTube never sends an attachment header, so nothing ever auto-downloads and the browser never offers a suggested filename. The name you end up with is the file name in the URL, which is why a saved placeholder is so often calledmaxresdefault.jpg.- A missing file is exactly 1,097 bytes. Three unrelated videos that do not exist and one real-but-old video all returned 1,097 B of
image/jpeg, 120 × 90, in every case. It is one fixed grey image, the same bytes every time — andContent-Lengthreported 1,097 for all of them, so the headers agree with the body and cannot tip you off. Only the status code separates it from a real thumbnail. - The cache header gives it away. Real thumbnail files came back with
Cache-Control: public, max-age=7200; the placeholder came back withpublic, max-age=30. If you are checking by hand and you know where to look, a two-hour cache is a real file and a thirty-second cache is the grey square. Access-Control-Allow-Origin: *. The JPEGs carry it, so a page in your own browser is allowed to read the bytes it fetched and hand you a save — which is how a tool page can work without a server. The WebP copies do not carry it, which is the subject of the next section.img.youtube.comandi.ytimg.comare interchangeable. Same file, same byte count, sameContent-Length, for all three names we tested on both hosts.
There is a smaller copy, and a web page cannot download it
YouTube's image host also serves WebP versions of each thumbnail under the vi_webp path. They are real, they are smaller, and here is the measured comparison from 1 October 2026 for dQw4w9WgXcQ:
| File | JPEG | WebP copy | Difference | CORS on WebP |
|---|---|---|---|---|
maxresdefault (1280 × 720) | 65,324 B | 28,620 B | 56.2% smaller | none |
hqdefault (480 × 360) | 21,011 B | 10,404 B | 50.5% smaller | none |
Both WebP URLs answered 200 with Content-Type: image/webp and the same pixel dimensions as the JPEG. The catch is the header that was missing: no Access-Control-Allow-Origin. A page on the web can display that image, but it cannot read its bytes — the browser blocks the response from being handed to JavaScript. So no downloader page, this one included, can offer you the WebP copy as a file. What it can do is the JPEG, because the JPEGs do send the CORS header. If you want the smaller file specifically, a desktop command-line request or a browser extension that is not bound by page CORS is the route; the numbers above are there so you know what you would be gaining.
Four ways to download it, in the order that breaks least
- Open the URL and save the image. Build
https://img.youtube.com/vi/<id>/maxresdefault.jpg, open it in a tab, then save the image. Free, nothing installed, works on a phone. You inherit the namemaxresdefault.jpgwhether or not the file is real. - Use the tool on the home page. Same one request per file, except it checks the status first, lists only the names that answered and measures each file after it arrives — so a 120 × 90 placeholder never reaches your downloads folder. The grabber page walks through the fallback ladder.
- Request it from a terminal if you are doing more than one: one command per file, and the exit status or the status code in the output tells you whether you saved a picture or the grey square.
- Read it out of the page source. Slowest by hand and the easiest to get wrong — the watch page carries several image URLs and the one you want is the one with the video's own ID in the path, not a resized copy on another host.
Check what you saved, not what you see
The saved file's own properties end the argument:
- Size on disk. A real 1280 × 720 JPEG on these four videos ranged from 65,324 B to 184,051 B. Under 2 KB, or exactly 1,097 bytes, means you saved the placeholder.
- Pixel dimensions. Every desktop OS will show you the image's dimensions in its file info or properties panel; on a phone, opening the file in a viewer that reports resolution is enough. A 120 × 90 file is the placeholder, every time.
- Look at it at full size. The placeholder is a flat grey square with faint diagonal lines. It survives being saved, renamed and re-shared, which is how it ends up embedded on pages as a real thumbnail.
What you may do with the file
Saving the file is trivial; the right to reuse it is a separate question, and this page cannot answer it for your situation. The image belongs to the uploader, and it is served from YouTube's own host — nothing here hosts or re-uploads any thumbnail. Your own uploads are yours. For someone else's, treat a downloaded file as reference unless you have permission, and check what your jurisdiction allows before you publish it. This is not legal advice.
Questions people actually ask
"I right-clicked and saved it, but the file is a tiny grey square — did I do something wrong?"
You did the steps right; that video simply has no maxresdefault. The request was answered 404 with a 1,097-byte grey JPEG, and saving it is saving that file. Go back and try hqdefault.jpg, then hq2.jpg.
"It downloaded a file called maxresdefault.jpg but Windows says 120 × 90. How can a max resolution file be 120 pixels?"
Because the file name is just a URL path, not a promise. The name is what you asked for; the response was the placeholder because that size does not exist for that upload. The name in your downloads folder records your request, not the file's contents.
"Do I need an app or an extension to download a YouTube thumbnail, or is the URL enough?"
The URL is enough, on desktop and on a phone, with no account. An extension saves you typing the video ID. Neither one gets you the WebP copy, because that response carries no CORS header.
"The image URL opens fine in my browser, so why can't your page give me the .webp version?"
Because opening something and being allowed to read its bytes are two different permissions. Your browser displays the WebP happily; it will not hand the bytes to a script on a page, and the host does not send the header that would allow it. The JPEGs do send it, which is exactly why the tool can offer you those.
"I downloaded a thumbnail for an old video and got a grey box, but a same-topic video from last year worked. What is different?"
When the upload was processed, not what it is about. On the 1 October 2026 run an old upload was missing maxresdefault, hq720 and sddefault, while its hqdefault, hq1, hq2 and hq3 were all present. Download hqdefault and move on.
All numbers on this page were measured on 1 October 2026 by requesting each URL from img.youtube.com (and i.ytimg.com for the host comparison), recording the HTTP status, Content-Length, Content-Type, Content-Disposition, Cache-Control and Access-Control-Allow-Origin, and reading the pixel size out of each downloaded file's own header. Videos are named by ID only. A different video will return different numbers — that is the point of measuring rather than listing.