DEV Community

George Webb
George Webb

Posted on

Building a Ranking Algorithm for 40,000+ (and growing) Discord Servers

There are millions of Discord servers. Most of them are dead. Some are scams. A handful are genuinely great communities, but finding them is a nightmare (I think).

That's the problem I set out to solve with Discord Rankings, a directory that ranks and categorises Discord servers using a custom scoring algorithm. Here's how the technical side works, what I learned, and why building for community discovery is a surprisingly deep problem.

The Stack

The site runs on React deployed to Netlify, with a Supabase backend handling the database, API sync jobs, and edge functions. The choice of Supabase was driven by two things: PostgreSQL's flexibility for complex scoring queries, and the built-in cron/scheduled function support for keeping server data fresh.

The Scoring Problem

Early on, the ranking was simple: sort by member count. But that's a terrible proxy for quality. A server with 500,000 members and zero active conversations is worse than a 200-member community with daily engagement.

The current algorithm (v3) incorporates multiple signals:

Member count — still a factor, but heavily weighted down compared to earlier versions

24-hour member growth — are people joining or leaving right now?
7-day growth trajectory — smooths out daily spikes and shows sustained momentum

Activity levels — approximate measures of how engaged the community actually is

Content quality signals — does the server offer structured resources, moderation, and clear purpose?

Each signal is normalised and weighted, then combined into a composite score. The weights were iterated on extensively — early versions over-indexed on growth rate, which rewarded servers running aggressive invite campaigns rather than genuinely good communities.

The Data Pipeline

Discord's API provides member counts and basic metadata, but it doesn't hand you a neat "community quality" score. A significant chunk of the work was building a sync system that periodically pulls data for 10,000+ servers, calculates deltas for the growth metrics, and triggers re-ranking.

One of the bigger challenges was categorisation. Thousands of servers were bucketed as "Other" because their descriptions didn't match any predefined category. Building a semi-automated recategorisation pipeline, part keyword matching, part manual review, was tedious but essential. Nobody's browsing a page of "Other" servers.

The SEO Challenge (and a Hard Lesson)

If you're building a React SPA that needs organic traffic, learn from my mistake, plan your rendering strategy before you build or migrate, not after your traffic disappears.

What's Next

The current focus is scaling the sync system to handle hundreds of thousands of servers, improving the categorisation coverage, and building out more granular subcategory pages. There's also interesting work to be done around surfacing trending servers, communities that are growing fast right now, which requires a different scoring lens than "best overall."

Check out the live site at discordrankings.com, feedback welcome.

Top comments (0)