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
-
isAnsweredis true on 9,162 questions, 87.5% -
hasAcceptedAnsweris 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
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)