YouTube Thumbnail Saver: What Actually Lands in Your Folder
The downloading part is not the hard part — one request returns the whole image. The hard part is the file. We saved 32 thumbnails from 8 videos on 11 October 2026 and looked at what a saver is handed rather than at the picture: not one response carried a file name (Content-Disposition was absent in 32 of 32), so the saving browser falls back to the last segment of the address. Across those 32 saved files there were only 5 distinct names — hqdefault.jpg and oar2.jpg were each the name for 8 different videos. Save a batch into one folder and the names stop telling you which file is which; the operating system starts appending (1)(2)(3) for you. The bytes themselves are exact: every response's Content-Length matched the body in 32 of 32, and the same address returned byte-identical files 8 days apart.
The server never names the file
Nothing in the response nominates a filename. So the name you end up with is invented locally, from the tail of the URL — which is the same text for every video. That is not a rare edge: in this run it happened every single time.
| Name the browser invents | Videos that produced it | What that means for a folder |
|---|---|---|
hqdefault.jpg | 8 of 8 videos | Eight different thumbnails ask to be saved under one name |
oar2.jpg | 8 of 8 videos | Same collision, and the file can be 320 × 240 or 1920 × 1080 |
sddefault.jpg | 6 of 8 videos | Two videos had no such file at all |
maxresdefault.jpg | 5 of 8 videos | Three videos returned the miss instead |
hq720.jpg | 5 of 8 videos | Identical set of three videos missing here too |
Thirty-two saved files, five names. If a saver hands you a download list and you accept the default names twice, you overwrite your own work — and the second save looks like it succeeded, because it did.
The same name can hold a different picture, shape and size
Because the name describes a rendition slot rather than a particular image, the file behind one name varies with the upload. oar2.jpg returned 320 × 240 on one video and 1920 × 1080 on another, at 5,680 bytes on one and 79,711 bytes on another. The full spread of the 32 successful files in this run was 5,680 to 184,051 bytes, and the pixel sizes that appeared were 320 × 240, 480 × 360, 640 × 480, 1278 × 720, 1280 × 720 and 1920 × 1080.
- 32 successful responses, 8 requests answered with the 1,097-byte miss instead.
- Every real file supported ranges (
Accept-Ranges: bytes) — none of the 8 misses did. - Real files were cached for 7,200 seconds, the miss only for 30.
A save does not alter the bytes — and the bytes have not moved in 8 days
Saving is a copy, not a conversion. Two things back that up in the data:
- The declared size was the real size in 32 of 32 responses, and downloading the same address twice in a row gave a byte-identical file both times.
- An 8-day re-check changed nothing. Of the addresses we had also captured on 3 October 2026, 20 of 20 came back byte-identical on 11 October; against the 10 October capture it was 32 of 32.
So if you saved a file last week and save it again today, you have two copies of the same file, not two versions. The verification page covers how to confirm that on your own copy.
Pausing and resuming: what a saver can rely on
We tested the behaviour a download manager depends on. All 32 real files advertised byte ranges; the miss did not. A split request came back as two 206 parts — bytes 0-2047/65324 and bytes 2048-65323/65324 — and the two parts joined were byte-identical to a single full download of the same address. A range beyond the end was refused properly with 416 and Content-Range: bytes */65324. A HEAD request returned the size (Content-Length: 65324) with no body at all — and on a name that does not exist, HEAD answered 404 with Content-Length: 1097, which is the server saying "here comes one kilobyte of nothing" rather than "no such file".
The one name that lies about its format
In this run the extension was honest almost everywhere: every successful .jpg address returned image/jpeg, 32 of 32. The exception is the format word:
| Address asked for | Status | Bytes | Type | First bytes |
|---|---|---|---|---|
img.youtube.com/vi/<id>/maxresdefault.jpg | 200 | 65,324 | image/jpeg | ff d8 ff e0 (JPEG) |
i.ytimg.com/vi_webp/<id>/maxresdefault.webp | 200 | 28,620 | image/webp | 52 49 46 46 (RIFF) |
img.youtube.com/vi/<id>/maxresdefault.webp | 404 | 1,097 | image/jpeg | ff d8 ff e0 (JPEG) |
The last row is the trap: asking for a .webp on the image host returns the grey miss, and the miss is a JPEG. A saver that trusts the extension writes you a file ending in .webp whose first four bytes say JPEG — and whose picture is a 120 × 90 grey square. The real WebP of the same picture is a different host, 28,620 bytes against 65,324, about 56% smaller, and it is genuinely image/webp.
How to save so the folder stays readable
- Put the video ID in the filename yourself.
dQw4w9WgXcQ-maxresdefault.jpgcannot collide with anything; the server's suggested name can collide with seven other videos. - Trust the bytes, not the name. 1,097 bytes is the miss; a real file in this run started at 5,680 bytes. The verification page shows the check.
- Do not infer quality from the name.
maxresdefault.jpgwas never above 720p here — the resolution page has the counts. - Expect a missing name, not an error. Two of these eight videos had no
sddefault.jpgand three had nomaxresdefault.jpg; the availability page covers the fallback order. - Keep the ID, not just the picture. The same name held a 320 × 240 file on one video and a 1920 × 1080 file on another, so a folder of bare names cannot be sorted out later.
Can you tell whether the server's copy changed?
Not by date. None of the 40 responses carried Last-Modified. An ETag did appear on the 32 real files — and on none of the 8 misses. In this run the values looked like stored numbers (one of them was literally "0"), so treat it as a comparison handle rather than a timestamp: save the value, re-request later, and if it matches, you already have that exact file. What we can say from measurement is simpler — across 3, 10 and 11 October 2026 the same addresses returned the same bytes.
Questions people actually ask
"I saved ten thumbnails and my folder is full of (1)(2)(3) copies — which is which?"
They really do share names: in this run 32 saves wanted only 5 names, and the two most common names were each shared by all 8 videos. Rename with the video ID as you go, or you cannot tell them apart afterwards.
"My file ends in .webp but my editor says it is a JPEG. Did the saver convert it?"
No — you probably got the miss. A .webp address on the image host returned 404 with a 1,097-byte JPEG body. The real WebP is on a different host and was 28,620 bytes for the same picture.
"Can I stop a download halfway and finish it later?"
Yes. Every real file here supported byte ranges, the parts reassembled into the exact same file, and an out-of-range request was refused with 416 rather than quietly handing you a short file.
"Is a 1 KB thumbnail file a corrupt download?"
It is not a thumbnail at all — 1,097 bytes is the miss, and it is a valid 120 × 90 JPEG that any viewer will happily open. The tell is the size, plus the fact that the miss never advertises byte ranges and is cached for 30 seconds instead of 7,200.
"Do I even need a saver, or is saving by hand fine?"
Saving by hand is fine for one file. The reason to care is batches: the naming, the collision and the 1 KB miss are what a saver is supposed to handle, and none of the three is handled for you by the server.
Every number on this page was measured on 11 October 2026 by requesting img.youtube.com/vi/<id>/<name> directly: 8 public videos × 5 names = 40 requests, of which 32 returned 200 and were read in full, plus a second pass of 11 requests covering HEAD, a repeat download, a two-part range resume, an out-of-range range, the miss and the two WebP addresses. The byte identity claims compare those files against the same addresses captured on 3 October 2026 (20 of 20 comparable URLs identical) and 10 October 2026 (32 of 32 identical). Pixel sizes were read out of each file's own JPEG header, not from the address. Videos are identified by ID only — no titles, channel names or watch links appear on this page, and no thumbnail is hosted here. Another sample of videos would move these counts, which is why they are always given with the sample size attached.