Skip to content

Public Archives

Why Reddit Archive Search Results Are Never Perfect

Incompleteness is not a bug in archive search. It is a property of the problem, and the interface should show you where it bites.

Subdex · 2026-08-22 · 3 min read

Every Reddit archive is incomplete, and no amount of engineering fixes it. The gaps come from the shape of the problem, not from anyone doing a bad job.

Understanding where the incompleteness comes from is more useful than knowing that it exists, because different causes bite at different points and some are correctable.

Collection is a race

Reddit does not publish a feed of everything that happens. An archive watches new submissions and fetches them, which means it is always racing deletion.

A post removed within thirty seconds was probably never seen. One removed after a week almost certainly was. Between those, capture depends on collection frequency, which varies by subreddit and by era.

So the archive is systematically biased toward content that survived long enough to be noticed. That bias is invisible in the data — nothing marks a record as "captured because it lasted."

Scores are sampled, not recorded

This one surprises people who have not worked with archive data.

A post captured at creation has a score of 1. Reddit scores accumulate over hours and days, so the archive must go back and update the record. Arctic Shift does this, but only after a delay — for roughly the first 36 hours, score and comment count carry placeholder values rather than real ones.

If you compute a median score across records without excluding those, recently-captured items drag it toward zero and the result looks entirely reasonable. This is the kind of error that survives review, because nothing about the output signals a problem.

Pagination has an off-by-one you cannot fix by being clever

Archive APIs page by timestamp: give me records before this moment. Those filters are inclusive, so the last record of one page is the first record of the next.

The tempting fix is to step the cursor by one second. It is wrong. A busy subreddit produces dozens of records in a single second, and stepping past the boundary silently drops every record sharing that timestamp.

The correct approach is to accept the duplicate and remove it by ID afterwards. Slightly wasteful, and correct — which is the right trade when the alternative is losing records without noticing.

Two archives will not agree

Different projects collected at different times with different infrastructure, so they hold different things and different versions of the same things.

Treating one as authoritative and the other as wrong misreads the situation. Both are samples. Where they disagree about a score, they probably sampled at different moments and both are accurate about their own moment.

The disagreement is information. If two archives differ substantially on something central to your work, that tells you the record is less settled than a single number implies.

What this means for interfaces

If incompleteness is intrinsic, the interface should stop pretending otherwise.

Concretely, that means distinguishing what an archive returned from what the software calculated; marking partial results everywhere rather than in one dismissible banner; saying "archive records found" rather than "total posts"; excluding known-bad values and reporting the exclusion; and refusing to describe an empty result as evidence that nothing was posted.

None of this is decoration. Each one prevents a specific error that incomplete data invites.

The useful reframe

Archive search is useful precisely because it is imperfect — it exists because Reddit's own search is poor and its API restrictive, and an imperfect record beats none.

The failure mode is not incompleteness. It is forgetting about incompleteness partway through an analysis, when a number on screen starts to feel like a fact. Interfaces can help with that, and mostly do not.

Related tools

Related reading

Archive coverage varies and records may be incomplete. Verify important findings against original sources where available.