DEV Community

reapX
reapX

Posted on Edited on

87.5% of Stack Overflow questions get an answer. Only 67.9% get an accepted one.

There are two booleans on a Stack Overflow question that look like they mean the same
thing and do not. isAnswered says at least one answer exists. hasAcceptedAnswer says the
person who asked came back and marked one as correct. The gap between them is a measurement of
something real, and across 10,467 distinct questions it is bigger than I expected.

The gap

  • isAnswered is true on 9,162 questions, 87.5%
  • hasAcceptedAnswer is true on 7,109 questions, 67.9%
  • 2,053 questions have answers but no accepted one, which is 22.4% of all answered questions

So better than one in five answered questions never gets closed out by the asker. The answers are
sitting there, frequently correct, sometimes with high scores, and the green tick never arrives
because the person who asked solved their problem and moved on.

This matters if you are building anything on top of Q and A data. If your pipeline treats
hasAcceptedAnswer as the filter for "this question has a good answer", you are discarding a
fifth of the answered corpus. If you treat isAnswered as that filter, you are picking up
questions whose only answer is wrong. Neither boolean is a quality signal on its own, and the
score column is what you actually want to rank on.

A third figure completes the picture: 913 questions, 8.7%, are closed. Closure and answering are
independent, so a closed question can still carry the best answer on the internet for its topic.

Scale, and the shape of attention

The median question in this set has 170,013 views and 6 answers. That median is high because the
sample skews toward well trafficked questions, and it makes the ceiling worth looking at. The most
viewed question in the set has 16,741,152 views:

question views
How do I undo the most recent local commits in Git? 16,741,152
How can I remove a specific item from an array in JavaScript 13,625,939
How do I delete a Git branch locally and remotely? 13,478,185
How do I revert a Git repository to a previous commit? 12,965,774
Find all files containing a specific text (string) on Linux 12,271,836

Four of the top five are Git and shell questions. Not language features, not frameworks:
recovering from a mistake in a tool people use every day. That is what the long tail of
programming attention actually looks like.

One question in detail

The pages here are keyed on the display name of whoever posted the item, so
https://reapx.dev/data/stackoverflow-scraper/hamza-yerlikaya/ is the Git undo question above:

itemType          question
answerCount       105
hasAcceptedAnswer True
acceptedAnswerId  927386
isClosed          False
createdAt         2009-05-29
lastActivityAt    2026-07-14
contentLicense    CC BY-SA 4.0
Enter fullscreen mode Exit fullscreen mode

A hundred and five answers, still receiving edits seventeen years after it was asked. The
lastActivityAt field against createdAt is a cheap way to find the questions that have become
living documents rather than resolved tickets, and this one is the archetype.

Note the contentLicense of CC BY-SA 4.0. It is per item and it is not always the same value
across the corpus, so if you are redistributing any of this, read that column rather than
assuming one license covers everything.

The tag distribution underneath

The dataset also carries tag rows, 1,065 distinct tags after deduplication, holding 47,079,796
questions between them. The concentration is severe:

  • the top 10 tags hold 31.9% of all questions
  • the top 50 hold 58.1%
  • the top 100 hold 70.0%
  • 518 tags, 48.6% of them, have fewer than 1,000 questions each

The median tag has 1,313 questions. The largest, javascript, has 2,530,218, followed by python at
2,219,380 and java at 1,920,583. Nearly half the tag vocabulary is functionally dead weight, and
434 of the 1,065 have registered synonyms, which is the site's own admission that its taxonomy
grew faster than it was curated.

Where to get it

Item pages are indexed at https://reapx.dev/data/stackoverflow-scraper/, each naming the runs
that produced it. Beyond questions the set also includes answer, user and tag rows, distinguished
by itemType, which is the first column to filter on before you count anything. The full export
lives at https://huggingface.co/datasets/reapxdev/stackoverflow-scraper.

Do deduplicate before aggregating. My first pass at the tag numbers counted the same tag once per
run and produced a total of 93.9 million questions, almost exactly double the real figure.

Top comments (0)