Does X deboost posts with external links?
Not in the open-source algorithm. This is one of the most repeated beliefs about X, so it is worth being precise: the released code contains no link-penalty, no URL-deboost, and no "external link" downranking mechanism anywhere in the ranking pipeline. What the code does contain is a link-click signal in the scoring formula — counted as a positive engagement prediction, not a penalty. The "links kill reach" rule is folklore the current published code does not support. If link posts underperform for you, the code points to ordinary causes, not a hidden link tax.
"Don't put links in your posts, the algorithm buries them" is received wisdom on X. It may even be good practical advice in some cases. But as a claim about the algorithm, it deserves the same sourcing as everything else here — and the released code does not back it up.
There is no link-penalty in the code
We searched the released ranking pipeline — every filter, every scorer, the candidate model —
for any mechanism that penalizes, deboosts, or downranks posts for containing a URL or external
link. There isn't one. No link filter, no URL-based score reduction, no "external" handling in the
scoring path.
The released ranking pipeline contains no link-penalty, URL-deboost, or external-link downranking mechanism. The only link-related signal is click_score in the weighted scorer, which is a positive term. Claim is scoped to the open release at the pinned commit.
53 + Self::apply(s.click_score, p::CLICK_WEIGHT)
A predicted click is a positive term in the weighted sum. A post whose link people
actually click is predicted to earn click score, which adds to its rank. The code's stance on links
is that engagement with them is good, not that their presence is bad.
The current WeightedScorer combines predicted probabilities for: favorite, reply, retweet, photo expand, click, profile click, video quality view, share, share via DM, share via copied link, dwell, quote, quoted click, continuous dwell time, follow author, not interested, block author, mute author, and report.
Why the belief persists anyway
Three ordinary, code-supported reasons a link post can underperform — none of them a link tax:
| real cause | where it lives in the code |
|---|---|
| The post earns less dwell and fewer replies | Link posts that send people off-platform can score lower on the dwell and reply signals — that's the engagement, not the URL. |
| It reads as promotional to the spam screen | A link wrapped in promo language is judged by the spam classifier on its content — again, not the link itself. |
| Out-of-network climb | If it's reaching beyond your followers, the OON handicap applies regardless of links. |
What the code doesn't say
Whether a link penalty exists outside the released code. Our claim is bounded: no such
mechanism is in the open-source ranking pipeline at the pinned commit. X could apply link handling
in a layer that isn't published, and the absent params module could weight click
score in ways we can't see. We can say the folklore isn't in the code; we can't prove a negative
about everything X runs. That honest boundary is exactly the point.
The released ranking pipeline contains no link-penalty, URL-deboost, or external-link downranking mechanism. The only link-related signal is click_score in the weighted scorer, which is a positive term. Claim is scoped to the open release at the pinned commit.
What to do with this
Stop optimizing against a rule that isn't in the code. If a link post underperforms, look at the real signals — did it earn dwell, replies, clicks? — rather than blaming the URL. The scoring formula tells you what actually counts, and xDoctor measures those signals from your archive instead of chasing folklore.