In short

  • On 1.35 million YouTube comments with post times, exposure explains 83.5% of what orders a comment’s likes within its video; content explains about 8%.
  • The public comment corpora have like counts and no timestamps, so a model trained on them learns timing. I collected one that has them and published it.
  • 82% of comments have zero likes and the top 1% hold 95% of them, so a mean shows no arrival effect where log likes show a 5.9× decline.
  • For a person: comment in the first hour on a big video. The comments that do best are short callbacks to one moment.

I wanted to know whether you could train a model to write YouTube comments people actually like. The obvious training signal is the like count, and there’s recent work doing exactly that: fine-tune on the top 10% most-liked comments, report roughly 3× the engagement of a model trained on random ones.

Then I looked at what a like count actually measures. A comment posted in a video’s first hour is seen by orders of magnitude more people than one posted a week later, and YouTube’s “Top comments” ranking compounds it, because being ranked high causes likes and likes cause being ranked high. Two identical comments can differ by three orders of magnitude on arrival time alone.

So the question stopped being “can a model write good comments” and became “does a like count contain anything about the comment at all.”

You can’t answer this with public data

The two large public YouTube comment corpora, YT-30M and YTCommentVerse, hold about 32 million comments between them. Both give you upvotes. Neither gives you a timestamp.

Without post times you can’t separate what a comment said from when it showed up. Every model trained on those corpora is fitting the head start with no way to see it.

So I collected a corpus that has them: 1,345,353 top-level comments from 633 videos across 34 channels, with post time, fetch time, reply count, video statistics, and the rank YouTube’s own algorithm gave each comment. Three days, about 14,900 API units.

One decision mattered more than the rest. commentThreads.list returns comments newest-first, so any per-video page cap drops the oldest comments, which are exactly the high-exposure ones the study is about. Every video is enumerated completely. Videos too big to finish inside the daily quota got excluded up front and counted in the manifest instead of quietly truncated.

Exposure is 83.5% of it

Predict each comment’s rank of likes within its own video, which takes the video effect out of the training signal. Then add one thing at a time: exposure features, then length and shape, then 200,000 TF-IDF features, then MiniLM embeddings. Split by channel, never by comment, so the question is whether it transfers to an audience the model never saw.

component share of above-chance ordering skill
exposure (post time, video scale) 83.5%
length and shape 8.4%
what the comment actually says 8.2%

Comment length is arguably content, not exposure. Count it that way and content goes to 16.5%. Exposure is 83.5% either way, so the finding doesn’t depend on where you draw that line.

The number that closed it for me: a 384-dimensional sentence encoder buys 0.0015 AUC over a bag of words. The standard objection to a lexical null is that the text model was too weak, and a completely different representation family lands in the same place.

Absolute predictability is low throughout. The best model gets AUC 0.671 against 0.5 for chance. Exposure beats content by a wide margin, and both lose to whatever else decides which comments get liked.

The trap in this dataset

Mean log1p(likes) by arrival time, under two groupings of the same 1.35M comments Both panels, same comments, same y-axis. Position within a video and absolute age both show the same decline.

I got this wrong first, and you should know it before you touch the data.

Bucket the comments by how late they were posted and take the mean number of likes in each bucket:

age at posting <1h 1-6h 6-24h 1-7d 1-30d >30d
mean likes 19.8 21.7 19.5 19.8 25.8 20.4

Flat. No arrival effect at all. I wrote that up as a finding.

Now take the mean of log1p(likes) on the identical buckets:

age at posting <1h 1-6h 6-24h 1-7d 1-30d >30d
mean log1p(likes) 0.764 0.387 0.230 0.181 0.163 0.129

A 5.9× decline. The effect was there the whole time.

82.1% of comments have zero likes, and the top 1% hold 94.9% of all of them. A group mean on a distribution like that is a statistic about the group’s outliers, not about the group. One viral comment sets the average for its whole bucket.

Any summary of this corpus that averages raw like counts will report no effect where a large one exists.

The metric that certified 3×

The prior work scores a generated comment by embedding it, pulling its K nearest neighbours out of a reference corpus, and averaging their like counts. I expected that to be gameable by resemblance: train on top-liked text, land near top-liked text, score high whether or not a human would have liked it.

I was wrong, twice. Selecting real top-liked comments doesn’t reproduce a 3× ratio (I get 0.88 to 1.21). Neither does generating 960 comments with half of them few-shot conditioned on top-liked examples.

What I found instead is that the statistic won’t hold still. At K=5, the ratio of means says conditioning made it 3× worse, with an interval excluding 1.0. The ratio of medians, on the same 480 samples, says 2× better. Across three runs the same number came out 138, then 0.09, then 0.25 by mean and 2.00 by median.

Same heavy tail, same failure mode as my own mistake above. A metric whose direction flips depending on how you summarise it can’t carry a 3× claim, whatever produced any particular published number.

It also barely tracks the thing it estimates. Against real like outcomes it orders comments at Spearman 0.050. A model that knows only when a comment was posted and how big the video is scores 0.19 on the same comments.

If you just want your comments to land

Pointed at a person instead of a model, the same numbers read as a strategy. Roughly in order of how much they move:

Be early. Within a video, the earliest decile of comments averages 5.4× the latest. By absolute age, first-hour comments run 5.9× above the ones posted after a month. Nothing else you control is close.

Be early on a big video. Video scale multiplies everything else. In the raw data, comments posted six weeks late on a NileRed upload beat first-hour comments on a Computerphile one. A mediocre comment on a 5M-view video outperforms a good comment on a 70K-view video.

The top page is the actual prize. Comments displayed on it average 419.5 likes against 1.13 for everything else. That’s a 373× threshold, not a gradient, and because the ranking runs on early likes, the first hour is what buys entry.

Pick the channel. The share of comments getting zero likes ranges from 52.8% on Vox to 90.7% on Davie504. Your odds of getting any like at all nearly double depending on where you comment, before you write a word.

On Shorts, move faster still. The early advantage there is 7.6× against 5.3× for long-form.

What you write is about 8% of it. The shape it takes is short. Mean comment length rises with likes and then reverses: 171 characters at the 100-999 tier, dropping to 147 for 1000+. The top comments in the corpus are compressed callbacks to a specific moment, not developed observations:

alchemists hate this one trick

This video is almost entirely greyscale

that strained “support local businesses” got me

Quote a moment, compress it, stop.

Two caveats that matter. 82% of all comments get zero likes, and even a model with every feature I built orders them at AUC 0.671, so most of this is variance you don’t control. And I measured what predicts likes, not what causes them. The timing effect is plausibly causal because it’s mechanical exposure. “Short callback” could easily be a correlate of something else.

The honest summary is that the winning strategy is mostly logistics rather than writing.

Where that leaves it

Optimizing a comment generator against like counts is mostly optimizing against a clock. A model trained on top-liked comments learns what early comments on big videos look like, and the part attributable to what the comment says is around 8%.

That doesn’t make comment quality unmeasurable. It means the measurement has to condition on exposure first, and until now no public dataset let you do that. The thing I’d build next is the piece I couldn’t: human ratings of comments with exposure held fixed, which the corpus now makes possible and doesn’t contain.

The dataset is on Hugging Face under CC BY 4.0, the code and frozen population manifest are on GitHub, and the paper has the full ladder, the splits, and the parts I got wrong.