Summary: The Reddit Marketing Dataset, edition 2026-10-31
Counted from a snapshot taken Oct 31, with community names merged regardless of capitals, so a few totals differ slightly from the headline figures on our home page.
Data window 2026-10-04T04:15:35Z to 2026-10-31T21:09:11Z UTC (27.7 days).
Every figure below is the verbatim result of the SQL printed under it, run against the named snapshot. bans is a table loaded from the ban log with columns (at, community, reason). Community names in these results are lower case because the SQL groups case-insensitively.
Headlines
- 376,714 threads found in 30,277 communities (profile pages excluded) by 843 search phrases; 317,217 kept as real asks, 58,626 dropped.
- 324,559 comment candidates prepared; 183,852 skipped, 111,779 expired.
- 24,587 comments posted in 5,127 communities; 81.7% carried a link (20,088).
- Removal rate 2.74%: 206 of 7,520 checked comments were removed or missing at their last check.
- 235 communities banned the account (243 ban events).
- 27,790 site visits came through reply links, from 2,478 communities.
communities.csvlists 30,345 communities. The Community Rules Index (Program 5) covers the 12,366 with at least 3 candidates.
Threads found
Run against queue-snapshot.sqlite3.
Show the query
SELECT COUNT(*) AS threads_found,
SUM(decision = 'kept') AS threads_kept,
SUM(decision = 'dropped') AS threads_dropped,
COUNT(DISTINCT CASE WHEN lower(community) NOT LIKE 'u/%'
AND lower(community) NOT LIKE 'u\_%' ESCAPE '\'
THEN lower(community) END) AS communities_with_threads,
(SELECT COUNT(DISTINCT j.value)
FROM found f2, json_each(f2.queries) j) AS search_phrases
FROM found;
| threads_found | threads_kept | threads_dropped | communities_with_threads | search_phrases |
|---|---|---|---|---|
| 376,714 | 317,217 | 58,626 | 30,277 | 843 |
Data window
Run against queue-snapshot.sqlite3.
Show the query
SELECT (julianday(MAX(first_at)) - julianday(MIN(first_at))) / 7.0 AS weeks,
MIN(first_at) AS first_found, MAX(first_at) AS last_found
FROM found;
| weeks | first_found | last_found |
|---|---|---|
| 3.957698412705213 | 2026-10-04T04:15:35+00:00 | 2026-10-31T21:09:11+00:00 |
Comment candidates
Run against queue-snapshot.sqlite3.
Show the query
SELECT COUNT(*) AS candidates,
SUM(state = 'posted') AS candidates_posted,
SUM(state = 'skipped') AS candidates_skipped,
SUM(state = 'expired') AS candidates_expired
FROM items WHERE kind <> 'dm';
| candidates | candidates_posted | candidates_skipped | candidates_expired |
|---|---|---|---|
| 324,559 | 24,588 | 183,852 | 111,779 |
Posts, and the share carrying a link
Run against queue-snapshot.sqlite3.
Show the query
SELECT COUNT(*) AS posted,
COUNT(DISTINCT lower(community)) AS communities_posted_in,
SUM(link = 1) AS posted_with_link,
ROUND(100.0 * SUM(link = 1) / COUNT(*), 1) AS link_share_pct,
SUM(offer = 1) AS posted_with_offer
FROM sends WHERE outcome = 'posted';
| posted | communities_posted_in | posted_with_link | link_share_pct | posted_with_offer |
|---|---|---|---|---|
| 24,587 | 5,127 | 20,088 | 81.7 | 19,306 |
Overall removal rate (final visibility state of each checked comment)
Run against queue-snapshot.sqlite3.
Show the query
WITH last AS (
SELECT permalink, state,
ROW_NUMBER() OVER (PARTITION BY permalink
ORDER BY checked_at DESC, check_no DESC) AS rn
FROM comment_checks WHERE state <> 'unknown')
SELECT COUNT(*) AS comments_checked,
SUM(state = 'visible') AS visible,
SUM(state = 'collapsed') AS collapsed,
SUM(state IN ('removed', 'not_found')) AS removed,
SUM(state = 'deleted') AS deleted,
ROUND(100.0 * SUM(state IN ('removed', 'not_found')) / COUNT(*), 2) AS removal_rate_pct
FROM last WHERE rn = 1;
| comments_checked | visible | collapsed | removed | deleted | removal_rate_pct |
|---|---|---|---|---|---|
| 7,520 | 7,269 | 40 | 206 | 5 | 2.74 |
Bans
Run against bans.jsonl (loaded as table bans(at, community, reason)).
Show the query
SELECT COUNT(*) AS ban_events,
COUNT(DISTINCT lower(community)) AS communities_banned,
MIN(at) AS first_ban, MAX(at) AS last_ban
FROM bans;
| ban_events | communities_banned | first_ban | last_ban |
|---|---|---|---|
| 243 | 235 | 2026-10-04T04:04:48+00:00 | 2026-10-31T21:10:21+00:00 |
Site visits attributed to a reply
Run against commerce-snapshot.sqlite3.
Show the query
ATTACH 'reply-tags.sqlite3' AS rt;
SELECT SUM(p.n) AS visits,
COUNT(DISTINCT p.content) AS replies_with_visits,
COUNT(DISTINCT lower(t.community)) AS communities_with_visits
FROM pageview_campaigns p
JOIN rt.reply_tags t ON t.tag = p.content
WHERE p.source LIKE 'utm:reddit%'
AND p.path NOT LIKE '%/engagement/%'
AND p.path NOT LIKE '%/cohort/%';
| visits | replies_with_visits | communities_with_visits |
|---|---|---|
| 27,790 | 8,824 | 2,478 |
Top 25 communities by asks (threads found per week)
Run against queue-snapshot.sqlite3.
Show the query
SELECT lower(community) AS community,
COUNT(*) AS threads_found,
ROUND(COUNT(*) / ((SELECT julianday(MAX(first_at)) - julianday(MIN(first_at))
FROM found) / 7.0), 2) AS asks_per_week
FROM found
WHERE community IS NOT NULL AND community <> ''
AND lower(community) NOT LIKE 'u/%'
AND lower(community) NOT LIKE 'u\_%' ESCAPE '\'
GROUP BY lower(community)
ORDER BY threads_found DESC, community
LIMIT 25;
| community | threads_found | asks_per_week |
|---|---|---|
| sideproject | 5,202 | 1314.4 |
| askreddit | 2,906 | 734.27 |
| alphaandbetausers | 2,597 | 656.19 |
| imadethis | 2,510 | 634.21 |
| dating_advice | 2,185 | 552.09 |
| sideprojects | 2,180 | 550.83 |
| buildinpublic | 2,064 | 521.52 |
| minecraftserver | 1,549 | 391.39 |
| nostupidquestions | 1,530 | 386.59 |
| playmygame | 1,485 | 375.22 |
| showyourapp | 1,458 | 368.4 |
| solodevelopment | 1,398 | 353.24 |
| itchio | 1,383 | 349.45 |
| ai_agents | 1,175 | 296.89 |
| micro_saas | 1,173 | 296.38 |
| promotemyapp | 1,141 | 288.3 |
| coolgithubprojects | 1,088 | 274.91 |
| gameprofessional | 1,031 | 260.5 |
| testerscommunity | 1,003 | 253.43 |
| entrepreneurs | 984 | 248.63 |
| founder | 983 | 248.38 |
| betatests | 981 | 247.87 |
| fantasyfootballadvice | 978 | 247.11 |
| neetpgcounselling | 923 | 233.22 |
| smallbusiness | 907 | 229.17 |
Top 25 communities by visit share
Run against commerce-snapshot.sqlite3.
Show the query
ATTACH 'reply-tags.sqlite3' AS rt;
WITH v AS (
SELECT lower(t.community) AS community, SUM(p.n) AS visits
FROM pageview_campaigns p
JOIN rt.reply_tags t ON t.tag = p.content
WHERE p.source LIKE 'utm:reddit%'
AND p.path NOT LIKE '%/engagement/%'
AND p.path NOT LIKE '%/cohort/%'
GROUP BY lower(t.community))
SELECT community, visits,
ROUND(100.0 * visits / (SELECT SUM(visits) FROM v), 3) AS visit_share_pct
FROM v
ORDER BY visits DESC, community
LIMIT 25;
| community | visits | visit_share_pct |
|---|---|---|
| blackops1 | 2,612 | 9.399 |
| imadethis | 1,170 | 4.21 |
| alphaandbetausers | 654 | 2.353 |
| sideproject | 529 | 1.904 |
| buildinpublic | 454 | 1.634 |
| micro_saas | 356 | 1.281 |
| androidtvapps | 300 | 1.08 |
| coolgithubprojects | 273 | 0.982 |
| appledevelopers | 252 | 0.907 |
| showyourapp | 245 | 0.882 |
| cofounderhunt | 196 | 0.705 |
| itchio | 191 | 0.687 |
| windowsapps | 188 | 0.677 |
| founder | 179 | 0.644 |
| foss | 172 | 0.619 |
| indiegamewishlist | 157 | 0.565 |
| webdesign | 154 | 0.554 |
| googleplayconsole | 153 | 0.551 |
| pokemonbrowsergames | 153 | 0.551 |
| iosdev | 152 | 0.547 |
| chrome_extensions | 151 | 0.543 |
| saasdevelopers | 139 | 0.5 |
| vertical_dramas | 136 | 0.489 |
| saasbuild | 134 | 0.482 |
| apps | 128 | 0.461 |