Thumbnails that earn the click at 120 pixels.
Read the skill at https://ai-skills-vault.pages.dev/skills/thumbnail-design-system.md and install it as a skill in your agent. Follow it exactly, including its checklists. Then ask me the questions it requires and do the work.
A thumbnail is a 3-word billboard viewed at 120 pixels wide on a phone. Most underperforming thumbnails fail for a boring reason: too many words, no single focal point, and text that disappears against the image at small size.
This skill gives you a template, a legibility test, a three-variant method, and a CTR table that tells you whether the problem is the thumbnail or the title.
Do NOT use for: paid ad creative (different format rules and a separate testing budget), or brand logo work - that is an identity system, not a click decision.
1.1 Pull the last 20 videos with impressions, CTR, and average view duration. The pattern is in your own data before it is in anyone's advice.
1.2 Separate the two failure modes: low CTR with high retention means the thumbnail or title is the problem; high CTR with low retention means the thumbnail over-promised.
1.3 Note the impression source. Suggested-video impressions reward a clear subject and a familiar face; search impressions reward text that matches the query.
1.4 Compare like with like: a 3-week-old video has not settled, and a short has a different baseline entirely.
| Situation | CTR signal | Fix |
|---|---|---|
| Impressions high, CTR under 3% | thumbnail or title | new thumbnail, same title |
| Impressions low, CTR 6%+ | the topic, not the art | change the topic or the first 30 seconds |
| CTR 8%+, retention under 30% | over-promise | make the thumbnail match the content |
| CTR dropped after a change | you changed two things | revert one and re-test |
1.5 Write down your channel's current median CTR. Everything in this skill is measured against that number, not against an industry average you cannot verify.
Gate: a table of the last 20 videos with impressions, CTR and retention.
2.1 Canvas 1280x720, exported under 2 MB, JPEG quality 85 or PNG if there is flat colour.
2.2 Safe zone: keep everything important inside the central 85% - the duration badge covers the bottom-right and the progress bar clips the bottom edge.
2.3 Composition rule: one subject, one background, one line of text. Three elements maximum, and the subject occupies 40-60% of the frame.
2.4 Leave a 40 px margin from every edge. Text that touches the edge reads as a mistake at small size.
| Element | Spec | Notes |
|---|---|---|
| Canvas | 1280x720 | 16:9 |
| File size | under 2 MB | faster shelf rendering |
| Safe zone | central 85% | badge covers bottom-right |
| Subject size | 40-60% of frame | one clear focal point |
| Text | 3 words max | 6 words is unreadable at 120 px |
| Type size | 90-140 px | measured on the canvas |
| Stroke/shadow | 6-10 px | for separation from background |
| Colours | 2 plus neutral | brand accent used once |
2.5 Set the type size by testing at 120 px wide, not by eye at full size. If you cannot read it at 120 px, it is too small.
2.6 Keep the duration badge area clear on every template so you never re-check it.
2.7 Build the template as HTML/CSS so a batch can be rendered from a data file instead of hand-placed in a design tool:
<div class="thumb">
<img class="subject" src="face.png" alt="">
<h1 class="claim">GST NOTICE</h1>
</div>
<style>
.thumb{width:1280px;height:720px;position:relative;background:#0b0f14;overflow:hidden}
.thumb .subject{position:absolute;right:40px;bottom:0;height:640px;filter:saturate(.9)}
.thumb .claim{position:absolute;left:60px;top:180px;margin:0;max-width:560px;
font:700 140px/0.95 Inter,sans-serif;color:#ffd60a;letter-spacing:-.03em;
-webkit-text-stroke:10px #0b0f14;paint-order:stroke fill}
</style>
Gate: one template file with the safe zone and a 120 px preview frame.
3.1 One face or one object. Two faces at thumbnail size become two smudges.
3.2 If a face is used, the expression carries the click: surprise, concentration, or a clear reaction. A neutral stock smile reads as an ad.
3.3 Cut the subject out cleanly with a 3-6 px edge. A halo of background pixels is the most common tell of an amateur thumbnail.
3.4 Point at, or look at, the text or the object. Direction of gaze is a composition tool, not decoration.
3.5 For a screen-recording channel, use one recognisable UI element (a chart spike, a red error) rather than a full screenshot.
3.6 Never use a face that is not in the video. It is the fastest way to lose trust and get a video reported.
Gate: one subject, cleanly cut, with a reason it earns attention.
4.1 Three words maximum, ideally two. The title already carries the full claim; the thumbnail carries the hook.
4.2 Use the words the audience uses, not the words the industry uses. "GST NOTICE" beats "COMPLIANCE COMMUNICATION".
4.3 Numbers work when they are the point: "₹0 TO ₹1 CR", "3 TOOLS", "90 SECONDS". Numbers that need context do not.
4.4 Never repeat the title verbatim. The thumbnail and title are two chances, and duplicating one wastes the other.
4.5 All caps, no lowercase, and no more than two lines. Line breaks at the word boundary, never mid-word.
4.6 Ban the clickbait vocabulary that no longer works: "INSANE", "YOU WON'T BELIEVE", and any arrow pointing at nothing.
| Words | Example | Verdict |
|---|---|---|
| 2 | "GST NOTICE" | strong, immediate |
| 3 | "3 TOOLS TESTED" | strong, specific |
| 5 | "THE BEST TOOLS FOR 2026" | too long at 120 px |
| 6+ | "HOW I BUILT MY FIRST APP" | unreadable |
| Repeats title | title "My GST notice story" | wasted second chance |
Gate: three words or fewer, legible at 120 px, not a copy of the title.
5.1 Text needs 4.5:1 contrast against its immediate background, which means a stroke, a shadow, or a solid bar behind it - not hope.
5.2 Use one bright accent against a dark or desaturated background. Dark thumbnail on a light feed, or the reverse; match the platform's surrounding UI.
5.3 Desaturate the background by 20-40% so the subject and text separate from it.
5.4 Check in greyscale. If the thumbnail still reads in greyscale, the value structure is right; if it turns to mush, contrast is coming from colour alone.
5.5 Avoid pure red and pure green together, and avoid the thin 1-2 px strokes that vanish after compression.
5.6 Look at the thumbnail next to three competitors in the feed. It has to win that comparison, not a beauty contest in isolation.
Gate: greyscale test passes, and the thumbnail is legible beside three competitors.
6.1 Produce three variants that differ in one dimension each: subject, text, or colour. Three variations of the same layout test nothing.
6.2 Swap the thumbnail after 48-72 hours, not immediately. The first day's data is dominated by your existing audience, which behaves differently from new impressions.
6.3 Give each variant 2,000-5,000 impressions before judging. Below that you are reading noise.
6.4 Change one variable at a time, and keep the title fixed so the measurement is clean.
6.5 Keep a variant log: video, variant, swap date, impressions, CTR at 72 hours. After 10 videos you have your own rules.
6.6 Never swap more than twice on one video. Each swap resets the impression sample and you learn nothing.
| Variant | Changes | Kept fixed |
|---|---|---|
| A | face close-up, 2 words | title, colour |
| B | object close-up, 2 words | title, colour |
| C | face, 3 words, new accent | title |
| Bad set | three colour tints of one layout | nothing learned |
Gate: three variants made before publishing, swap plan written.
7.1 Build components in Figma: subject frame, text block, badge space, background layer. Changing the accent should be one property.
7.2 Produce five thumbnails in one sitting, once a month, rather than one at a time. Batching cuts the per-thumbnail time from 40 minutes to 12-15.
7.3 Name files YYYYMMDD-slug-v1.jpg so a variant can be found in six months.
7.4 Keep a source folder with the cut-out subject at 2x, so a re-cut is not needed for every format.
7.5 Export a 9:16 version for Shorts and Reels from the same source; the composition changes, the subject does not.
7.6 Have one person own the template. A template edited by four people becomes no template.
7.7 Export and compress in one step so the file always lands under 2 MB:
# render the HTML at exactly 1280x720, then flatten and compress
npx playwright screenshot --viewport-size=1280,720 thumb.html thumb-v1.png
convert thumb-v1.png -strip -interlace Plane -quality 85 thumb-v1.jpg
# hard ceiling: re-encode until under 2 MB
while [ $(stat -c%s thumb-v1.jpg) -gt 2000000 ]; do
convert thumb-v1.jpg -quality 78 thumb-v1.jpg
done
Gate: five thumbnails produced in one batch, files named by the convention.
8.1 View at 120 px wide, then at 240 px, on a phone. Those are the two sizes that matter.
8.2 Test on a mid-range Android, not a desktop monitor. Colour and contrast read differently on a cheap LCD in daylight.
8.3 Look at the thumbnail in the actual feed, next to three real competitors, on a phone.
8.4 Check the text against the duration badge and the progress bar; the safe zone exists for a reason.
8.5 Ask two people what the video is about, without the title. If neither can say, the thumbnail has failed.
8.6 Screenshot the thumbnail inside the real feed on a phone and look at it as a reader would - not as the designer who knows what it says.
8.7 Check it beside your own last three thumbnails. If all four look the same at 120 px, the channel has no visual variety and the newest video will not stand out.
Gate: 120 px and 240 px checks done on a real phone, two people can state the topic.
9.1 Judge a thumbnail on CTR against your own median, with impressions above 2,000 and at least 72 hours of data.
9.2 Read CTR together with retention. A CTR jump with a retention collapse is a lost subscriber, not a win.
9.3 Split by impression source. A thumbnail that wins on suggested videos may lose on search, and you can use different art per surface in some cases.
9.4 Log every result in the variant log, including the failures. Failures are the more useful half.
| CTR vs median | Retention | Verdict |
|---|---|---|
| +50% | flat | repeat the pattern |
| +50% | -20% | over-promise, fix the content match |
| flat | flat | the topic, not the art |
| -40% | flat | revert immediately |
| +10% | +10% | keep, iterate next time |
9.5 Re-test the winning pattern three times before calling it a rule. One win is a coincidence more often than not.
9.6 Review the last 10 thumbnails quarterly as a contact sheet. Consistency shows up only when you look at them together.
Gate: variant log with 10 videos and a written pattern.
10.1 Sort your catalogue by impressions over the last 90 days. Old videos with steady impressions are free upside.
10.2 Rewrite the thumbnail on the top 10 by impressions if their CTR is under half your median.
10.3 Change one thing per refresh: the text, the subject, or the colour. A full redesign tells you nothing.
10.4 Do not touch a video with a CTR above your median - you can only make it worse.
10.5 Refresh quarterly. A 2-year-old thumbnail was designed for a different feed and a different audience.
10.6 Record the refresh in the log with the before and after CTR at 30 days.
Gate: 10 videos refreshed with before and after numbers.
A finance channel, 40 videos, median CTR 4.1%, thumbnails with 5-7 words.
| Change | Videos | Median CTR |
|---|---|---|
| Baseline, 5-7 words | 40 | 4.1% |
| 3 words, one face, stroke 8 px | 12 | 5.6% |
| 2 words, one object, desaturated background | 12 | 6.4% |
| Face plus a number (₹0 TO ₹1 CR) | 8 | 7.2% |
| 5-word refresh on the old set | 10 | 4.3% |
The word count was the single largest factor: cutting from 6 words to 2-3 words moved CTR more than the face or the colour changes did.
| Symptom | Real cause | Fix |
|---|---|---|
| CTR under 2% with good retention | Six words at 40 px, unreadable at 120 px | Cut to 3 words at 90-140 px |
| CTR fine, retention collapses | Thumbnail promises something the video does not deliver | Match the thumbnail claim to the first 30 seconds |
| Thumbnail looks busy | Three subjects and a background photo | One subject, one text line, plain background |
| Text disappears in the feed | Contrast from colour alone, no stroke | 8 px stroke plus a 4.5:1 check in greyscale |
| Every thumbnail looks different | No template, four people editing | One template file, one owner |
| A/B test inconclusive | Under 2,000 impressions per variant | Wait for volume, or test on a higher-traffic video |
| CTR dropped after a redesign | Two variables changed at once | Revert one, re-test, change one at a time |
| Good CTR, no subscribers | The video does not match the audience the thumbnail attracted | Make the first 15 seconds deliver the promise |
Read the skill at the URL above and build a thumbnail system for my channel. Ask me: the channel topic, my last 10 videos with impressions and CTR, my median CTR, and whether I have a template. Then give me the template spec with canvas, safe zone, subject size and type sizes, the three-word text rule with examples for my niche, the contrast and greyscale checklist, and a three-variant test plan with swap timing and minimum impressions. Then the batch production workflow, the legibility tests at 120 and 240 px, and the variant log format. Do not invent CTR benchmarks - use my numbers or mark an assumption as an estimate.