I set out to test the advice. Every few weeks someone publishes a piece explaining what works on dev.to, and the recommendations are always the same: put a number in the title, use all four tags, post on a Tuesday morning, add a cover image. I wanted to check those claims against the platform's own data, because dev.to has a public API and nobody seems to have pointed it at this question.
I got an answer, but not to the question I asked. Before you can ask what makes a post do well, you have to know what a normal post looks like, and it turns out almost nobody knows, including me, because the version of dev.to you read is not the one you publish into.
Two websites wearing the same logo
The feed at dev.to is curated. I pulled 2,500 posts from it and looked at the ones published in August, so everything had at least a fortnight to collect reactions. In that sample of 170 posts, the median post had 15 reactions, 70.6% of them had ten or more, and the mean was 28.8. Exactly zero of them had no reactions at all.
Then I sampled the site itself rather than the feed, by picking article IDs at random and fetching each one directly. That gives 460 posts published in August, chosen without any regard for whether anyone liked them. Here is that sample:
| curated feed | the actual site | |
|---|---|---|
| posts sampled (August) | 170 | 460 |
| mean reactions | 28.8 | 0.21 |
| zero reactions | 0.0% | 91.7% |
| ten or more reactions | 70.6% | 0.4% |
| zero comments | — | 95.7% |
Ninety-two per cent of posts, plus or minus about two and a half points at this sample size, get no reaction whatsoever. Not a low number of reactions. None. And 95.7% of them get no comments either.
These are not bad posts. The zero-reaction pile, read at random, looks like this:
0 reactions Four JavaScript problems I hit writing a chess engine
0 reactions Delta E is a distance, not a score
0 reactions How Farm.js compiles React components into direct DOM updates
0 reactions Why Zod Crashed My Node.js Server
I would read all four of those. They went out into total silence, and the feed I actually see has been quietly filtering them out of my view for as long as I have been posting here.
Getting a fair sample is the hard part
My first attempt was the obvious one. dev.to's API lets you list articles by tag, so I paged through 39 popular tags and collected 82,749 posts. Then, before trusting any of it, I ran a check: the curated feed's August posts are popular by construction, so my big corpus ought to contain nearly all of them. It contained 49%.
So I took one missing post, a webdev article with 60 reactions published on 31 August, and walked twelve pages of the webdev tag listing looking for it. It is not there. What is there is stranger:
page 10: newest=2026-08-31 oldest=2026-08-29
page 11: newest=2026-09-13 oldest=2026-08-27
page 12: newest=2026-08-27 oldest=2026-08-18
Page 11 contains posts newer than anything on page 10. The pages overlap, they run backwards and forwards through time, and posts go missing between them. The listing is not an ordered, complete view of a tag, so you cannot page it to build a corpus, which is precisely what I had just spent forty minutes doing.
Worse, the omissions are not random. Comparing my random-ID sample against the tag corpus, the posts the listing gave me averaged 0.40 reactions while the ones it skipped averaged 0.15, and 19.0% of the included posts had at least one reaction against 5.1% of the excluded. Sampling through the listing quietly hands you a rosier site than the real one. My first draft of this post, written off that corpus, said 85% of posts get nothing. The true figure is 92%, and the error was entirely my instrument.
I also checked that a fortnight really is long enough for a post to finish accumulating. Splitting the August posts by age at the time I fetched them, the share getting any reaction was 13.6% at 14-20 days old and 15.0% at 42-48 days, with no trend in between, so nothing meaningful arrives after the first couple of weeks.
What actually correlates with anything
For the finer comparisons I used the large tag corpus, 45,400 August posts, because the random sample is too small to slice. It leans optimistic in absolute terms, for the reason above, but the relative differences between groups are what matter here.
The advice is not all wrong. A cover image goes with 23.7% of posts getting at least one reaction against 11.2% without. Writing in the first person, a title with "I" or "my" in it, goes with 24.7% against 13.9%. Length helps up to a point, with posts of three to seventeen minutes' reading time doing better than posts under three minutes. Four tags beat one, by 16.0% against 3.5%.
Two pieces of standard advice are simply backwards. Titles beginning with "How" did worse than titles that do not, 12.2% against 15.1%. Listicles, the numbered-list titles, got at least one reaction less often than other posts, 9.5% against 15.0%, though their mean was higher, 0.80 against 0.50, which is the signature of a format that mostly flops and occasionally spikes.
The tag you choose matters more than anything you do to the title. Among tags with at least 300 posts:
| tag | posts | any reaction |
|---|---|---|
| css | 560 | 38.8% |
| showdev | 960 | 38.2% |
| frontend | 541 | 33.6% |
| typescript | 1,556 | 30.1% |
| crypto | 926 | 1.1% |
| jobs | 463 | 0.9% |
| defi | 925 | 0.1% |
| tech | 800 | 0.0% |
Eight hundred posts tagged tech in one month, and not one of them got a single reaction.
And posting more is associated with doing worse per post, not better. Authors publishing one to five posts in August had 23.3% of them get a reaction; authors publishing 21 to 25 had 7.5%. Those high-volume authors are not a curiosity either, they produced 18,386 of the 45,400 posts in the corpus.
The part that undoes most of the above
All of those comparisons share a flaw. If experienced writers with existing followers are also the people who add cover images and write in the first person, then I am measuring the audience, not the technique.
So I ran it again inside each author. For every author with at least four posts in the month, I compared their own posts with a given feature against their own posts without it, then looked at the distribution of those paired differences. If a first-person title genuinely helps, an author's first-person posts should beat their other posts.
They do not. Across 254 authors, the median paired difference for first-person titles was −0.08 reactions, with a 95% confidence interval of [−0.13, +0.00]. Listicles came out at −0.08, [−0.12, −0.03]. Question-mark titles, −0.08, [−0.14, −0.04]. Colons, 0.00. Every apparent effect from the previous section collapses to nothing, or to very slightly negative, once each writer is compared against themselves.
The honest reading is that the title patterns were never doing the work. They were a marker of which kind of account was posting, and when you hold the account fixed they stop predicting anything. What survives the within-author test is not the phrasing, it is which tag you land in and whether anyone was already reading you.
There was one result I could not explain away, and the sample is small enough that I would not lean on it: the 273 posts carrying dev.to's new AI-assisted disclosure label averaged 4.06 reactions with 11.0% reaching ten, against 0.48 and 0.7% for everything else. That is either a real effect or, more likely, evidence that the people who bother setting a brand-new metadata field are unusually engaged with the platform to begin with.
Where I sit, since it would be cowardly not to say
My last twenty posts run from 5 to 16 reactions, median 8. Against the random sample, a post with 8 reactions beats 99.6% of dev.to. Sixteen beats everything in a 460-post draw.
That sounded like good news for about ten seconds. What it actually means is that the bar is on the floor: writing something that a handful of people react to puts you in the top half of one per cent, and the median experience of publishing here is being read by nobody at all.
What I got wrong
Twice, in the same afternoon, and both were instrumentation rather than analysis.
The first fetch piped its progress through tail, which buffers, so I watched an empty log for twenty minutes and assumed it had hung. It had not; it had collected 20,596 posts and was holding them in memory to write at the end. I killed it and lost all of them.
The second is the one that would have ruined the post. I had a complete-looking corpus of 82,749 posts and a headline number, and the only reason I did not publish 85% is that I made myself check the corpus against a list of posts I knew should be in it. If I had skipped that check, everything above would read the same and be wrong by seven percentage points, in the flattering direction. The check took four minutes.
What to take from it
If you write here, the relevant comparison is not the feed. The feed is the top fraction of a per cent, and measuring yourself against it is like judging your running against the people on television.
Pick your tag deliberately, because that is the one input with a large and consistent association. Put a cover image on it. Then stop optimising the title, because within a given author it does not appear to matter, and spend the time on the thing that does: being worth following, so that the next post starts with an audience rather than hoping to find one.
And if you are going to publish numbers about a platform, check your sample against something you already know the answer to. Mine was wrong in the direction that made the story nicer, which is the direction these things usually fail in.
Top comments (1)
This is an interesting data to check and honestly I think that traffic to post may come in time if the topic/post covers a good question or solves a problem, but if it is a general share of knowledge (application, code, db anything with devops) then the traffic, reactions, comments they may never come at all.