What Reddit Tests in System Design
- See where system design sits in Reddit's loop and why it targets Reddit's own products
- Learn the recurring shapes: home feed, comment trees, voting and moderation
- Learn Reddit's house style: eventual consistency, ranking math and anti-manipulation
Reddit runs system design as its own round, a single 60-minute session that mid-level and senior candidates both sit, with senior loops sometimes carrying a second design round on top. The format is conversational and remote, since Reddit hires remote-first, so you talk an architecture through on a shared drawing surface while the interviewer probes and adjusts. What makes it distinctive is where the interviewer points it. Reddit tends to aim the prompt at its own machinery instead of a generic social app. Think of the feed you scroll, the comment threads you expand, the votes that sort them, and the moderation that keeps a subreddit livable. That aim is deliberate.
The round, and who sits it
A few facts shape how you prepare. The round shows up for mid-level engineers and above. It carries real weight for senior offers, where a thin design can set the level lower than the rest of the loop earned. Reddit's machine-learning engineers sit a different version, with an ML system design round on feed ranking or recommendation rather than the general one covered here. And because the whole loop runs in a few weeks and the written feedback is reconciled by the hiring manager and recruiter, the design round rarely stands alone as the single gate. It is one weighted signal among several.
- Who sits it: Mid-level and up. A distinct roughly 60-minute round for mid-level engineers and senior candidates. Senior loops sometimes carry two design rounds. Reddit publishes no question list, so the shapes below are read from candidate reports, not measured rates.
- Format: Remote, one open prompt. Conversational and interviewer-driven, worked on a shared drawing surface. Reddit is remote-first, so even the onsite is video, and the interviewer interrupts to raise the scale or add a constraint partway through.
- MLE track: ML system design. Machine-learning engineers sit a separate loop whose design round is an ML system design, feed ranking or recommendation, in place of the general product design covered in this section.
- Weight: Reads your level. The coding rounds do the most to decide whether an offer happens. A weak design more often shows up as a lower level than as a rejection, so this round is where seniority gets calibrated.
The shapes the round lands on
The prompts cluster into a handful of recognizable shapes. They repeat often enough to guide where prep pays off. One recurs so much that a recruiter has named it in advance. Here it is in full.
Design Reddit's home and popular feeds for around 100 million daily users. Personalize from each user's subreddit subscriptions, rank by Hot with Best, Top and Rising toggles, and stay fresh within seconds of a new post or vote.
That flagship sits at the top of a short list. The chart groups reported prompts by the system they ask you to build and orders them by how often candidates on this track meet each one.
Each shape forces a different hard tradeoff; the feed assembles a personalized, ranked view from many subreddits, and it cannot recompute that on every scroll. Comment trees are worse: they store and page threads that reach tens of thousands of replies, nested to arbitrary depth. Voting has to count fast, keep ranking current, and resist vote farms. Moderation filters content quickly and mostly silently, under per-subreddit rules. Then there is the real-time canvas, Reddit's r/place: a shared pixel grid that a hundred thousand people edit at once. The five worked designs ahead take the shapes with the strongest Reddit signal, ending on notifications. r/place has no lesson of its own, though its ideas surface later.
The spine every answer sits on
Underneath all of these shapes is one set of moving parts, and knowing it lets you answer any of them in Reddit's own terms. Reddit's core objects, the posts, comments, accounts, and subreddits, live in a key-value-style model on PostgreSQL, with memcached in front to absorb reads and read replicas behind it to spread them. Cassandra holds data that has to stay available even when a node dies, such as the precomputed listings a feed reads from. The important move is on the write path. Expensive actions, casting a vote or submitting a post, are not applied on the request itself. They are dropped onto an async job queue and picked up by workers a moment later. In the diagram, a Reader is blue, services like the API Service and the Async Workers are violet, the Async Job Queue is amber, and stores like memcached and the Precomputed Listings are green.
Sizing the read-heavy load
There are no published traffic figures, so size this from the outside and keep it to orders of magnitude. Put daily users on the order of 100 million against roughly 20 feed and comment page loads each, and you land near 2 billion reads a day. That is a big number. Divide by 86,400 seconds and that is about 23,000 reads a second on average, with peaks several times higher, so plan for something like 100,000 a second. The writes sit far below that. If active users cast on the order of 100 million votes a day, that is only about 1,200 votes a second, and new posts and comments are lower still. So reads outrun writes by more than ten to one. That gap is the whole reason the architecture precomputes and caches feeds and listings while pushing votes and submissions onto a queue. Say that ratio out loud early. Every later choice follows from it.
What the round rewards
A Reddit answer that lands tends to make the same handful of moves. Design the read path first. Precompute the feed or the ranked top slice of a hot thread, cache it, and keep the write path separate from it. Name the real bottleneck the generic version skips. That might be assembling a personalized feed from many subreddits, retrieving a subtree of a 50,000-comment thread without overwhelming the client, or counting votes without a single hot row becoming a contention point. Put ranking on the table with actual formulas rather than the bare word "ranking". Treat integrity and abuse as first-class, since voting, moderation, and account creation all invite the question of how you stop brigading and spam. And build the answer to grow, because the interviewer tends to raise the scale partway through, the way Reddit's own coding rounds keep adding requirements.
A Reddit answer
- Designs the read path first and precomputes feeds, listings, and hot comment slices, keeping votes and submissions on an async queue
- Names the binding bottleneck: subreddit fan-out, deep-subtree retrieval, or the hot vote row, over a wave at "we scale horizontally"
- Recites the hot-score formula for posts and the Wilson confidence sort for comments, and says why each fits its surface
- Treats eventual consistency as a deliberate choice, bounds the staleness, and adds vote fuzzing and rate limits against manipulation
- Grows the design when the interviewer raises the scale partway through, from one subreddit to the default front page
A generic answer
- Increments a single counter row on the vote hot path and defends a strong consistency the architecture does not want
- Rebuilds a symmetric follow-graph feed when Reddit fans out over subreddit subscriptions instead
- Stores comments as one rigid tree and reads a huge thread with recursive round-trips that time out
- Leaves ranking as the word "ranking" with no formula, and skips how counts are made resistant to vote farms
- Stops at a box diagram and never reaches moderation, abuse, or the caching that carries the read load
The worked designs
Five designs follow, ordered by how strong the Reddit signal is. Start with the home feed: it is the recruiter-previewed flagship and the clearest place to show that you can assemble and rank a personalized view at scale.
Design the Home Feed
The flagship, previewed by a recruiter by name. Personalized from each user's subreddit subscriptions and ranked by Hot with Best, Top, and Rising toggles. Candidate generation from subscribed subreddits, the push-versus-pull fan-out decision for huge default subreddits, the hot-score formula and where it is computed and cached, and precomputed listings on Cassandra.
Design Nested Comment Threads
Storage, pagination, and ranking for threads that reach tens of thousands of comments nested to arbitrary depth. The storage-model tradeoff across adjacency list, materialized path, and closure table, a flat list plus a parent id with client-side tree building, lazy "continue this thread" loading, and per-node Best ranking of top-level comments.
Design Voting at Scale
Upvotes and downvotes where counts update fast, ranking recomputes, and vote farms cannot game the result. The async write path, idempotent set-not-increment vote application, eventually consistent counters, vote fuzzing as anti-manipulation, and brigading defenses through rate limits and account thresholds.
Design Content Moderation
Per-subreddit AutoModerator rules plus site-wide spam and abuse detection that acts fast, mostly silently, and resists evasion. A multi-stage pipeline, tenant-scoped mod-authored rules, mod queues, shadowbanning as silent removal, and ban-evasion detection by device fingerprint and content similarity.
Design a Notification System
Reply, mention, and mod notifications fanned out over subreddit subscriptions and thread participation rather than a follow graph. Per-user preferences, deduplication, and multi-channel delivery across in-app, email, and push, riding the same async queue that carries votes and submissions.
Each design leans on the System Design course: the scaling playbook for read and write paths, and the toolbox for choosing a log, cache, queue or index. Two more prompts are worth keeping in mind even though they have no lesson here. One is r/place, Reddit's collaborative pixel canvas. A shared grid is packed into a compact bitmap, served from a CDN with a tiny cache window, and updated live over websockets. Draw those three ideas, compact state plus a cached bulk read plus a streamed delta, and you have answered it. The other is a plain classic with no Reddit flavor at all, a web crawler that notifies on completion or a top-100 leaderboard, so keep the general playbook sharp too.
Key Takeaways
- ✓System design is a distinct roughly 60-minute round for mid-level and up, weighted for senior offers and pointed at Reddit's own systems: the feed, comment trees, voting, and moderation, not a generic social app.
- ✓The shapes cluster into a short, recurring list led by the personalized home feed, then nested comment trees, voting integrity, moderation, and notifications, with the r/place canvas appearing as a showcase.
- ✓One spine underlies them all: key-value objects on Postgres with memcached and replicas, Cassandra for availability, and expensive writes deferred to an async queue, which is why counts are eventually consistent by design.
- ✓The round rewards designing the read path first, reciting the hot-score and Wilson formulas, treating staleness as a deliberate bounded choice, and building anti-manipulation in from the start. Reads outrun writes by more than ten to one, and every choice follows from that.
Reddit interview guideKnow what Reddit asks before you walk in.
16 coding · 5 system design · 23 behavioral questions
Get their questions first.
InterviewLegend is independent and not affiliated with or endorsed by any company it covers.