"The algorithm nukes posts with external links"
Verdict: NO RULE IN THE CODE — but independent studies measure a real penalty anyway
There is no link-detection or link-penalty term anywhere in the open 2026 scoring path — in plain words: nobody wrote a rule that docks links. What's real: links change which heads you earn (click vs dwell), and low predicted click-dwell on clickbait leaks value. Two ways a demotion could still exist unseen: the transformer could LEARN link-correlated demotion from engagement data with no written rule anywhere (learned behavior is invisible in code by design), and trust-and-safety visibility rules live in a withheld crate where a link policy could sit. And the behavioral evidence is now strong: Galeazzi et al. (NDSS 2026, 40M+ tweets) find link posts get 4.67-7.45x lower median visibility, with a gradient by link type (news links worst); Efstratiou et al. (ICWSM 2026, ~205k exposures in paired counterfactual feeds) find external links the strongest negative predictor (p<0.001) while follower count is NOT significant (p=0.14) - so it isn't an account-size artifact - and find VIDEO EXEMPT. Buffer's 18.8M-post sample shows non-Premium link posts falling to 0% median engagement after March 2025. X's leadership denies all of it (Nikita Bier: 'links were never deboosted'; Musk, Jul 29 2026: 'we haven't for over a year'). Honest answer: no written rule in the open ranker, but a large measured effect in the wild - which is precisely the learned-or-withheld case, and the strongest reason to distrust anyone who answers this question with a flat yes or no.
The code
home-mixer/scorers/ranking_scorer.rs (no link term); vf_filter.rs → withheld xai_visibility_filtering crate.
See for yourself: every term in the scoring formula
This is the complete list of scoring terms in
home-mixer/scorers/ranking_scorer.rs
(compute_weighted_score, commit 0bfc279). Read it —
what isn’t in this list isn’t in the ranking formula:
favorite × +weight (withheld) reply × +weight (withheld) retweet × +weight (withheld) photo_expand × +weight (withheld) click × +weight (withheld) profile_click × +weight (withheld) vqv × +weight (withheld) share × +weight (withheld) share_via_dm × +weight (withheld) share_via_copy_link × +weight (withheld) dwell × +weight (withheld) quote × +weight (withheld) quoted_click × +weight (withheld) quoted_vqv × +weight (withheld) cont_dwell_time × +weight (withheld) cont_click_dwell_time × +weight (withheld) follow_author × +weight (withheld) not_interested × −weight (withheld) block_author × −weight (withheld) mute_author × −weight (withheld) report × −weight (withheld) not_dwelled × −weight (withheld)
So what should you do with links?
- If the link is the point, post the link. CODE No written penalty exists in the open ranker; a link post shifts your earning surface toward the click and click-dwell-time heads instead of forfeiting score.
- Make the destination worth the open. CODE Time spent
after the click is its own weighted term (
cont_click_dwell_time) — an open-then-bounce on a thin landing page leaks the value the click earned. - “Link in the first reply” has no support in the code — either way. HEURISTIC The workaround folklore predates this codebase; nothing in the open 2026 pipeline rewards or punishes it. Treat it as unproven ritual, not strategy.
- Don’t confuse the API surcharge with ranking. CODE The April 2026 “$0.20 per link post” charge is X API developer pricing — it hits scheduling tools’ costs, not your post’s score. It is probably why this myth re-ignited.
- Trust your own numbers over anyone’s blanket claim. HEURISTIC A learned demotion would be invisible in code — so compare engaged reach on your own link vs non-link posts over a few weeks. If a gap exists for your account, that measurement beats every article ever written on this, including this one.