Search 12,366 communities

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.csv lists 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

The dataset itself is program 2.

One payment. Delivered by email link. All sales are final; no refunds.