DEV Community

Noble Ronin
Noble Ronin

Posted on

I Measured 300 Top DEV Posts Looking for the Title Formula. There Isn't One.

There is a whole genre of advice about how to title a technical post. Lead with a number. Start with "I". Make it a question. Be contrarian.

I believed most of it. Then I got annoyed enough to check.

The DEV API is public and doesn't need a key, so I pulled the top 300 posts from the last 30 days, threw out the ones tagged for the Brazilian community — that community votes as a bloc and would have skewed everything — and compared the top 100 by reactions against the 194 below them.

I expected the winners' titles to look obviously different. They don't.

The titles are basically the same

Pattern in the title Top 100 The rest
First person (I / My / Me) 25% 24%
Is a question 12% 12%
Colon or em-dash split 38% 41%
Contrarian word (wrong, stop, actually, broken, secret, nobody) 11% 15%
Contains a number 33% 25%
Says "you" or "your" 16% 12%
Mentions AI 35% 25%

Look at the first four rows. First person, questions, the colon-subtitle construction — the three moves most often recommended — are as common among the posts nobody read as among the posts everybody read.

The contrarian row is my favourite, because it runs backwards. Posts with "wrong" or "stop" or "secret" in the title were more common in the bottom group. That's the single most-repeated piece of title advice, and in this sample it is mild evidence against.

Three patterns do lean the right way: numbers, "you", and AI. But 33-versus-25 is not a formula. It's a nudge, and it's the kind of gap that a different month could easily flip.

What actually separates them is the topic

Here are the tags in the top 100, by frequency:

discuss       52      community     12
ai            50      javascript    10
programming   29      devchallenge   9
webdev        25      showdev        7
career        24      opensource     7
productivity  18      security       6
Enter fullscreen mode Exit fullscreen mode

That's the whole answer, and it's much less fun than a title formula.

discuss shows up in more than half the top hundred. ai in half. Add career and productivity and you've described the majority of everything that travels here.

Now look at the other end of the same list. The specific technical tags — the ones you'd reach for writing about a database, an API, your cluster — are all down in the long tail, in low single digits:

api 3    devops 2    database 1    sql 1    kubernetes 1
linux 1  homelab 1   selfhosted 1  observability 1  infrastructure 1
Enter fullscreen mode Exit fullscreen mode

I want to be careful here, because my first pass at this got it wrong: I looked at the top of the tag list, saw none of them, and was about to write that they're absent. They're not. They're just rare. There is a homelab-and-Talos post in that top 100, and an OpenTelemetry one. Deep technical work does break through.

But discuss appears 52 times and database appears once. That's not a slope, it's a cliff. Writing in a specific technical domain isn't impossible — it's a bet at roughly fifty-to-one odds against, and most people making that bet have no idea those are the odds.

And the format: it's a conversation, not a reference

One number explains more than everything above: the median top-100 post gets one comment for every two reactions.

Sit with that ratio for a second. On a normal post, comments are a small fraction of reactions — most people who like something tap the heart and leave. In the top hundred, half as many people wrote a reply as tapped a heart.

Those aren't posts people bookmarked. They're posts people argued with.

That's also the mechanism, not just a correlation. Engagement is what earns a post its second and third round of distribution. A comment is a much stronger signal than a reaction, and it drags the post back up the feed for another pass. So the format that generates replies compounds, and the format that doesn't, dies quietly after its first impression.

Which is a brutal thing to learn if you write reference material. A genuinely excellent tutorial — correct endpoints, tested examples, nothing hand-waved — gives a reader nothing to say back. "Thanks, this worked" is not a debate. The better and more complete it is, the less there is to add. Its quality actively suppresses the signal it needs to survive.

Median reading time in the top 100, for the record: 6 minutes, with 80% falling between 2 and 11. Short, but not as short as the "nobody reads past 3 minutes" advice claims.

Where I'd argue with my own analysis

Three holes, and I'd rather point at them than have you find them:

Correlation, obviously. A post probably doesn't travel because someone typed discuss in the tag box. The tag describes a kind of post that was already going to travel. Retagging your database tutorial as discuss will not save it, and if you try it, please report back, because I'd love to be wrong.

Reactions aren't reach. I can only see public reaction counts, not views. It's possible some low-reaction posts are read constantly by people who never tap anything — the classic fate of a good reference article that ranks in Google and gets zero on-platform engagement. If that's happening, my "top 100" is really "top 100 at generating on-platform noise," which is a different thing.

I threw out data on a judgment call. Excluding the pt-BR posts was defensible — different market, different voting dynamics — but it was still me removing rows because they were inconvenient for the comparison I wanted to make. You should discount the numbers slightly for that.

Why I bothered

Because my own recent posts have zero reactions between them, and my instinct was that I was writing them badly.

The data says I wasn't, particularly. I was writing them in the wrong room — carefully, competently, into a category with nobody standing in it. Which is a more annoying problem than bad writing, because bad writing you can fix by trying harder, and this you can only fix by writing about something else.

I haven't decided yet whether I want to.


Run it yourself, it takes a minute:

curl -s "https://dev.to/api/articles?top=30&per_page=100&page=1" \
  | jq -r '.[] | "\(.public_reactions_count)\t\(.comments_count)\t\(.tag_list|join(","))\t\(.title)"' \
  | sort -rn | head -30
Enter fullscreen mode Exit fullscreen mode

So here's what I actually want to know, because I only have one month of one platform and a lot of asterisks:

Has anyone here moved a genuinely technical, reference-style post — real depth, real code — and gotten it read? What carried it? I'm asking whether the trade-off is real or whether I've just proven that I gave up early.

Top comments (0)