vibedraft
All posts
x-growthalgorithmbuild-in-public

How the X Algorithm Works in 2026 (From the Actual Code)

X's 2026 algorithm is public code: 19 predicted actions per post, a penalty for being skipped, an AI-slop score, and a new-account boost. Here's what to do.

Ricky Miskin8 min read

Everyone has a theory about how the X algorithm works in 2026. Almost nobody has read the 2026 code.

I did. Here's the short version:

  • The algorithm predicts 19 things a viewer might do with your post, replies and follows included.
  • It punishes posts people scroll past. Being skipped has its own penalty.
  • It grades every post for AI slop. That's a real field in the code.
  • New accounts get a boost while the system learns about them.
  • It never shows the same post to the same person twice. So volume doesn't dilute your reach.

Most guides still quote numbers from the 2023 code. Some of those numbers no longer exist. I read the January 2026 release and checked it against 1,504 posts from my own account. This is what actually holds up. (The full playbook is at the end.)

The algorithm is public code. Almost nobody read the new one.

X has open-sourced its ranking system twice.

The 2023 release published exact scoring weights. A reply was worth 27 likes. A reply that the author responded to was worth 150. A report cost you the value of 738 likes. Those numbers became gospel. Every growth guide you've read is built on them.

Then xAI shipped a full rewrite in January 2026, codenamed Phoenix. And two big things changed that most guides missed.

First, the weight values are gone from the public code. X now sets them privately on its servers. Anyone quoting "a reply is worth 13.5" as a 2026 fact is reading the old repo.

Second, the famous 150x signal was removed. The 2023 code had a special reward for replying to your own commenters. The 2026 code doesn't have that signal at all.

So what does the new code reward? Let's look.

What the 2026 code actually scores: 19 actions per post

The basic idea survived the rewrite. For every post it might show you, the algorithm predicts how likely you are to do certain things with it. Each prediction gets a weight. The weighted predictions are added up into one score, and the highest scores win your feed.

What changed is the list of things it predicts. There are now 19 of them:

The 19 predicted actions, in code order (phoenix/runners.py)
favorite, reply, repost, photo_expand, click,
profile_click, vqv, share, share_via_dm,
share_via_copy_link, dwell, quote, quoted_click,
follow_author, not_interested, block_author,
mute_author, report, dwell_time

Names trimmed of their _score suffix. "vqv" is a video quality view.

Read that list like a creator and three things jump out:

Private sharing counts. Sending a post to a friend in a DM is its own prediction. So is copying the link.

Profile visits and follows count. A post that makes someone check out your profile, and then follow you, scores on both.

Attention is measured directly. "Dwell" means pausing on a post long enough to actually read it. The model predicts it three different ways, and it also predicts the opposite: the chance that you scroll straight past. That skip has its own penalty weight.

Conversation still pays. Just not the way the guides say.

The 27x and 150x numbers are history. But replies, quotes, profile clicks, and follows are all still on the prediction list. And my own data says conversation is still what moves reach.

I pulled the numbers from 1,504 of my posts, from mid-April to mid-June 2026:

  • Posts with zero replies averaged 47 impressions.
  • Posts with 10 or more replies averaged 952 impressions.

That's a 20x gap. And in my top ten posts by impressions, reply count tracks the ranking almost perfectly.

This was my best post of that stretch. Notice what it does: it asks a question people had to answer.

One more detail from the code that reply strategies should know: only one post per conversation makes it into a feed. The best-scoring branch wins, and the rest are filtered out. So piling replies under someone's viral post means competing with every other reply there, not with the whole feed.

The play, then: write posts that demand a specific answer. Then show up in your own replies. Not because a magic 75x weight says so. Because replies, profile visits, and follows are what the model is trained to predict, and a real conversation produces all three.

The algorithm now punishes being skipped

Here's the plainest way to say it: the 2026 algorithm doesn't just measure what people do to your post. It measures whether they stop for it at all.

It predicts whether someone will pause on your post. How long they'll stay. Whether they'll click through and keep reading. And, separately, whether they'll scroll right past you. That last one carries a penalty.

So the hook isn't for the like. The hook is for the stop.

Put the concrete claim in the first line. Put the numbers early. And make your profile answer "who is this person?" in one glance, because a pause, a profile visit, and a follow are three separate predictions your post can win at once.

One angry reader can cost you more than ten fans are worth

Four of the 19 predictions are negative: "not interested," block, mute, and report. Each one subtracts from your score.

The 2023 values were brutal. A mute cost 148 likes' worth of score. A report cost 738. Those exact numbers are gone now, but the 2026 code added something structurally worse for rage-baiters: a post whose predicted negatives outweigh its positives gets compressed into a bottom band, below every post with a net-positive score. Enough predicted blocks, and no amount of likes can rank you above them.

Rage-bait creates engagement and mutes at the same time. The code says the mutes win.

The boring lesson is the real one: stay consistent in one niche. People mute accounts that keep showing up with things they never asked for. They almost never mute the account that's reliably about the one thing they followed it for.

AI slop is a named field in X's quality model

This is the part I'd screenshot.

Every original post runs through a quality grader powered by Grok, X's AI model. The code calls it the "banger" screen. It scores each post for quality, tags its topic, and outputs a field that is literally named slop_score.

Sit with that. X built a classifier whose job includes detecting AI slop, and wired it into ranking.

So the lazy version of AI-assisted posting is now self-defeating. Paste a topic into a chatbot, post whatever comes out, and you're feeding exactly the pattern the grader was built to catch. The only AI workflow that survives 2026 is one that writes in your voice: your specifics, your numbers, your way of ending a sentence.

Every viewer sees your post once. Volume buys more shots.

Two facts from the code, then my data.

Fact one: the feed remembers every post you've ever been shown and filters those out. One impression opportunity per viewer, per post, ever. There are no second chances with the same reader.

Fact two: the old idea of a fixed "50/50 split" between followers and strangers is gone. Posts from people you follow and posts from strangers now compete in one ranking, strangers' posts get a multiplier, and brand-new accounts get their own boost while the system learns about them.

Put those together and posting looks like a lottery where every post is a fresh ticket in feeds you don't control, and the system is explicitly built to let unknown accounts break out.

Here's what that looked like on my account over 67 days:

Posting volumeDaysAvg impressions/dayPer post
Under 8 posts/day7689151
8 to 14 posts/day121,835157
15+ posts/day484,886176

Six times the posting volume produced seven times the daily impressions. Per-post reach did not drop.

67 days of @rcmisk account data

The fear that posting more "dilutes your reach" doesn't show up in my data, and the impression filter explains why: your posts barely compete with each other, because each viewer only ever sees each one once.

One more number: my top 5% of posts captured 43% of all my impressions. Breakouts follow a power law, and you can't know in advance which post breaks out. More qualifying posts means more tickets.

This thread dug through the same repo and landed in a similar place:

The 2026 playbook

  1. Ask questions that demand specific answers. Replies, quotes, and follows are all predicted actions. "Walk me through your exact plan" beats any clever sign-off.
  2. Show up in your own replies, fast. The 75x weight is gone, but conversation still drives the predictions that matter. My zero-reply posts got 47 impressions. My 10-plus-reply posts got 952.
  3. Make posts worth DMing to a friend. Private shares are predicted separately. That's a usefulness bar, not a virality bar.
  4. Write hooks for the stop, not the like. Being scrolled past now carries its own penalty. Concrete claim first, numbers early.
  5. Never post what 1% will mute. Enough predicted negative reactions and your positives get zeroed out entirely.
  6. Sound like yourself. The quality model has a field named slop_score. Generic AI voice is a category it was built to catch.
  7. Post more than feels comfortable, in one niche. Each viewer sees each post once. New accounts get a boost. Breakouts are a power law. Volume in one lane is the compounding move.

None of this is gaming anything. The code pays for conversation, attention, and a voice worth stopping for. The difference in 2026 is that you can read the receipt. Just make sure you're reading the current one.

FAQ

Does posting more reduce your reach on X?

No. The 2026 code filters out every post a viewer has already seen, so each post gets one shot per person. Across 1,504 posts over 67 days on one account, high-volume days averaged 176 impressions per post versus 151 on low-volume days: roughly seven times the daily reach with no per-post decay.

Is the famous "reply is worth 27 likes" weight still true in 2026?

Not as a number you can cite. Those weights come from the 2023 open-source release. The 2026 rewrite still predicts replies, but the weight values are now set privately on X's servers. And the author-engaged-reply signal, the famous 75x one, was removed entirely.

Does X penalize AI-generated content?

Yes, explicitly. The 2026 code grades every original post with a quality model whose output includes a field literally named slop_score. Posts that read like generic AI writing get scored down before ranking.