I made an estimate of reputation change per year on SEDE that considers only question and answer upvotes, downvotes and accepts:
SELECT
datepart(yyyy, Votes.CreationDate) AS "Year",
COUNT_BIG(*) AS "Total votes",
SUM (CASE
WHEN Votes.VoteTypeid = 1 THEN 17 /* Answer accepted. +15 for answer author, +2 for question author. */
WHEN Votes.VoteTypeid = 2 AND Posts.PostTypeId = 2 THEN 10 /* Answer upvote */
WHEN Votes.VoteTypeid = 2 AND Posts.PostTypeId = 3 THEN 10 /* Question upvote. Was 5, but retroactively updated: https://stackoverflow.blog/2019/11/13/were-rewarding-the-question-askers */
WHEN Votes.VoteTypeid = 3 AND Posts.PostTypeId = 2 THEN -3 /* Answer downvote. -2 for author, -1 for downvoter */
WHEN Votes.VoteTypeid = 3 AND Posts.PostTypeId = 3 THEN -2 /* Question downvote. -2 for author. */
ELSE 0
END) AS "Reputation change"
FROM Votes
INNER JOIN Posts
ON Votes.PostId = Posts.Id
GROUP BY datepart(yyyy, Votes.CreationDate)
ORDER BY datepart(yyyy, Votes.CreationDate)
There are myriad ways in which to reputation is created or destroyed and some extra rules such as the 200 rep/day cap which complicate things, making this estimate not exact. But I believe it overwhelmingly captures the bulk trend, as it likely accounts for the most common user actions by far.
Here's what it looks like manually excluding the current year of 2024 from the data as that one is not yet complete:
gnuplot script:
set terminal png
set output "out.png"
set datafile separator comma
set title "Approximate total reputation change per year on Stack Overflow"
set xlabel "Year"
set ylabel "Total reputation change"
plot "QueryResults.csv" using 1:3 skip 1 with linespoints notitle
Tested on gnuplot 6.0.0, Ubuntu 24.04.
This graph suggests that the site's popularity is slowing down a bit since 2020. At this point is could still be COVID related, we'll have to wait and see.
The thing that that drew me to this question was the impression that although I'm not answering a lot of questions recently, my rankings in the yearly reputation leagues rankings have slowly improved. I hypothesized it was the combination of me focusing on answering big old questions that have continued interest (related post) plus a decay in average participation. These data supports that hypothesis.
This could be compared with the number of new users per year as per How many new users does Stack Overflow get per day? with this SEDE.
but that one seems to be increasing still, so not sure what to make of it, script:
set terminal png
set output "out.png"
set datafile separator comma
set title "New users per year on Stack Overflow"
set xlabel "Year"
set ylabel "New users"
plot "QueryResults (1).csv" using 1:2 skip 1 with linespoints notitle
OK, it seems that I'm just rediscoveving the a general slowdown of Stack Exchange activity that has been observed by others with simpler metrics like "number of questions asked per year":