Charts · 34

What 900 videos taught me

Every video from six of my TikTok accounts, 900 in all, as a dot: how long it runs, and how many of the people who saw it liked, commented or shared. On Sparkle, my personal account, videos of eight seconds or less have a median engagement rate of 13.6%. From 21 to 45 seconds it is 1.9%; over 45, 1.3%. The scripted talking heads my own pipeline made in June and July 2026 sit at 1.4%. Pick an account, pick a format, and then read the confounds before copying the lesson: on this account, length, format and era all moved together.

Account

Sparkle, 8 s or less: 13.6% median engagement (69 videos). Over 45 s: 1.3% (10).

0%10%20%30%40%2 s5 s8 s20 s45 s100 s240 s8 s or less9 to 20 s21 to 45 sOver 45 slength, log scale13.6%5.1%1.9%1.3%
Format · Sparkle, median engagement
Sparkle, by length
LengthVideosMedian engagementPushed (500+ views)
8 s or less6913.6%14 of 69
9 to 20 s495.1%15 of 49
21 to 45 s231.9%13 of 23
Over 45 s101.3%2 of 10

The first frame

The cover is the frame a scrolling thumb sees first. Text was found on 89 of Sparkle’s 154 covers, and on 1 of the 28 from the pipeline months. The on-screen line that most of the short winners carried was the part the generated videos left out.

89 of 154 Sparkle, every video
1 of 28 Sparkle, Jun to Jul 2026 pipeline
0 of 25 technically blonde, every video

The confound

Sparkle changed all at once, era by era: format, length, the line on screen, the topic and the audience. So most of “short beats long” is also “October 2025 beats July 2026”. Held inside a single era, short still wins, by less: Aug to Sep 2025, 11.8% at eight seconds or less (18) against 7.7% for longer (17); Late Oct 2025 to May 2026, 7.1% at eight seconds or less (6) against 4.7% for longer (13). Reach is a different question: on Sparkle the top 31 videos by views and the top 31 by engagement share none, and the rank correlation between the two is −0.33.

Sparkle, era by era
EraVideosMedian length8 s or lessText on the coverMedian engagementPushed
2023: music and vlogs1915 s21%14 of 195.5%4 of 19
Aug to Sep 2025: short clips378 s51%28 of 378.9%16 of 37
30 Sep to 22 Oct 2025: mostly one silent template415 s98%32 of 4115.7%0 of 41
Late Oct 2025 to May 2026: mixed1915 s32%12 of 196.1%12 of 19
Jun to Jul 2026: scripted talking heads from the pipeline2837 s0%1 of 281.4%9 of 28
Aug to Sep 2026: unscripted vlogs1012 s20%2 of 103.5%3 of 10

Notes

Data: the TikTok analytics export for six accounts, pulled on 18 October 2026, 900 unique videos from August 2023 to October 2026, with the covers read by Apple Vision text recognition. Engagement rate is (likes + comments + shares) / views. “Pushed” means 500 views or more: these accounts usually stop at a first tier of 200 to 400 views, and a second tier lands around 700 to 1,000, so passing 500 says TikTok tried the video on a wider pool. Medians, not means, because a handful of videos run close to 40%. Only numbers leave the analysis: no captions, on-screen text, ids or dates are published here.

Formats are inferred by rule, not by hand: length, whether the cover carries text, and the caption. They were checked against contact sheets of the covers for Sparkle and technically blonde only, so on the other four accounts treat them as rough. 70 posts have a length of 0 s in the export (3 on Sparkle, 67 on Lunary); they are left off the length axis and out of the length buckets. The analysis kept them in its shortest bucket, which is why it counts 72 Sparkle videos at eight seconds or less to the 69 here; the median is 13.6% either way.

What this cannot say. Era is confounded with everything on Sparkle: the October 2025 run was mostly one silent five-second template, many of them with an explicit ask for likes and comments in the caption, and some of its comments probably came from a circle of small creators who engage with each other; none of its 41 videos passed 500 views. Watch time and retention, which probably decide the wider push, are not in the export. And it is not a law of the platform. These are my accounts and my audiences, and Lunary, the app’s own account, has 1 timed video of eight seconds or less, so it cannot test the pattern at all. Built by scripts/labs/video-engagement.mjs from the per-video table; every figure on this page is in data.json next to it.