RedditapisRedditapis
Reddit APIReddit Comment IDBase36PaginationData Engineering2026

Reddit Comment IDs Are Now 13 Characters and Out of Order: What Breaks in Your Code

Reddit's new comment IDs are 13 characters and no longer increasing. When the change went live, what it breaks in your code, and the fix for each case.

Emma·
Reddit comment IDs are now 13 characters cover, an independent developer explainer from redditapis.com, a third-party API not affiliated with Reddit Inc

Reddit's comment IDs changed shape this week. New comments now get base-36 IDs up to 13 characters long, such as 19rlvtujyja1t, instead of the 7 or 8 characters developers have relied on for years, and Reddit no longer promises the IDs go up over time. If your code sorts, validates, stores or paginates by comment ID, check it now.

TL;DR: Reddit announced 13-character, non-monotonic comment IDs on r/redditdev for the week of 28 September 2026, and developers report every subreddit had them by 21 October. Old IDs keep their shape. Sort by created_utc, store IDs as text or BIGINT, keep them out of JavaScript numbers, and dedupe on the t1_ fullname.

TL;DR

Reddit's new comment IDs are base-36 strings up to 13 characters long, 16 with the t1_ prefix, and Reddit no longer promises they increase over time. Reddit announced the change on r/redditdev on 11 May 2026, postponed it, set the week of 28 September, and developers report it reached every subreddit on 21 October. In our pull of 500 new comments on 24 October, all 500 had 13-character IDs. Code breaks where it sorts IDs as strings, takes the max ID as a watermark, parses IDs into JavaScript numbers, or stores them in a column built for 7 characters. Order by created_utc, store IDs as text or a 64-bit integer, and dedupe on the full fullname.

This is an independent explainer from redditapis.com, a third-party API that is not affiliated with Reddit, Inc. The comment object itself, its fields and how to fetch a thread are in our Reddit API comments guide; the API access deadlines are in the October 31 cutoff post and the Developer Platform migration guide. This post covers one change: the comment ID format, what we measured in live data, and the fix for each place it breaks.

Stat panel of the Reddit comment ID change: new IDs up to 13 characters, 16 with the t1_ prefix, 500 of 500 new comments in our 24 October 2026 sample had 13-character IDs, post IDs still 7 characters

What changed about Reddit comment IDs?

Reddit's new comment IDs are still 64-bit integers written in base 36, but they are up to 13 characters long, 16 with the t1_ prefix, and they are no longer guaranteed to increase. Older comments keep their 7 or 8 character IDs. Post, user and subreddit IDs are not part of the change.

The specification is the same in both of Reddit's posts, the 11 May 2026 announcement and the 15 September 2026 reminder, both by the admin u/redtaboo on r/redditdev. Each opens with the same TL;DR:

If you have anything in your code that expects comment IDs to be fewer than 8 characters you will need to make an adjustment.

The technical details, in Reddit's words:

  • "New comment IDs will continue to be 64-bit integers and base36-encoded, but will not be monotonically increasing anymore."
  • "The new base36-encoded comment IDs will be up to 13 characters long (e.g. 19gsnavtu46ip), compared to the current 7-8 characters."
  • "With the t1_ prefix, the new base36-encoded comment IDs will be up to 16 characters long."
  • "Older comment IDs are not changing, and referencing them will not break anything."

Comparison grid of an old and a new Reddit comment ID: example phxrigp versus 19rlvtujyja1t, 7 or 8 characters versus up to 13, a counter versus no ordering guarantee, exact in a JavaScript number versus not

The example in Reddit's own post, 19gsnavtu46ip, decodes to 5,984,384,625,183,611,905. The old 7-character space tops out at 36 to the power of 7, which is 78,364,164,096, so the new IDs are roughly 76 million times larger than anything a 7-character ID could hold.

Old ID vs new ID

What changed between an old and a new Reddit comment ID

New comment IDOld comment ID
Example19rlvtujyja1tphxrigp
LengthUp to 13 characters7 or 8 characters
Fullname lengthUp to 16 with t1_10 or 11 with t1_
Value as an integerAbout 6.0 quintillionAbout 55.5 billion
Increases over timeNot guaranteedYes, a counter
Exact in a JS numberNoYes
Fits a signed BIGINTYesYes
Formats from Reddit's admin posts of 11 May and 15 September 2026 on r/redditdev. Example IDs are a real reply and its real parent from our 24 October 2026 sample.

When did the new Reddit comment IDs go live?

Gradually, from early October to 21 October 2026. Reddit first set the week of 18 May, postponed it a day later, then set the week of 28 September. Developers on r/redditdev report the new IDs reached small subreddits first, about 30 percent of comments around 20 October, and all of them by 21 October.

The sequence, from Reddit's posts and the developer threads under them:

How the Reddit comment ID change rolled out, May to October 2026

DateWhat happenedSourceSource
11 May 2026Change announced for the week of 18 MayReddit admin, r/redditdevpublished
12 May 2026Timeline pushed back, no new dateReddit admin commentpublished
15 Sep 2026Reminder: rollout week of 28 SepReddit admin, r/redditdevpublished
28 Sep 2026A developer still sees old IDsComment on the reminderpublished
Early Oct 2026Small subreddits firstDeveloper reportunknown
21 Oct 2026About 100 percent of new commentsDeveloper reportsunknown
23 Oct 2026old.reddit load more returns 403Moderator report, r/ModSupportpublished

as of 2026-10-24

Method: Dates and wording from Reddit admin posts and comments on r/redditdev and r/ModSupport, read through our Reddit data API on 24 October 2026. Rollout percentages are developer reports in the 22 October thread, not Reddit figures.

The May date did not hold. A day after the announcement, the same admin posted an update pushing the timeline back so Reddit could "better understand use cases where things may break completely". The update still told developers that "if all you need to do is fix your code to ensure it's not expecting a certain character count you should go ahead and do so".

Reddit postponed once, then kept the same spec

The May announcement drew 52 comments, including developers of bots and archives saying their tools relied on the increasing counter. Reddit pushed the date back the next day with no new date, then published the same specification on 15 September with a rollout week of 28 September. Nothing about the format changed between the two posts; only the date and a note that one archive had updated its ingestion.
Reddit admin posts on r/redditdev, 11 May and 15 September 2026

The September reminder set the week of 28 September and added one line the May post did not have: "Pushshift has updated how they ingest data from Reddit and will continue to work after this change goes out." On 28 September a developer replied under it, "I still see old comment_id. When does the changes will roll out?"

Timeline of the Reddit comment ID rollout: announced 11 May 2026, postponed 12 May, reminder 15 September for the week of 28 September, small subreddits first in October, 100 percent by 21 October, old.reddit load more broken 23 October

The answer came on 22 October, when a developer noticed an AutoModerator notification carrying the ID 19rhzb7c1hvnp and asked when the change took effect:

r/redditdev·u/throwawaykJQP7kiw5Fk

When did the comment ID endpoint change?

I got an AutoModerator notification for <https://www.reddit.com/r/Manitoba/comments/1x7ming/software_effected_by_manitoba_timezone_on_1st/19rhzb7c1hvnp/> and couldn't help but notice the comment ID 19rhzb7c1hvnp got…

72
Open on Reddit

Two replies in that thread give the best public timeline. The developer of RemindMeBot wrote that Reddit "rolled it out slowly over the last two weeks to small subreddits, then it jumped to about 30% two days ago, then to 100% yesterday". Another developer put the switch "at approximately 2026-10-21 13:23

UTC per our records". Neither is a Reddit statement, but they agree with each other and with what we measured three days later.

What do the new comment IDs look like in live data?

Uniform. We read the newest 100 comments in each of five busy subreddits through our API on 24 October 2026: all 500 comment IDs were 13 characters, every one began with the same three characters, 19r, and all 500 parent posts still had 7-character IDs. Old and new formats still meet in replies.

We measured it through our own API:

Of the 500 newest comments we read across five busy subreddits, 100% carried a 13-character comment ID.

Our data · Dataset: newest-comment-ids-five-subreddits · Source: public Reddit posts, pulled through our API · Query: reddit_subreddit_comments {"limit": 100, "name": ["AskReddit", "worldnews", "gaming", "programming", "nba"]} · Pulled: 2026-10-24 · n = 500 · Method: share of items whose id matches /^[0-9a-z]{13}$/i; frame: 500 unique items from 5 page(s), deduplicated by id

The posts those 500 comments sat under were a different story: 100% of them still had a 7-character post ID.

Our data · Dataset: newest-comment-ids-five-subreddits · Source: public Reddit posts, pulled through our API · Query: reddit_subreddit_comments {"limit": 100, "name": ["AskReddit", "worldnews", "gaming", "programming", "nba"]} · Pulled: 2026-10-24 · n = 500 · Method: share of items whose post_id matches /^[0-9a-z]{7}$/i; frame: 500 unique items from 5 page(s), deduplicated by id

The replies are where the two formats meet. 292 of the 500 comments answered another comment rather than the post:

Of the 292 comments that replied to another comment, 97% pointed at a parent whose fullname was the full 16 characters, t1_ plus a 13-character ID.

Our data · Dataset: newest-comment-ids-five-subreddits · Source: public Reddit posts, pulled through our API · Query: reddit_subreddit_comments {"limit": 100, "name": ["AskReddit", "worldnews", "gaming", "programming", "nba"]} · Pulled: 2026-10-24 · n = 292 · Method: share of items whose parent_id matches /^t1_[0-9a-z]{13}$/i; filtered to parent_id matching /^t1_/i; frame: 500 unique items from 5 page(s), deduplicated by id

The other 3% of those 292 replies were new 13-character comments answering an older comment with a 7-character ID, so both formats arrive in the same response.

Our data · Dataset: newest-comment-ids-five-subreddits · Source: public Reddit posts, pulled through our API · Query: reddit_subreddit_comments {"limit": 100, "name": ["AskReddit", "worldnews", "gaming", "programming", "nba"]} · Pulled: 2026-10-24 · n = 292 · Method: share of items whose parent_id matches /^t1_[0-9a-z]{7}$/i; filtered to parent_id matching /^t1_/i; frame: 500 unique items from 5 page(s), deduplicated by id

Donut chart of 292 Reddit replies in our 24 October 2026 sample: 97 percent had a parent with a new 13-character ID, 3 percent had a parent with an old 7-character ID

One of those nine, from r/AskReddit, as our API returned it:

What a new comment looks like in the JSON

One comment from the subreddit comment stream, 24 October 2026

Our data

Both formats now arrive in one response

Old IDs are not being rewritten, so every reply to a comment written before the rollout pairs a 13-character child with a 7-character parent. In our 24 October 2026 sample that was 9 of 292 replies, in r/AskReddit, r/worldnews, r/gaming and r/programming. Any code that assumes one length per response, or compares a child's ID with its parent's as text, meets this case every day.
redditapis.com pull of 500 new comments, 24 October 2026

The per-subreddit breakdown, including how long each subreddit took to produce 100 comments:

500 new Reddit comments on 24 October 2026: ID length and order by subreddit

SubredditComments13-char IDsMinutes coveredPairs comparedOut of orderSource
r/AskReddit1001000.84,8580measured
r/nba1001003.34,9250measured
r/worldnews10010010.54,9420measured
r/gaming10010030.84,9490measured
r/programming100100772.24,9500measured

as of 2026-10-24

Method: The newest 100 comments in each of five subreddits, pulled through our API on 24 October 2026 at about 17:31 US Pacific. Pairs compared are every pair of comments within a subreddit with different created times; an order disagreement is a pair where the comment created later has the smaller base-36 ID value. created_utc has one-second resolution, so ties are excluded.

Bar chart of minutes covered by the newest 100 comments in five subreddits on 24 October 2026: r/AskReddit 0.8, r/nba 3.3, r/worldnews 10.5, r/gaming 30.8, r/programming 772.2

That spread matters for the fixes below. r/AskReddit produced 100 comments in under a minute, so a poller that falls behind there by one cycle needs a correct watermark, not a lucky one.

Why are new Reddit comment IDs not in order?

Because Reddit wants to create comment IDs in more than one place at once. An admin, quoting Reddit's engineers, said the goal was multi-region and scale-out databases, with several fields inside each ID to rule out collisions. IDs minted by different machines can come out in a different order from the comments' creation times.

The full answer, posted under the September reminder after a developer asked how Reddit avoids collisions without a counter:

The goal was to enable multi-region and scale out databases. But we had to ensure that had no collisions, there are multiple fields inside of the ID that guarantee it.

The same reply said Reddit "also considered GUIDs but we discard them to avoid the greater impact it would have in other systems as well as the community". What Reddit has and has not said about the design:

  • Said: 64-bit integers, base 36, up to 13 characters, several fields inside each ID, no collisions.
  • Said: GUIDs were considered and rejected.
  • Not said: the bit layout, whether a timestamp sits in the high bits, or how far out of order two IDs can be.

Commenters in both threads compared the design to Snowflake IDs, the 64-bit scheme that puts a timestamp in the high bits and a machine and sequence number below it. Reddit has not published the layout, and an admin said a longer write-up may come on r/RedditEng.

This video walks through how a Snowflake-style generator is built, which is the closest public model of why such IDs are roughly but not strictly time-ordered:

And the caution that applies to any time-prefixed ID, from a post this week on UUIDv7:

Arpit Bhayani

Arpit Bhayani

@arpit_bhayani

Databases and systems love it when your IDs are sorted. It makes deep pagination so much more efficient. But if you are relying on UUIDv7 for monotonicity and its timestamp, here is something for you... First, why do sorted IDs matter? Most databases keep the primary key in a ht… Show more

Embedded post media

Numbered list of where a Reddit comment ID appears: the id field, the t1_ fullname in name, parent_id on replies, link_id for the post, the permalink URL and the after cursor

Are they in order today?

In our sample, yes, at the resolution we can test. For every pair of comments with different created times, we checked whether the later comment had the larger ID value. Across all 500 comments, comparing every pair regardless of subreddit, that was 124,520 pairs, and none disagreed; within each subreddit alone it was 24,624 pairs, also with none out of order. The 230 pairs created in the same second could not be tested, and created_utc gives nothing finer.

That is a finding about one evening's data, not a promise. Reddit stated the opposite in writing, and a multi-region system can mint a lower ID for a later comment the moment a second region takes writes. Build for Reddit's statement, not for our sample.

Start building with Redditapis

Reads $0.0015, votes $0.005, writes $0.012, DMs $0.025. $0.50 free credits.

What breaks when code sorts Reddit comment IDs as strings?

Every new comment sorts before every old one. A text comparison reads characters left to right, new IDs start with the digit 1, and most old IDs start with a letter, so ORDER BY id, sorted() or max() on the strings puts a reply written this week ahead of a parent written last week.

A real pair from our sample, the reply 19rlvtujyja1t and its parent phxrigp:

ids = ["phxrigp", "19rlvtujyja1t"]

max(ids)                              # 'phxrigp', the older comment
max(ids, key=lambda s: int(s, 36))    # '19rlvtujyja1t', the newer one

Comparison of sorting two real Reddit comment IDs: as text, phxrigp sorts after 19rlvtujyja1t, so max() returns the older comment; as base-36 integers, 19rlvtujyja1t is 6.0 quintillion and phxrigp is 55.5 billion

Base-36 strings only sort correctly as text when they have the same length, which is why the old habit worked: for years almost every comment ID was 7 characters. Mixed lengths end that. The same applies to a database primary key on a text column, which is why the order of a query result can flip silently even though nothing in your code changed.

The fix depends on what you meant by the sort:

  • Newest first: order by created_utc, then by the ID as an integer to break ties, so a replay of the same data gives the same order.
  • Exact order of creation: you cannot get it from the ID any more. created_utc is to the second; within a second, accept that the order is arbitrary.
  • A stable key for a set: sort by the ID as an integer, which is consistent even if it is not chronological.

What breaks when you use the max comment ID as a watermark?

A poller that remembers the highest ID it processed and then keeps only comments with a higher ID now has two problems. As a string, every new ID is lower than an old one, so it stops seeing new comments. As an integer, Reddit no longer guarantees that a later comment gets a higher ID, so it can skip some.

This was the most common pattern Reddit's announcement threatened. The developer of RemindMeBot replied to the May post within hours:

This will break RemindMeBot. It depends on the monotonically increasing comment id to find the trigger word in new comments.

A watermark that survives the change uses time plus a set, not a single ID:

OVERLAP = 120  # seconds of look-back on every poll

def new_comments(page, state):
    """page: newest-first comments; state: {'since': int, 'seen': set}"""
    cutoff = state["since"] - OVERLAP
    fresh = [c for c in page
             if c["created_utc"] >= cutoff and c["name"] not in state["seen"]]
    for c in fresh:
        state["seen"].add(c["name"])          # t1_ fullname, all 16 characters
    if page:
        state["since"] = max(state["since"], max(c["created_utc"] for c in page))
    # in production, expire fullnames older than the overlap window
    return fresh

Five step flow for a Reddit comment watermark after the ID change: fetch newest first, keep comments newer than the last time minus an overlap, skip fullnames already seen, record the new fullnames, advance the time watermark

The overlap window is the part people leave out. Two comments created in the same second, or a comment that reaches the listing a little late, would be lost by a strict created_utc > since test; re-reading a short window and dropping what is already in the set costs a few duplicates and loses nothing. Our pagination guide covers why the after cursor is not a watermark either: it is opaque, carries paging depth, and is not a comment ID you should store.

For a stream you do not want to poll yourself, our monitoring explainer describes how keyword monitors deliver new comments to a webhook.

Why does JavaScript get new Reddit comment IDs wrong?

Because a new ID is too large for a JavaScript number. A 13-character base-36 ID is around 6.0 x 10^18, and a JavaScript number only holds whole numbers exactly up to 9,007,199,254,740,991. parseInt and JSON.parse round anything larger without an error, so the number you get back is a different ID.

The arithmetic, from MDN on Number.MAX_SAFE_INTEGER:

const id = "19rlvucowhq8z";

Number.parseInt(id, 36);
// 6023915542832964000, stored as 6023915542832963584: 221 off the real value

const toBigInt = (s) =>
  [...s].reduce((n, ch) => n * 36n + BigInt(parseInt(ch, 36)), 0n);

toBigInt(id);                                     // 6023915542832963363n
toBigInt("19rlvtujyja1t") > toBigInt("phxrigp");  // true

Stat panel of the JavaScript precision limit for Reddit comment IDs: Number.MAX_SAFE_INTEGER is 9.0 quadrillion, a new comment ID is 6.0 quintillion, parseInt returns a value 221 away from the real ID

The old IDs never came close. phxrigp is 55,504,194,361, so for years parseInt(id, 36) was safe and plenty of code used it to compare comments. It is not safe now. Keep the ID a string everywhere it travels, as our TypeScript guide types it, and convert to BigInt only where you need arithmetic or an integer comparison.

X went through the same thing when its IDs outgrew JavaScript, which is why its API returns id_str beside id, as X's own ID documentation explains. A developer described hitting it this week with tweet IDs:

Sujal

Sujal

@hecodesforme

my script saved tweet IDs to a JSON file and every lookup after that came back 404 the IDs looked fine. 19 digits, same length as on the site they weren't. 2113619830578241578 went in and 2113619830578241500 came out JSON.parse turns every number into a JS double, and a double

Python is unaffected: int("19rlvucowhq8z", 36) returns the exact value, because Python integers have no fixed size. The risk in a Python stack is the hop into something else, such as a JSON consumer written in JavaScript or a column typed as a 53-bit float.

Which Reddit comment ID columns and regexes need changing?

Any column sized for 7 or 8 characters, any regex that pins the length, and any integer column narrower than 64 bits. New IDs need 13 characters, fullnames need 16, and as integers they need a signed 64-bit type. Reddit's TL;DR singles out exactly this: code that expects fewer than 8 characters.

Storage, for the common databases:

  • Text: varchar(16) holds a fullname and varchar(13) a bare ID. A char(7) or varchar(8) either truncates or rejects, depending on the database's strict mode.
  • Integer: a signed bigint. Per the PostgreSQL numeric types page, it holds up to 9,223,372,036,854,775,807, and the largest ID in our sample was 6,023,915,575,584,162,885, about 65 percent of that.
  • Both: many pipelines keep the text ID as the key and add an integer column only for ordering experiments.
-- PostgreSQL: widen the text key, keep an integer copy, order by time
ALTER TABLE reddit_comments ALTER COLUMN id TYPE varchar(16);
ALTER TABLE reddit_comments ADD COLUMN id_num bigint;
CREATE INDEX reddit_comments_time_idx ON reddit_comments (created_utc, id_num);

Numbered list of storage fixes for Reddit comment IDs: varchar(13) for a bare ID, varchar(16) for a t1_ fullname, signed bigint for the integer value, an index on created_utc, and no char(7) or varchar(8) columns

Validation is the second place. Patterns like ^[a-z0-9]{6,8}$ or ^[a-z0-9]{7}$ reject every new comment, and a URL parser that slices a fixed number of characters after /comments/ cuts the ID in half. A commenter in the May thread put the right rule simply: allow increased lengths "as long as they're still valid base 36, matching up until the next slash or end of string".

import re

COMMENT_ID = re.compile(r"^[0-9a-z]{1,13}$")
COMMENT_FULLNAME = re.compile(r"^t1_[0-9a-z]{1,13}$")
PERMALINK_COMMENT = re.compile(r"/comments/([0-9a-z]+)/[^/]*/([0-9a-z]+)/?$")

Comparison grid of Reddit comment ID regex patterns before and after the change: a fixed 6 to 8 or exactly 7 character pattern rejects new IDs, a 1 to 13 character base-36 pattern accepts both, a fullname pattern adds the t1_ prefix

How should you dedupe Reddit comments after the ID change?

On the full fullname, t1_ plus the whole ID, stored as text. A new ID is unique on its own, but a key that trims the ID, drops the type prefix or casts it to a narrow number will collide or corrupt. The fullname is also what Reddit's own parent_id and link_id fields carry.

Three dedupe keys that used to look harmless:

  • A prefix of the ID. Shortening IDs for display or a cache key used to be safe because a 7-character ID has little to cut. Every new ID in our sample shared its first three characters, 19r, so a short prefix now collides constantly.
  • The bare ID across types. A post ID and a comment ID can be the same string; only the t1_ or t3_ prefix tells them apart. Our bulk fetch by ID guide shows why fullnames are the safe key across endpoints.
  • The ID as a float. Any store that silently converts numbers to doubles, a common JSON default, turns two different new IDs into the same number.

Numbered list of three Reddit comment dedupe keys that break after the ID change: a short ID prefix now collides because new IDs share 19r, a bare ID collides across posts and comments, and a float conversion merges different IDs

Assumption and fix

Six assumptions the new comment IDs break, and what to do instead

What to do nowOld assumption
Sort orderOrder by created_utc, ID as tiebreakSort by the ID string
WatermarkTime window plus a seen setMax ID seen so far
ParsingKeep as string, BigInt if neededparseInt into a number
StorageText of 16 or a BIGINTCHAR(7) or VARCHAR(8)
Validation1 to 13 base-36 charactersExactly 6 to 8 characters
Dedupe keyFull fullname, t1_ plus IDBare ID or a prefix of it
Each row is covered in its own section below with code.

The cheapest Reddit API. Try it free.

Reads from $0.0015 per call. $0.50 free credits. No credit card required.

What else broke when the new Reddit comment IDs went live?

The first visible breakage was Reddit's own. On 23 October 2026, moderators reported on r/ModSupport that the "load more comments" link on old.reddit had returned a 403 for about a day, and suspected the new IDs. A Reddit community admin replied that the report had been shared with the team. Reddit has not confirmed a cause.

r/ModSupport·u/baseballlover723

Load more comments is currently broken on old reddit (likely related to the new longer comment ids)

On old reddit, anytime the post doesn't natively load all the comments, it gives you a button like "load more comments (5 replies)" to load the additional comments. It also always shows up on stickied mod comments, as…

3013
Open on Reddit

The reporter noted that the same function worked on the new site, which uses a different, private API, and that the error was "extremely unlikely to actually be an auth issue". A commenter offered a workaround, opening the last visible comment's permalink in a new tab so its children load. The bump on Reddit's own announcement thread that linked the report was itself written as a 13-character comment, 19rkfdzdgx7qb.

For tools that read Reddit through the old JSON endpoints, the lesson is the same as for your own code: the paths that page through comment trees with comment IDs, such as "more" children, are where length assumptions hide. Our limitations guide lists the comment-tree limits that already applied before this change.

How does redditapis.com handle the new comment IDs?

Our subreddit comment stream returned comment IDs, parent IDs and post IDs as JSON strings, unchanged, in the 24 October pull above. Separately, on 30 September 2026 we changed how our comment monitors decide whether they missed anything, because that check had compared comment IDs as numbers and the new IDs are too large for it.

What that change does, stated narrowly:

  • The old check confirmed a poll had walked past its last-seen comment by comparing IDs. It was built for IDs of up to 10 base-36 digits, so the numbers stay inside JavaScript's exact range, and new 13-character IDs fall outside it.
  • The new path applies only to comment streams, and only when the ID comparison cannot decide. The monitor looks the last-seen comment up by its t1_ fullname.
  • It treats that comment as passed only on positive evidence: Reddit marks it removed or deleted, and its creation time falls inside the stretch of time the poll actually covered.
  • Every other outcome (a failed lookup, a live comment, an unreadable time) leaves the warning in place, so the change can quiet a proven gap and never hide an unknown one.

Flow of a redditapis.com comment monitor gap check after the ID change: compare IDs if possible, else look up the last-seen comment by fullname, accept only if removed and inside the polled span, else keep the warning

That is the extent of it. We are not claiming anything about code we did not change. If you build on our monitoring API or the comment stream endpoint, treat the IDs you receive exactly as this post recommends for your own code.

A first call to see the new IDs in your own terminal:

curl -sS "https://api.redditapis.com/api/reddit/sub/programming/comments?limit=25" \
  -H "Authorization: Bearer $REDDITAPIS_KEY"

Reddit comment ID handling by language and database

The language decides whether a new ID survives parsing; the column type decides whether it survives storage. Python, Go's int64 and uint64, Java's long and a signed BIGINT all hold the value exactly. JavaScript numbers, JSON parsed by default, and 32-bit integers do not. Text works everywhere.

  • Python: int(id, 36) is exact; PRAW exposes comment.id and comment.fullname as strings, which is the right default. Our REST vs PRAW comparison maps the fields.
  • JavaScript and TypeScript: strings by default; BigInt for arithmetic; never Number or parseInt. The Node.js guide shows request code that keeps IDs as strings.
  • Go, Java, C#: a signed 64-bit integer is enough, as is a string.
  • PostgreSQL, MySQL: varchar(16) or bigint. SQLite stores integers up to 8 bytes, per its datatype documentation.
  • Spreadsheets and BI tools: import IDs as text. Most of them store numbers as doubles and will round a new ID the same way JavaScript does.

Comparison grid of Reddit comment ID handling by language and database: Python int exact, JavaScript Number rounds, BigInt exact, signed 64-bit integers exact, varchar(16) exact, spreadsheet numbers round

How to test your code against the new Reddit comment IDs

Add fixtures that mix both formats and run every code path that sorts, stores, parses or validates comment IDs. A useful minimum set is one old ID, one new ID, a reply whose parent is old, and two comments created in the same second, because those four cases exercise every bug in this post.

The fixture set, built from real IDs in our sample and Reddit's own example:

  • Old ID: phxrigp, 7 characters, 55,504,194,361 as an integer.
  • New ID: 19rlvtujyja1t, 13 characters, 6,023,915,503,351,981,985 as an integer.
  • Mixed reply: id 19rlvtujyja1t with parent_id t1_phxrigp.
  • Reddit's example: 19gsnavtu46ip, the ID in both admin posts.
  • Same-second pair: two new comments with equal created_utc, to prove your ordering has a tiebreak.

The assertions that matter: the newest-first query returns the new comment first, a round trip through your API and database returns the identical string, the validator accepts all of them, and the dedupe step keeps both comments in the same-second pair.

Numbered checklist for testing code against the new Reddit comment IDs: an old 7-character fixture, a new 13-character fixture, a reply with an old parent, a same-second pair, then assert order, round trip, validation and dedupe

If you keep a Reddit archive, also re-check any job that reads it with a fixed-width parser. Our comparison of live datasets and static dumps covers why a stored corpus needs re-reads, and the Pushshift alternative page covers live reads for teams that relied on an archive.

What to do about the Reddit comment ID change in 2026

Search your code for every place a comment ID is sorted, compared, parsed, sliced, validated or stored, and fix each one the way this post describes. The change is already live on every subreddit, so a pipeline that has not failed loudly may be failing quietly by dropping or misordering comments.

The checklist:

  • Grep for ID comparisons: max(, sorted(, ORDER BY id, > between IDs, and parseInt( with radix 36.
  • Replace ID watermarks with created_utc plus a short overlap window and a set of seen fullnames.
  • Widen storage: text columns to 13 or 16 characters, integer columns to signed 64-bit.
  • Loosen validators to 1 to 13 base-36 characters, and stop slicing fixed widths out of URLs.
  • Dedupe on the full t1_ fullname, never a prefix or a number.
  • Re-run last week's data through the fixed path and compare counts, which is the fastest way to find comments the old code dropped since 21 October.

Checklist for the Reddit comment ID change: grep for ID comparisons, replace max-ID watermarks with time plus a seen set, widen storage to varchar(16) or bigint, loosen validators, dedupe on the t1_ fullname, re-run last week of data

Reddit's wider API timeline is unchanged by any of this: new Data API requests still close on October 31, as covered in our Reddit Data API access hub, and the RSS end date post covers November 13. When you want a live page of new-format IDs to test against, the quickstart gets a first call running and signup issues a key.

Where these numbers come from.

Each row is a figure in this post and the artefact it was read from. Reddit's access rules and the third-party archives around them keep moving, so check the date on a source before you build against it.

r/redditdev: Upcoming changes to the comment ID endpoint (11 May 2026)
Reddit admin post announcing 13-character, non-monotonic comment IDs, first set for the week of 18 May.
r/redditdev: admin update postponing the change (12 May 2026)
The admin comment that pushed the timeline back and told developers to fix fixed-length assumptions anyway.
r/redditdev: Upcoming changes to the comment ID endpoint, reminder (15 September 2026)
Reddit admin reminder setting the rollout for the week of 28 September 2026.
r/redditdev: admin reply on why the IDs changed
Reddit's engineers, quoted by the admin: multi-region and scale-out databases, collision-free fields inside the ID, GUIDs considered and rejected.
r/redditdev: When did the comment ID endpoint change? (22 October 2026)
Developer thread with the rollout reports: small subreddits first, about 30 percent, then 100 percent around 21 October.
r/ModSupport: Load more comments is broken on old reddit (23 October 2026)
Moderator report of a 403 on old.reddit's load more comments link, with a Reddit admin reply.
MDN: Number.MAX_SAFE_INTEGER
The largest integer a JavaScript number holds exactly, 2^53 minus 1.
MDN: BigInt
JavaScript's arbitrary-precision integer type.
PostgreSQL: Numeric Types
bigint range of -9223372036854775808 to +9223372036854775807.
Wikipedia: Snowflake ID
The time-plus-worker 64-bit ID scheme commenters compared Reddit's new IDs to.
X developer docs: X IDs
X's guide to 64-bit Snowflake IDs: v1.1 returns id_str beside id, and JavaScript clients should use the string.

Frequently asked questions.

New Reddit comment IDs are up to 13 base-36 characters, for example 19rlvucowhq8z, and up to 16 characters with the t1_ prefix. Older comments keep their 7 or 8 character IDs, per Reddit's admin post on r/redditdev. In our read of 500 new comments on 24 October 2026, every one had a 13-character ID. Post IDs did not change: all 500 parent posts still had 7-character IDs. See the comments endpoint guide for the full comment shape.

Reddit says no guarantee: new comment IDs 'will not be monotonically increasing anymore', and an admin said the goal was multi-region databases. In our sample of 500 comments the integer value of the ID still followed created_utc in 124,520 of 124,520 pairs we could compare, at one-second resolution. That is an observation, not a contract. Order by created_utc and keep the ID only as a tiebreaker, as our pagination guide does for cursors.

Because a string comparison reads the first character. A new ID starts with 1, as in 19rlvtujyja1t, and most old IDs start with a letter, as in phxrigp, so a text sort or max() puts every new comment before the old ones. As integers the order is the other way round: 19rlvtujyja1t is 6.0 quintillion and phxrigp is 55.5 billion. Compare base-36 IDs as integers, or compare created_utc, and see the pagination guide for cursors that do not depend on ID order.

Not with Number or parseInt. A 13-character base-36 ID is about 6.0 x 10^18, far above Number.MAX_SAFE_INTEGER of 9,007,199,254,740,991, so parseInt('19rlvucowhq8z', 36) returns a value 221 away from the real ID. Keep IDs as strings, and use BigInt when you need the number. The TypeScript guide covers typing them as strings end to end.

A text column of at least 13 characters for the bare ID, or 16 for the t1_ fullname, or a signed 64-bit integer. Reddit says the IDs remain 64-bit integers, and the largest value we saw, 6,023,915,575,584,162,885, sits inside a signed BIGINT's maximum of 9,223,372,036,854,775,807. A CHAR(7) or VARCHAR(8) column will truncate or reject them. The comments endpoint guide lists every ID field a comment carries.

Moderators reported on r/ModSupport on 23 October 2026 that the 'load more comments' link on old.reddit returned a 403 for about a day and suspected the new IDs. A Reddit community admin replied that the report had been shared with the team. Reddit has not confirmed the cause, so treat the link to the ID change as the reporters' reading. Our limitations guide covers the comment-tree limits that applied before the change.

No. Reddit's posts only describe comment IDs, the t1_ type, and in our sample all 500 comments sat under posts with 7-character IDs. User, subreddit and post fullnames keep their old shape. Code that handles several thing types should not assume that one length rule covers all of them, which our bulk fetch by ID guide also warns about.

No. Reddit's post says older comment IDs are not changing and referencing them will not break anything. What changes is how you compare, store and validate IDs from now on, because a single response can now hold both formats: in our sample 9 of 292 replies were 13-character comments answering a 7-character parent. Re-reading stored IDs in bulk is covered in the bulk fetch by ID guide.

Keep reading.

Continue exploring related pages.

Reddit API documentation

The complete 2026 reference: auth, all 74 endpoints, and code.

Get a Reddit API key

Instant bearer token, no waitlist and no enterprise contract.

Reddit Responsible Builder Policy

Why Reddit denies API applications, and the managed REST bypass.

Reddit API use cases

14 use cases from AI training to brand monitoring and DMs.

Reddit Search API

Search posts, comments, users, and communities over one REST endpoint.

Reddit MCP server

Wrap the REST API as MCP tools for Claude, Cursor, and any MCP client.

Reddit MCP hub

Install tabs for every client, the full tool table, pricing and fixes.

Reddit API for AI agents

Live Reddit context for tool calls, MCP servers, and RAG pipelines.

Redditapis pricing

Endpoint-level costs and quick monthly totals - reads from $0.0015 / call.

Reddit API cost calculator

Estimate monthly spend using your request volume.

Reddit API guides and tutorials

Tutorials, walkthroughs, and API deep-dives for developers.

Reddit API alternatives

Evaluate alternatives by cost model, limits, and integration fit.

Cheap Reddit API

The cheapest way to get Reddit data: $0.0015 per call, no contract, no minimum.

Official Reddit API vs Redditapis

Access, setup, rate limits, and pricing, side by side.

PRAW alternative

A hosted Reddit REST API for any language, no app registration or OAuth.

Reddapi alternative

A maintained Reddit REST API with published pricing and write endpoints.

Reddit comment scraper alternative

The raw comment API: search and filter comments, historical and live, clean JSON.

Reddit scraper API

Hosted scraper API vs building your own: no proxies to manage, clean JSON.

RapidAPI Reddit alternative

A direct, maintained Reddit API with published pricing and write endpoints.

Bright Data Reddit alternative

A purpose-built Reddit API vs a general scraping platform: structured JSON, plus writes.

ScraperAPI Reddit alternative

A Reddit-native API vs a generic HTML fetcher: auth and pagination handled, typed JSON.

TikHub alternative

TikHub's Reddit surface is read-only; get comment, vote, and DM endpoints too.

EnsembleData alternative

No $100/month floor: pay per call from $0.0015, plus write, vote, and DM endpoints.

Scrape Creators alternative

7 read-only Reddit endpoints vs a dedicated API with real write, vote, and DM paths.

FetchLayer alternative

Posts, comments, and search only; add vote, comment, and DM over the same REST auth.

PullPush alternative

PullPush is free but volunteer-run and goes offline for reindexing; a maintained REST API that stays up.

Reddit monitoring API

Build your own keyword and brand-mention monitor: search, comment search, and subreddit streams over REST.

F5Bot vs Redditapis

F5Bot's Slack and Discord delivery needs its $49.99/mo Gold tier; Redditapis includes it from $19/mo.

Syften vs Redditapis

Syften caps you at 100 to 500 results a day; Redditapis allows 10,000 a day per monitor at the entry plan.

Octolens vs Redditapis

Octolens meters by mention with overage fees; Redditapis is flat-priced by subreddit slot from $19/mo.

Affiliate program

Earn 20% lifetime commissions - capped at $5,000/yr.

Reddit Vote API tutorial

Upvote and downvote a post programmatically via the REST API.

Reddit Data API: REST, no PRAW

REST endpoints for Reddit data with no PRAW and no OAuth dance.

Reddit scraping benchmarks

Real throughput, error rates, and cost benchmarks for Reddit scraping.

Reddit API answers

Direct answers on cost, access, rate limits, endpoints, and auth.

How much the Reddit API costs

Per-call pricing from $0.0015 a read, with $0.50 in free credits.

Reddit API in Python

One requests call with a bearer token, no PRAW and no OAuth flow.

Reddit shadowban checker

Check if a Reddit account is shadowbanned in seconds, free and no login.

Subreddit stats checker

See any subreddit's live subscriber count, active users, and age, free and no login.

Similar reads.

More guides on the Reddit API, scraping, pricing, and MCP servers.

Reddit API Limitations in 2026 cover, an independent reference to what the Reddit API will not do beyond rate limits, from redditapis.com, a third-party API not affiliated with Reddit Inc
Reddit APIAPI Limitations

Reddit API Limitations in 2026: What the API Will Not Do, Beyond Rate Limits

Every Reddit API ceiling that is not a rate limit: the 1,000-item listing cap we measured, search depth, deleted content, access approval and commercial terms.

Emma·
Reddit API pagination guide, an independent third-party tutorial on the after cursor, the 100-per-page limit, and getting complete data past the ~1000-item listing ceiling with copy-paste Python
Reddit APIPagination

Reddit API Pagination: The after Cursor and Getting Past the 1000-Item Ceiling (2026)

How Reddit API pagination works: the after cursor, the 100-per-page cap, and getting past the ~1000-item ceiling. Copy-paste Python and first-party numbers, 2026.

Emma·
Reddit Data API requests close October 31, 2026 cover, an independent explainer from redditapis.com, a third-party API not affiliated with Reddit Inc
Reddit APIReddit Data API

Reddit Stops New Data API Requests on October 31: What to Do If You Have Not Applied

Reddit stops accepting new Data API requests on October 31, 2026. What closes, why the request form keeps failing, and how a new project reads Reddit after.

Emma·
Reddit data for market research after ChatGPT's citation drop, an independent explainer from redditapis.com, a third-party API not affiliated with Reddit Inc
Reddit dataMarket research

Reddit Data for Market Research After ChatGPT's Citation Drop (2026)

ChatGPT now cites Reddit about 88% less than six months ago. Here is what Reddit data is still worth pulling, and how to mine it through an API.

Emma·
Reddit RSS feeds end November 13, 2026 cover, an independent explainer on what breaks and what replaces a feed, from redditapis.com, a third-party API not affiliated with Reddit Inc
Reddit RSSReddit API

Reddit RSS Feeds End November 13, 2026: What Breaks and What Replaces Them

Reddit stops supporting RSS feeds on November 13, 2026. What breaks, what Reddit offers moderators instead, the 2027 API dates, and how to replace a feed.

Emma·
Cover for a Reddit API cost model in Python, showing per-call pricing from redditapis.com, an independent third-party API not affiliated with Reddit Inc.
Reddit APIAPI Cost

How to Estimate Your Reddit API Bill: a Per-Call Cost Model in Python

A per-call Reddit API cost model in Python: price every read, write and DM, then size the monthly bill for a keyword monitor, a RAG refresh and a reply bot.

Emma·
Subreddit AI-Rule Index 2026 cover, an independent first-party measurement showing 132 of the 250 most popular subreddits prohibit AI-generated posts or comments
Reddit APISubreddit Rules

Subreddit AI-Rule Index 2026: 52.8% of the 250 Most Popular Subreddits Prohibit AI-Generated Posts or Comments

We read the rules of the 250 most popular subreddits. 132, or 52.8%, prohibit AI-generated posts or comments. 27 of the 50 largest do. 9 require disclosure.

Emma·
Guide to reading subreddit subscriber counts from the Reddit data API after Reddit removed member counts from subreddit pages, with a 120-subreddit measurement of what the number predicts
Reddit APISubreddit Metrics

Reddit Subscriber Counts Disappeared From Subreddits: How to Read Them From the API, and What 120 Subreddits Say About Whether the Number Ever Meant Anything

Reddit replaced the member count with Visitors and Contributions in September 2025. The data API still returns subscribers. We measured 120 subreddits to test Reddit's reason for the swap, and the data agrees with Reddit.

Emma·