How to find similar subreddits: 4 methods, with real data
How to find similar subreddits: sidebars, community search, overlapping keyword searches and audience overlap, with a working Python script and real results.
Piyushh · October 17, 2026 · 5 min read
Similar subreddits are communities that share a topic or an audience with one you already know. To find them, start from that subreddit and work outwards. Check its sidebar, search for communities that describe the same topic in different words, and keep the ones that keep turning up. For a stronger signal, look at where its active members also post. This guide covers four methods, from no code to a Python script, with real results we pulled on October 17, 2026, starting from r/selfhosted.
We're approaching this from the data side: building a list of related subreddits you can query, rank and refresh. Choosing where to post comes later, and the checks in how to find subreddits cover it.
Method 1: The sidebar, wiki and reddit's own suggestions
The quickest source is the subreddit itself. Many moderators list related communities in the sidebar ("About" on mobile) or in a wiki page, often under "related subreddits" or "see also". Those lists are hand-picked and usually good, but they're often years old and only point at subs the mods like.
Reddit's search also suggests communities as you type, and its recommendation feeds push related subs once you've joined a few. Both work for browsing, but neither gives you a list you can save, rank or rerun next month. For that you need search results you can work with in code.
Method 2: Search communities by topic
Reddit's community search matches words in subreddit names and descriptions. ChatterAPI exposes it as GET /v1/reddit/subreddits/search, which returns up to 25 communities per page for 2 credits, each with its name, title, description, member count and NSFW flag.
Start with the seed subreddit's own description, which tells you the words its moderators use for the topic:
curl "https://api.chatterapi.com/v1/reddit/subreddits/selfhosted" \
-H "Authorization: Bearer $CHATTERAPI_KEY"
On October 17, 2026, r/selfhosted described itself as a place for "self-hosted alternatives to our favorite web apps, web services, and online tools", with 856,916 members. So search for the phrases in that description:
curl "https://api.chatterapi.com/v1/reddit/subreddits/search?q=self+hosted" \
-H "Authorization: Bearer $CHATTERAPI_KEY"
The live response, trimmed to the first three of 25 results:
{
"data": [
{
"name": "selfhosted",
"title": "Self-Hosted Alternatives to Popular Services",
"subscribers": 857074,
"createdAt": "2014-07-08T09:34:14.000Z",
"nsfw": false,
"url": "https://www.reddit.com/r/selfhosted/"
},
{
"name": "SelfHostedAI",
"title": "SelfHostedAI",
"subscribers": 16461,
"createdAt": "2023-04-13T16:38:08.000Z",
"nsfw": false,
"url": "https://www.reddit.com/r/SelfHostedAI/"
},
{
"name": "SelfHosting",
"title": "Selfhosting",
"subscribers": 29519,
"createdAt": "2011-12-31T07:35:21.000Z",
"nsfw": false,
"url": "https://www.reddit.com/r/SelfHosting/"
}
],
"page": { "nextCursor": "AbBXQmbEUEZs…", "hasMore": true },
"credits": { "charged": 2, "remaining": 66 }
}
The other 22 included r/homelab (1,106,630 members), r/HomeServer (308,316), r/immich (66,391), r/opensource (389,556) and r/LocalLLaMA (851,340). That's a good list, but it also included things a human would skip:
- r/SelfhostedPro is dead or locked. Its description reads "Sub's closed due to Reddit inc trying to kill 3rd party apps".
- r/selfhostedLietuva, r/selfhostedItalia and r/selfhostedINDIA are regional variants, each with under 500 members.
- r/selfhostedcirclejerk is a joke sub with 35 members.
- r/webdev (3.3 million) and r/sysadmin (1.3 million) share some of the audience, but their topics are much wider.
The free subreddit finder runs this same search in a browser if you want to try a topic before writing code.
Method 3: Run several searches and keep the overlap
One search is noisy because it matches words, not meaning. The fix is to describe the topic two or three ways and rank each subreddit by how many searches return it. A sub that matches both "self hosted" and "home server" is more likely to be related than one that matches only one.
The second phrase, "home server", shows why one search isn't enough. Its 25 results included r/HomeServer and r/homelab, but also r/Minecraft (8,782,878 members), r/F1TV and r/fcbayern, because their descriptions happen to use "home" or "server".
This script combines the two result sets. It drops NSFW subs and anything under 1,000 members, then ranks by the number of searches matched, and after that by the best position in any result list. Sorting by member count would push r/Minecraft near the top, which is the noise you're trying to remove.
import os
from collections import defaultdict
import requests
BASE = "https://api.chatterapi.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['CHATTERAPI_KEY']}"}
SEED = "selfhosted"
QUERIES = ["self hosted", "home server"]
results = {}
for q in QUERIES:
r = requests.get(f"{BASE}/reddit/subreddits/search", headers=HEADERS, params={"q": q}, timeout=60)
r.raise_for_status()
results[q] = r.json()["data"]
hits = defaultdict(set) # subreddit -> queries that returned it
best = {} # subreddit -> best position in any result list
info = {}
for query, subs in results.items():
for pos, s in enumerate(subs):
if s["nsfw"] or not s["subscribers"] or s["subscribers"] < 1000:
continue
hits[s["name"]].add(query)
best[s["name"]] = min(pos, best.get(s["name"], pos))
info[s["name"]] = s
ranked = sorted(
(name for name in hits if name.lower() != SEED.lower()),
key=lambda n: (-len(hits[n]), best[n]),
)
for name in ranked[:12]:
print(f"{len(hits[name])}/{len(results)} #{best[name] + 1:<3} r/{name:<20} {info[name]['subscribers']:>10,}")
The output from the two searches we ran on October 17, 2026:
2/2 #1 r/HomeServer 308,316
2/2 #4 r/homelab 1,106,630
1/2 #2 r/SelfHostedAI 16,461
1/2 #2 r/homeassistant 607,477
1/2 #3 r/SelfHosting 29,519
1/2 #3 r/smarthome 1,187,562
1/2 #6 r/immich 66,391
1/2 #6 r/HomeNetworking 591,006
1/2 #7 r/servers 58,845
1/2 #8 r/DigitalEscapeTools 57,150
1/2 #8 r/homelabsales 172,885
1/2 #9 r/opensource 389,556
r/HomeServer and r/homelab match both phrases and lead the list, and r/Minecraft is gone from the top 12. Two searches cost 4 credits. A third phrase, such as "docker" or "open source alternatives", costs 2 more and usually separates the related subs from the lookalikes.
Method 4: Audience overlap
Topic search finds subs that describe themselves alike. Audience overlap finds subs where the same people post, which is a stronger signal for "subreddits like this one". Most "similar subreddit" maps are built this way.
The idea:
- Pull recent posts from the seed sub with
GET /v1/reddit/subreddits/{name}/postsand collect the authors. - For each author, fetch recent comments with
GET /v1/reddit/users/{name}/commentsand note which subreddits they comment in. - Count how many distinct seed authors appear in each other subreddit. Divide by that subreddit's size if you want niche matches rather than the big defaults that everyone reads.
Each user's comment history is one call, and every comment in it carries its subreddit. In our recorded test-key sample (captured October 7, 2026) of u/spez's comments, the 25 comments split across r/RDDT (14), u/spez's own profile (9) and r/redditstock (2). Run that across 50 authors from a seed sub and the overlap shows up quickly.
from collections import Counter
def subs_for(user):
r = requests.get(f"{BASE}/reddit/users/{user}/comments", headers=HEADERS, timeout=60)
if r.status_code != 200:
return set() # deleted, suspended or private accounts: skip
return {c["subreddit"] for c in r.json()["data"] if not c["subreddit"].startswith("u_")}
posts = requests.get(f"{BASE}/reddit/subreddits/{SEED}/posts", headers=HEADERS,
params={"sort": "new"}, timeout=60).json()["data"]
authors = {p["author"] for p in posts if p["author"] not in ("[deleted]", "AutoModerator")}
overlap = Counter()
for user in authors:
overlap.update(subs_for(user) - {SEED})
print(overlap.most_common(15))
This costs more than topic search: 2 credits for the posts page, plus 2 per author. For 25 authors that's 52 credits. Do it once per seed, store the result, and refresh monthly rather than on every request.
Check every candidate before you use it
A similar-subreddits list is a starting point. Check each candidate before you build on it:
- Check posts per day, not members. A 300,000-member sub with two posts a week is less useful than a 30,000-member sub with fifty. Subreddit stats covers the activity numbers that matter, and the free subreddit stats tool checks one sub at a time.
- Check whether the sub is open. Descriptions like "Reopening soon" (r/HomeServers) or a complaint about a lock (r/homeserver2 says the original "has locked the entire sub indefinitely") mean you should look up the original sub's state before trusting the counts.
- Check that it's the same audience. r/smarthome matched "home server", but it's about consumer devices, not servers. Read the description.
Build your own similar-subreddits list
Pick a seed subreddit, read its description, write two or three phrases for its topic, and run the Method 3 script. You'll get a ranked list in a few minutes for about 6 credits. Sign up with Google for 100 free credits, no card needed. That covers dozens of searches plus a small audience-overlap run. To go deeper on one subreddit, read our guide to subreddit stats next.