🏛 Part of the "ai" topic shelf →
The Price of Your Actions
This article decodes, from open-source code, how X's recommendation algorithm prices different forms of user interaction, comparing positive and negative behavior scores and ranking mechanisms. It provides social-media operators and general readers with concrete, data-based content and engagement guidance.
Most people think recommendation algorithms are looking for "what you will like." After reading the code, I think a more accurate description is: they calculate whether you will regret it.
What X's For You ranking does is actually very simple. The model first predicts "the probability that this person will take each kind of action on this post"—the probability of liking it, replying, reporting it, and so on—then multiplies each probability by a fixed score and adds them all together. Higher scores rank first. That is all.
The key is those "fixed scores." The model did not learn them; they are hard-coded by people in a configuration file. In other words, that table is X's price list for every kind of user behavior.
Price list
Using a like as the baseline unit (1 like = 0.5 points), the other actions are priced as follows:
| Action you take | Score | Equivalent likes |
|---|---|---|
| Copy a link and share it elsewhere | 20.0 | 40 × |
| Reply (and you and the author follow each other) | 20.0 | 40 × |
| Reply (normal case) | 5.0 | 10 × |
| Send it to a friend by direct message | 5.0 | 10 × |
| Quote repost | 5.0 | 10 × |
| Follow the author after viewing it | 4.0 | 8 × |
| Standard share | 2.0 | 4 × |
| Repost | 1.0 | 2 × |
| Like | 0.5 | 1 × |
| Open the post | 0.4 | 0.8 × |
| Click an external link | 0.2 | 0.4 × |
| Expand an image / play a video / qualified video view | 0.05 | 0.1 × |
| Dwell time (per second) | 0.004 | 0.008 × |
| Open the author's profile | 0.0 | Not scored |
| Negative action | Score | Equivalent likes |
|---|---|---|
| Report | −234.0 | 468 × |
| Mute the author | −58.8 | 118 × |
| Select "Not interested" | −43.2 | 86 × |
| Block the author | −31.2 | 62 × |
| Scroll past without dwelling at all | −0.02 | 0.04 × |
| Item | Value | Explanation |
|---|---|---|
| Total positive signals | +43.3 | Likes, replies, shares, follows…all added together |
| Total negative signals | −367.2 | Reports, mutes, not interested, blocks |
Negative signals are priced at 8.5 times positive signals. The "report" item alone (−234) exceeds the total of all positive actions combined (+43.3) by a factor of 5.4.
The most counterintuitive item is this: the penalty for muting (−58.8) is nearly twice that for blocking (−31.2). A reasonable interpretation is that blocking means "I have a personal conflict with this person," while muting means "I do not want to see what this person says." The latter is an assessment of the content itself, so the system weighs it more heavily.
How to read this 8.5 times figure without getting it wrong. The comparison above is of pricing, not the actual score of each post. What enters the formula is "pricing × the model's predicted probability," and the predicted probabilities of reports and blocks are usually extremely small (on the order of one in ten thousand), while the probability of a like is much higher. Those probabilities are produced by the model and are not in the open-source code, so I cannot calculate them. The correct statement is therefore: X prices negative signals an order of magnitude higher than positive signals. That means that "if the model believes there is a one-in-a-thousand chance that you will report," that term alone can outweigh the positive points from several likes.

There is something even harsher
If a computed score is negative, it is compressed into the extremely narrow range of 0 ~ 0.001. That means: ranking differences among all negatively scored posts nearly vanish; they all sink to the bottom and crowd together. This is not "ranked a little lower"; it is "dropped out of the visible range."

Gates a post must pass
From the moment you open For You to the moment you see a post, there are eight gates in between. Two things are worth remembering:
1. Ranking and "whether it can be seen" are two completely separate systems
Ranking determines order; visibility filtering determines whether it can appear. A post can therefore have a very high score yet never appear at all because it has been labeled. These are unrelated.

2. The standards differ greatly between showing it to followers and recommending it to strangers
| Item | Value | Explanation |
|---|---|---|
| To your followers | 28 | visibility rules |
| Recommended to strangers | 54 | 28 rules + an additional 26, all can only remove, never admit |
Several of those additional 26 are "high-recall" detectors—plainly put, they would rather make false positives. The same post may pass when sent to followers, but to be recommended to strangers it must pass 26 additional gates that would rather make false positives.
Many people feel that "only my followers can see my posts." That is not an illusion; it is by design.

3. You only have 48 hours
Posts older than 48 hours are cut off directly, with no chance even to enter ranking. This is a hard-coded constant, not gradual decay—after 48 hours, it is 0.
4. For the same author, the second post already gets discounted
Within the same result set, the same author's 2nd post has its score multiplied by 0.625, the 3rd by 0.4375, with continued decay down to a floor of 0.25. Flooding the timeline does not work—the posts are not banned; the scores of the later ones collapse on their own.
So what should you do?
Every point below maps directly to a number on the price list. I will not give you vague advice like "get more engagement"—what follows is which action is worth how many points and what that means.
Make "worth sending to someone else" the only goal
The two highest-priced items on the list both take content away from this post: copy-link sharing (20.0) and direct-message sharing (5.0). A like is only 0.5. In other words—one "send to a friend" is worth forty likes.
How to use this: ask yourself, "Would anyone screenshot this post or forward it to a group?" If the answer is no, it is nearly worthless in the algorithm's eyes, no matter how many likes it gets.

Replies are worth 5 times more than reposts, and 4 times more again with mutual following
A reply is 5.0; a repost is only 1.0. And if you and the author follow each other, the price of a reply jumps directly from 5.0 to 20.0.
How to use this: instead of asking for reposts, write something that makes people want to reply. Building a network of mutual follows is also far more valuable than one-way follower counts—this is the only mechanism in the code that gives a special bonus for mutual following.
Videos and images themselves earn almost no extra points
Expanding an image, playing a video, and a qualified video view are each only 0.05—one tenth of a like. Dwell time is 0.004 per second. Watching a full one-minute video still adds up to less than half a like.
How to use this: media is a means to make people willing to finish reading and share, not a scoring item in itself. Put resources into "making people want to share," not "making people watch a few more seconds."
Negative signals are your only real risk
You need to accumulate 468 likes to offset one report. It takes 118 likes to offset one mute. And negatively scored posts are compressed together at the bottom.
How to use this: do not trade inflammatory bait or sensational headlines for engagement. Such content may indeed get likes and replies, but it also raises the predicted probabilities of "Not interested" and "Mute"—and pricing on that side is two orders of magnitude higher. In the algorithm's accounting, that trade is almost impossible to make worthwhile.
Posting cadence: spread posts through the day; do not post in a burst
Same-author decay applies within the same result set, with the 2nd post already reduced to 0.625. Add the hard 48-hour limit and the fact that "things already seen are filtered out."
How to use this: spread posts across different times so they land in different result batches, rather than firing off five posts at once and diluting one another.
If your goal is to reach strangers, the content must pass the "rather make false positives" gates
Recommendations to non-followers must pass 26 additional rules that can only remove, never admit, including high-recall adult-content and spam detection, malicious URLs, "do not amplify" labels, and more.
How to use this: borderline content may circulate among followers, but it is almost impossible for it to be recommended outward. To break out of your circle, it must be clean—this is not moral persuasion; it is the actual configuration of those 26 gates.
If you are a reader, not a creator
"Not interested" is the strongest tool you have
It is worth −43.2, an inverse force 86 times that of a like. Scrolling past without looking is only −0.02—almost equivalent to expressing no preference.
How to use this: to adjust your feed, selecting "Not interested" once works better than silently scrolling past two thousand times. To make a type of content disappear, muting (−58.8) has more force than blocking (−31.2).

Every profile you open is currently unscored
The default value of ProfileClickWeight is 0.0. The model predicts this behavior, but it is currently priced at zero.
Why this matters: it is a switch that can be turned on at any time. If X changes this number from 0 to 5, the behavioral orientation of the entire feed changes immediately, without redeploying code.

The switches that are built but turned off
This code reveals not only "how it runs now," but also "how it can run at any time." I found several mechanisms that are already complete but disabled by default:
| Mechanism | Default | What happens when enabled |
|---|---|---|
| New users see only their in-group | Off | For qualifying new accounts, the score of unfollowed content is ×0.00001, making content from strangers effectively invisible |
| Inventory withholding | Off | Can consistently withhold a specified percentage of originals / replies / reposts based on the hashes of the post and viewer |
| Profile-click scoring | 0.0 | Change one number, and the behavioral orientation of the whole feed changes |
| Mutual-follow dwell bonus | 0.0 | The equivalent reply bonus is enabled (+15.0); the dwell-time version has the same mechanism built in but is set to 0 |
The real power is not in the numbers themselves. It is that those numbers are adjustable online—change one value without changing a single line of code.

There is another line: wired up, but with no water source
The code contains a signal called BRIDGE_PROBABILITY. In recommender-systems literature, bridging means content that can cross opposing groups and earn shared recognition—this is the kind of algorithm used by Community Notes.
In X's model structure, it has a name, a place, and two complete connections. But: zero switches are enabled, zero training losses exist, and there are zero weight parameters for it in the ranking formula; even the data-production side of the real-time service never writes to it.
The other disabled switches at least have trained models behind them, so changing a number tomorrow could make them work. This line is even earlier-stage: the pipe is connected, the valve is closed, and nothing upstream is connected to a water source.
Within the scope of the published code, X's For You ranking does not score any item for "consensus across opposing groups."
Finally: what this article cannot tell you
First, this is a public snapshot, not live production. The comment at the top of the configuration file states that it is "mirrored from config feature-switch defaults," and these values are adjustable online at any time. The code can prove "what the public version's defaults are," but it cannot prove "what X is using online at this moment." Second, pricing is not actual score. The formula is "pricing × the model's predicted probability," and the probabilities are not in the open-source code. Every claim that "A is worth N times more than B" holds only at the pricing layer. Third, this is only one For You path. I found 6 filters in the code that belong to other timeline pipelines, and those pipelines are not public. X also acknowledges that it did not release Grox's AI content-safety prompts—that is, the part that asks "what exactly does the AI ask when judging content?" is opaque.
Takeaway in one sentence
Make things people want to send to someone else; do not make things people want to mark "Not interested." The former is worth forty likes at a time; the latter cancels out eighty-six likes at a time.
Sources and verification
This article is based on the source code for X's recommendation algorithm published by xai-org on GitHub, reviewed on August 14, 2026.
| Item | Content |
|---|---|
| Source repository | xai-org/x-algorithm |
| Reviewed version HEAD | a389166f6cf5da70a286b568c87695d4dcdce3a1 |
| Snapshot date | 2026-08-13 |
| Machine-proposition verification | 58 items, all passed |
| Source files cited in this article | x-algorithm README(官方說明); 權重參數定義 param.rs; 評分器 ranking_scorer.rs |
All weight values in this article come from the built-in defaults in the source code and were reproduced and verified item by item by machine propositions.
Scope of validity: The source-code parameters are labeled as a mirror of feature-switch default values and can be adjusted online at any time. This article can prove the defaults in the public version, but not the values actually in use by the platform online at this moment. The final score is "weight multiplied by the model's predicted probability," and the probability is not in the public source code; therefore, all multiple comparisons hold only at the pricing layer.
FAQ
- Why is copying and sharing a link priced highest in the algorithm?
- In X's pricing table, the link-copy share weight reaches 20.0, equivalent to 40 likes. The system treats taking content beyond the post and passing it to others as the highest-value distribution behavior, far above simply dwelling on or liking it.
- なぜリンクコピー共有はアルゴリズム内で最も高く値付けされる? — Xの価格表では、リンクコピー共有の重みは20.0と高く、40回のいいねに相当する。システムは「コンテンツを投稿の外に持ち出して他者へ共有する」行為を最高価値の拡散行動と見なし、単なる滞在やいいねを大きく上回る。
- Why is copying and sharing a link priced highest in the algorithm? — In X's pricing table, the link-copy share weight reaches 20.0, equivalent to 40 likes. The system treats taking content beyond the post and passing it to others as the highest-value distribution behavior, far above simply dwelling on or liking it.
- What special advantage do mutually followed accounts have in reply interactions?
- An ordinary reply has a weight of 5.0, but when both parties follow each other, the reply gains an additional 15.0, reaching 20.0. This is the algorithm's only mechanism that gives a large bonus for a reciprocal relationship; a reply is worth the same as a link-copy share.
- 相互フォローのアカウントは返信でどんな特別な優位性を持つ? — 通常の返信の重みは5.0だが、双方が相互フォローしている場合、返信の重みはさらに15.0増えて20.0になる。これはアルゴリズム内で、人間関係の双方向性に大幅加点を与える唯一の機構であり、返信の価値はリンクコピー共有に等しい。
- What special advantage do mutually followed accounts have in reply interactions? — An ordinary reply has a weight of 5.0, but when both parties follow each other, the reply gains an additional 15.0, reaching 20.0. This is the algorithm's only mechanism that gives a large bonus for a reciprocal relationship; a reply is worth the same as a link-copy share.
- How do muting and blocking differ in their penalties to a creator's score?
- The negative weight for muting an author is −58.8, while blocking an author is −31.2, making the mute penalty nearly twice as heavy. The reason is that blocks are often personal disputes, whereas mutes usually signal a reader's rejection of the content quality itself.
- ミュートとブロックでは、クリエイターのスコアへのペナルティにどのような差がある? — 作者をミュートした際の負の重みは −58.8、作者をブロックした際は −31.2 であり、ミュートのペナルティはブロックのほぼ2倍に重い。これは、ブロックは個人的な対立によることが多いのに対し、ミュートは通常、読者がコンテンツ品質そのものを否定していることを表すためだ。
- How do muting and blocking differ in their penalties to a creator's score? — The negative weight for muting an author is −58.8, while blocking an author is −31.2, making the mute penalty nearly twice as heavy. The reason is that blocks are often personal disputes, whereas mutes usually signal a reader's rejection of the content quality itself.
- Why do multiple consecutive posts by the same author lose recommendation advantage?
- The algorithm applies same-author decay: in one result batch, that author's 2nd post is multiplied by 0.625, the 3rd by 0.4375, and the lowest falls to 0.25. Together with the 48-hour hard age limit, concentrated posting causes later content to dilute its own score.
- 同一作者が連続して投稿すると、なぜ推薦上の優位性を失うのか? — アルゴリズムには同一作者減衰機構があり、同一バッチの結果では、その作者の2件目の投稿のスコアは0.625倍、3件目は0.4375倍となり、最低0.25まで下がる。さらに48時間の年齢ハード上限があるため、短時間に集中投稿すると後続コンテンツのスコアが自己希釈される。
- Why do multiple consecutive posts by the same author lose recommendation advantage? — The algorithm applies same-author decay: in one result batch, that author's 2nd post is multiplied by 0.625, the 3rd by 0.4375, and the lowest falls to 0.25. Together with the 48-hour hard age limit, concentrated posting causes later content to dilute its own score.
- Does clicking an author's profile page (Profile Click) currently increase recommendation scores?
- According to the public source code, ProfileClickWeight has a default value of 0.0 and is currently excluded entirely from scoring. Although the model continues to predict this behavior, the online weight switch is currently set to zero.
- 作者のプロフィールページへのクリック(Profile Click)は現在、推薦スコアを増やすか? — 公開ソースコードによれば、ProfileClickWeight の既定値は 0.0 で、現在はスコアリングにまったく計上されない。モデルはこの行動を継続して予測しているが、オンライン重みのスイッチは現在ゼロに設定されている。
- Does clicking an author's profile page (Profile Click) currently increase recommendation scores? — According to the public source code, ProfileClickWeight has a default value of 0.0 and is currently excluded entirely from scoring. Although the model continues to predict this behavior, the online weight switch is currently set to zero.
Source anchors
- xai-org/x-algorithm 原始碼儲存庫 · https://github.com/xai-org/x-algorithm · 在 IDAEO 的其他引用
- x-algorithm README(官方說明) · https://github.com/xai-org/x-algorithm/blob/a389166f6cf5da70a286b568c87695d4dcdce3a1/README.md · 在 IDAEO 的其他引用
- 權重參數定義 param.rs · https://github.com/xai-org/x-algorithm/blob/a389166f6cf5da70a286b568c87695d4dcdce3a1/home-mixer/params/param.rs · 在 IDAEO 的其他引用
- 評分器 ranking_scorer.rs · https://github.com/xai-org/x-algorithm/blob/a389166f6cf5da70a286b568c87695d4dcdce3a1/home-mixer/scorers/ranking_scorer.rs · 在 IDAEO 的其他引用
Cite this article
TK Lin・《The Price of Your Actions》・IDAEO 知識庫・2026-08-14・https://km.idaeo.ai/post/ai/x-algorithm-pricing