Industry News|XTwitteralgorithmpublishersposting cadence

The X/Twitter Algorithm: What Publishers Should Optimize

Published on
by Nonli Team
The X/Twitter Algorithm: What Publishers Should Optimize

1. Why read the algorithm instead of repeating recipes#

Advice on X, still widely called Twitter, travels fast: post more, post less, avoid links, go vertical video, buy Premium, recycle your best hooks. Most of it mixes observation, intuition, and correlation. For a newsroom, that's not enough. Editorial teams need to understand what the X/Twitter algorithm is actually trying to do, because that logic is what should drive cadence, formats, hook writing, and the way you organize your accounts.

The public code of the algorithm, released by xAI in May 2026 under the name xai-org/x-algorithm, makes one thing clear. X/Twitter doesn't behave like a glorified chronological timeline. The system builds a pool of candidate posts, attaches signals to each one, drops the ones it shouldn't show, predicts the probability the user will interact, then picks the best items while accounting for diversity and context.

Put another way: a post doesn't win because it's recent or because the account is large. It wins because it looks like the best next item for a given user, at that specific moment.

For publishers, that distinction changes everything.

2. Key takeaways for your X/Twitter strategy#

If you only keep a handful of ideas from this piece:

  • the algorithm doesn't directly penalize high-volume accounts, but it mechanically reduces how often the same author repeats in the feed, with the cannibalization curve flattening out from the seventh post of a given batch ;
  • a publisher's posts compete with each other when they target the same audience inside a short window ;
  • external links aren't automatically demoted, but a weak promise or a poor post-click experience can drag the signals down ;
  • hashtags and mentions don't boost ranking in the published code: their only real effects are search indexing and the notification sent to a mentioned account ;
  • a thread counts as a single candidate for ranking, which makes it the least penalized format to push several ideas in a row ;
  • to reach non-followers, your score has to clear an out-of-network penalty (multiplier between 0.5 and 0.8) before final selection ;
  • Premium and verification can shift access to some features, but the visible ranking logic still hinges on relevance, engagement, and negative signals ;
  • since May 2026, the cap of 50 original posts per day for unverified accounts changes the operational picture for very active publishers.

3. The core principle: every post is put into competition#

The algorithm isn't only asking "Is this account important?" It's asking "Of everything available right now, which item is most likely to produce a useful interaction for this user?"

That logic has three direct consequences for a newsroom.

First, every post has to carry its own weight. Brand helps, but it doesn't replace post-level performance. A respected publisher can lose reach on a weak post if the hook fails to trigger clicks, reads, replies, or shares.

Second, a publisher's posts can compete with each other. If you fire many posts in a tight window, they don't all gain more visibility. They land in the same candidate pool, and only the strongest survive.

Third, negative signals count as much as positive ones. A post that drives clicks but also triggers a lot of "not interested", hides, blocks, or quick exits can lose algorithmic quality.

4. How the system builds a feed#

You can simplify the flow into six steps.

4.1. Sources pull candidate posts#

The system starts by looking for items that could be relevant. Those candidates come from several pools:

SourceWhat it means for a publisher
Accounts the user followsYour subscribed audience stays a strong distribution base.
Non-followed accounts close to user interestsGood content can reach beyond followers if it matches a detected interest.
Topics, similarity signals, recommendation modelsEditorial specialization helps the algorithm understand who to show your content to.
Recent or already-performing contentFreshness matters, but freshness alone isn't enough.

A concrete example: a business outlet posts an analysis of rising interest rates. That post can land as a candidate for the outlet's followers, but also for users who often read about real estate, banking, or monetary policy, even if they don't follow the outlet yet.

4.2. Hydrators enrich each candidate with context#

A raw post isn't enough. The system attaches information to it: author, relationship with the user, language, media type, safety signals, impression history, possible topics, conversation data.

For a newsroom, this step is a reminder of something simple: a post is never evaluated alone. It's evaluated in a context.

The same content can perform differently depending on the user:

  • a loyal follower may see the post because they already follow the outlet ;
  • a non-follower may see it because the topic matches their interests ;
  • a user who already saw similar content may not see it again ;
  • a user who muted the author, a keyword, or a related topic may be excluded.

4.3. Filters drop weak candidates#

Before final ranking, a chunk of candidates is removed. The filters visible in the repo cover:

  • duplicates ;
  • already-seen posts ;
  • posts already served in a previous session ;
  • content that's too old ;
  • blocked or muted authors ;
  • muted keywords ;
  • visibility or safety flags ;
  • redundant conversations.

This matters for publishers who recycle a lot. If you post several near-identical variants of the same link or angle, the system can treat them as redundant at different levels: strict duplication, already-seen conversation, author over-represented, or simply weaker relative performance.

Example: a newsroom publishes three posts about the same article in twenty minutes:

  1. "Mortgage rates climb again"
  2. "Home loan rates are rising once more"
  3. "Why your mortgage may cost more starting next month"

The third angle probably outperforms the first two, because it reframes the issue from the reader's side. The first two are most likely to cannibalize each other.

4.4. The model predicts engagement#

Next, the system assigns scores. The idea isn't just to count past likes, but to predict several possible actions:

Predicted signalEditorial read
Like / repost / replyThe post triggers a visible reaction.
ClickThe post makes someone want to open a link, a profile, or a detail view.
DwellThe user stays on the content instead of swiping past.
DM share or copy-link shareThe content has transmission value.
Follow authorThe post can convert a reader into a follower.
Not interested / block / mute / reportThe content creates rejection or fatigue.

For a publisher, this means the goal isn't only to win a click. A strong post creates a clear promise, drives a real read, and avoids post-click disappointment.

Example: a hook like "You won't believe what the government is planning" can pull clicks, but it also risks producing rejection if the article doesn't honor the promise. By contrast, "Tax 2026: the three measures that may change your filing" sets a precise expectation. It pulls less by mystery, but probably better by usefulness.

4.5. The score is adjusted for author diversity#

This is one of the most important points for publishers. The code shows a per-author diversity logic: when several posts from the same author rank in the same batch, the next ones get a decreasing multiplier. The formula is an exponential decay that converges toward a floor. Concretely, the published code gives a shape like this:

Position of same-author post in the batchMultiplier applied to the score
1st1.0
2ndaround 0.6
3rdaround 0.4
4tharound 0.3
5tharound 0.25
7th and beyondaround 0.2 (floor)

So the 50th or 100th post from the same account in a single batch isn't penalized more than the 7th. Cannibalization saturates. That changes how you should read absolute volume: the worry of "posting too much in a day" is the wrong question. The real question is how many of your posts compete inside a single reader's session.

This isn't a moral punishment against high-volume accounts. It's a feed-quality mechanism that prevents a single author from taking up too much space when other relevant content is available.

For a publisher, the consequence is concrete: posting 150 tweets a day doesn't necessarily penalize the account, but it increases the chance that your own posts fight each other.

Take a simple case. A publisher posts 10 items between 8 and 9 a.m. For a given reader, only 2 or 3 actually match their interests. The others don't disappear because the account "posts too much". They disappear because they have a weaker relative score, because they're redundant, or because author diversity prefers a less monotonous feed.

The right question isn't "How many posts can we publish per day?" It's "How many distinct, useful posts can we publish without cannibalizing each other in front of the same audience?"

4.6. The system picks the top candidates#

After scoring, the system keeps a limited number of candidates. That's the Top K principle: even if 200 posts are technically eligible, only the most competitive ones make it into the feed.

For publishers, this constraint should shape your social production. Every extra post should have a reason to exist:

  • a different angle ;
  • a different audience ;
  • a different format ;
  • a different moment ;
  • a clear added value.

Otherwise, it just adds noise to your own inventory.

5. Beyond your audience: what changes for non-followers#

The code clearly separates two worlds for each candidate: in-network, where the author is followed by the reader, and out-of-network, where the author isn't followed. An out-of-network post sees its score multiplied by a factor between roughly 0.5 and 0.8 before final selection. Concretely, for a post to escape the circle of your followers and reach a new reader, it has to show a raw score noticeably higher than an equivalent post seen by a follower.

For a newsroom that wants to grow its audience, two levers exist in the code.

The first is the follow_author action itself: it's a weighted positive action. A post that converts a non-follower into a follower triggers that signal, which feeds the model on future iterations for that same reader. A strong gateway post can produce a snowball effect on later recommendations.

The second is the follower-similarity score (mutual_follow_jaccard), which measures the overlap between your followers and the reader's followers. The more your audience overlaps with editorially adjacent accounts, the more the out-of-network penalty softens. That's an argument to collaborate, quote, and repost other accounts in the same editorial territory: audience overlap feeds this signal.

The practical takeaway: a well-written post that already lands with your core followers doesn't automatically land with non-followers at the same strength. To clear the out-of-network penalty, you need a more universal angle, a sharper promise, or a strong news moment.

The code doesn't show a simple rule like "an external link is automatically penalized". What it shows is signals tied to clicks, dwell, and interactions. That means a link can perform very well if it answers a strong expectation.

But it can be penalized indirectly when the experience is bad.

Example: a post promises a very concrete piece of information, the user clicks, but lands on a slow page, an aggressive interstitial, or an article that doesn't really deliver. The system can read weak signals from that: fast return, no dwell, low share rate, rejection. The link isn't the problem. The quality of the experience after the promise is.

For a publisher, the right move isn't to drop links. It's to package them better:

  • say plainly what the reader will learn ;
  • avoid vague hooks ;
  • favor useful angles ;
  • match image and text to the topic ;
  • reduce post-click disappointment.

A link to a premium article, an investigation, or a live can perform well if the post gives a strong reason to open. A link dropped mechanically with the article's SEO title has much less chance of competing.

7. Do Premium accounts get favored?#

In the ranking logic visible here, the deciding factor isn't "this account is Premium, so its post climbs". The score depends mostly on predicted signals around engagement, dwell, positive and negative interactions, author relationship, freshness, filters, and diversity.

You have to separate three things:

  • product or visibility perks tied to Premium on certain surfaces ;
  • publishing limits applied to unverified accounts ;
  • the ranking of a single post inside a recommendation feed.

For a publisher, the operational read is simple. Premium or verification can be useful for access, distribution, identity, or features, but they don't replace the editorial quality of a post. A weak post doesn't become strong because the account is verified. A well-targeted, clear, useful, engaging post stays the real lever.

8. Frequently asked questions: what helps and what doesn't#

A few persistent beliefs circulate in newsrooms about what would boost a post. Here's what the published code actually says, topic by topic.

8.1. Do hashtags boost reach?#

No, not in the code we read. No module extracts hashtags from a post as entities, no hashtag-to-topic matching is applied, and the ranking model doesn't receive the raw post text but pre-computed representations. Adding #crypto to a post doesn't attach it to the reader's Crypto topic, which is defined separately by a backend structure.

The only real effect of hashtags is their indexing in X's internal search, outside the For You feed. And their only risk: if a hashtag is muted by a reader, your post is dropped for that reader, not just downranked. Recommendation: one hashtag per post at most, when it's actually relevant to an event, a live, or a community. Beyond that, you're diluting without gaining.

8.2. Do mentions (@) increase reach?#

Also no, not directly. The code doesn't contain logic like "if the mentioned person is followed by the reader, boost the post". The hydrator called following_replied_users looks at who replied to the post, not who's mentioned in the body of the post.

The only real mechanism a mention provides is the notification it sends to the mentioned account. If that account reacts (reply, repost, quote), it's those interactions that boost the post. So a mention serves to trigger a reaction, not to "tag for reach". Stay under two or three mentions per post, and only when you genuinely want a reaction from the mentioned account.

8.3. Should you favor short posts or long ones?#

The code doesn't contain a minimum-length filter or a bonus for long posts. A 50-character post and a 5,000-character post go through the same ranking path. Phoenix receives the text as-is, with no length-specific feature, and the scorer applies no format multiplier.

A nuance exists on the embedding side, the one used for out-of-network retrieval (the phase that serves your posts to non-followers). The code shows a truncation at 4,096 characters for most multimodal embedding models, up to 8,192 for the largest one. Concretely, a Premium post of 25,000 characters has its text cut off before being encoded for that retrieval. You keep your full score for followers (the in-network source doesn't go through these embeddings), but you lose information when it comes to reaching out-of-network audiences.

A working scale for a newsroom:

  • under 280 characters: no penalty, no bonus. Aim for a clear, compact promise ;
  • between 280 and 1,000 characters: useful to develop an angle, give context, explain. That's the sweet spot for most content ;
  • between 1,000 and 4,000 characters: fine if the content is dense and useful, with no truncation risk ;
  • beyond 4,000 characters: risk of losing information on the out-of-network retrieval side. Reserve for content aimed mostly at your followers, or for long-form pieces whose value really lives inside the context of your feed.

Don't chase a magic length. Promise, clarity, and angle matter far more than character count.

8.4. Should you fill in image ALT text?#

For ranking, no. The code doesn't read ALT text. No hydrator extracts it, and the multimodal embedding module that could use it has its option turned off by default. The rumor "ALT filled equals more reach" is a misread correlation: accounts that take the time to write ALT text are also the ones who take care of their visuals and hooks, and that's what performs, not the alternative text.

For real accessibility, yes, and that's the only good reason to do it: users on screen readers. A serious newsroom keeps writing ALT text for that reason, not for an imaginary algorithm boost.

8.5. What's the minimum video length?#

The code applies the video-view signal (P(vqv), video quality view) only if the video exceeds a hardcoded minimum length, in the range of 2 to 5 seconds. A 3-second clip already clears that bar. But that signal alone doesn't carry a post, because the other video component in the scorer is a linear weight on watch time (CONT_DWELL_TIME_WEIGHT × dwell_time_seconds) that doesn't accumulate much below a few seconds.

Recommendation for a newsroom: 15 seconds minimum for a native video, with a strong visual hook in the first second. That's the threshold where dwell becomes measurable and usable by the scorer, and it's also the historical "video view" benchmark on most platforms. Below that, the system can't really tell your video apart from a muted GIF. Above 15 seconds is bonus territory if the content holds attention, balanced against the mobile completion-rate drop that picks up speed past 30 seconds.

8.6. Quote tweet or plain retweet?#

Mechanically, the quote tweet wins. It generates two distinct actions in the scorer: P(quote) when someone quotes it themselves, and P(quoted_click) when someone clicks the quoted post to read it. A plain retweet only generates P(retweet).

For newsrooms that pick up an in-house article, a competitor's investigation, or an official statement, prefer the quote with a clean intro angle. It's a bit more editorial work, and it's mechanically more scoring surface.

8.7. Is AI-generated content detected?#

Partially, yes. The system includes a vision-text classifier (BangerInitialScreenClassifier) that computes three scores for each post: a quality score, a "slop" score, and a minor-presence score. "Slop" is the term used internally for content that has a generic LLM look: flat phrasing, expected listicle structures, neutral vocabulary, no voice.

For newsrooms that industrialize part of their social production via AI assistants without rewriting, this classifier is a real risk. The fix: always send a generated post through a human rewriting or styling pass before it ships. A recognizable editorial voice performs better than a correctly formatted but generic post.

8.8. Are replies from secondary accounts (journalists, team members) treated differently?#

Yes. A dedicated classifier, SpamEapiLowFollowerClassifier, looks specifically at replies posted by accounts with low follower counts. The tiers it uses are under 100, under 500, under 1,000, and above 1,000 followers. Replies from an account below those thresholds, posted as fast reactions to high-engagement posts, can be flagged as spam.

For a newsroom that wants to activate its journalists through their individual accounts, plan a warm-up: moderate volume for the first weeks, a mix of publishing, liking, and following, before using those accounts for opportunistic replies under viral posts. A brand-new account that drops thirty replies under big accounts in its first week triggers that classifier directly.

9. What posting cadence for a publisher on X/Twitter?#

The algorithm doesn't give you a magic cadence. It gives you a constraint: every post has to carry enough value to survive selection, and posts from the same author shouldn't step on each other.

You can draw a working rule from this:

Posting more is useful as long as each post adds a distinct angle, reaches a clear audience, or matches a strong moment. Posting more becomes counterproductive when posts look alike, overlap, or fragment engagement.

9.1. The 50-posts-per-day cap changes the picture#

You have to separate two things: the product limit and the algorithmic logic.

The official X limits page states that unverified accounts are capped at 50 original posts and 200 replies per day. It also specifies that the daily cap is broken down into smaller limits over half-hour intervals. In May 2026, X tightened enforcement of that cap, making it a practical concern for high-volume users: going past 50 posts a day on X now means paying for a Premium plan or, at the very least, going through account verification.

For a publisher, this matters, but it shouldn't be misread. The 50-posts cap isn't proof that the algorithm penalizes the 51st post. It's an access constraint for unverified accounts. The algorithmic analysis says something else: even if the account can publish more, its posts still have to clear filters, avoid redundancy, and earn their place in the Top K.

One important detail on cannibalization: it saturates, as the multiplier table above shows. From the seventh post of the same author in a candidate batch, attenuation hits its floor around 0.2 and stops dropping. So the 50th post isn't penalized more than the 7th inside a single reader's session. But since a single reader rarely sees more than a handful of your posts in a day anyway, useful volume per audience stays limited. The lesson isn't "publish less". It's "publish without repeating the same promise to the same audience inside the same window".

In practice, a publisher reasons on two levels:

  • publishing capacity: can the account legally and technically publish the planned volume ?
  • algorithmic efficiency: does each extra post bring enough value not to cannibalize the others ?

9.2. For a general-interest publisher account#

A main account shouldn't be a plain RSS pipe. It should publish the big stories, the useful formats, the important lives, and the angles that can reach broadly.

A robust cadence can be organized like this:

  • a few strong morning posts on service, business, or politics topics ;
  • follow-up posts during the day as the news evolves ;
  • more explanatory or conversational formats at the end of the day ;
  • less raw repetition, more differentiated angles.

If the outlet produces 150 social items per day, not all of them should go on the main account. First, because an unverified account now hits the 50-posts-per-day cap. Second, because a single very active author increases the algorithmic cannibalization risk. Part of the volume can shift to vertical accounts: sports, business, culture, local, fact-checking, live.

9.3. For live coverage or breaking news#

Publishing peaks make sense when the news demands it. But even in breaking news, you avoid publishing the same level of information ten times.

A better approach:

  • one main post that establishes the story ;
  • genuinely new updates ;
  • a thread or a live to concentrate the micro-updates ;
  • separate posts only when the angle truly shifts: takeaways, map, quote, consequence, reaction, explainer.

Example: on a government appointment, publishing "X appointed Prime Minister" followed by five near-identical variants doesn't help much. Publishing the appointment, the profile, the first reactions, the political fallout, and the legislative calendar, on the other hand, creates five distinct editorial values.

9.4. Threads, the format to prefer#

Threads are the least penalized format under cannibalization. In the code, a thread counts as a single candidate (the root post), with the following items attached via conversation expansion. Posts inside the same thread don't compete with each other in the author-diversity scorer.

For a newsroom, this opens an obvious lane. A five-part investigation, a deep-dive feature, the full coverage of a public hearing, the analysis of a long report: anything that naturally unfolds across several sequential ideas gains from a thread rather than a series of separate posts. Total reach is better, because no post inside the thread takes the diversity multiplier hit.

The opposite move makes no sense: stitching unrelated topics into a single thread fails because a thread has to tell one continuous story. If it doesn't, readers drop at the second post and the engagement signals collapse.

9.5. For evergreen or service content#

Evergreen content shouldn't be recycled with the same hook. It can come back if the angle shifts.

Example with a piece on banking scams:

  • Monday: "Three signals to spot before clicking on a banking SMS"
  • Thursday: "Your bank will never ask for this information by text"
  • Sunday: "Worth sharing with family: an anti-scam checklist for online shopping"

Same source content, three different promises. For the algorithm, that's potentially three more useful reading contexts than a mechanical repeat of the same title.

10. Common mistakes publishers make#

10.1. Publishing the article title with no social angle#

An SEO title often describes the subject. A post has to create a reason to act. You move from "what the article contains" to "what the reader will gain by opening it".

10.2. Confusing volume with coverage#

Posting a lot creates the impression of covering the news. But if the posts run too close, the system can cut them by duplication, fatigue, or author diversity. Editorial coverage should be broad ; social publishing should be selective.

10.3. Sending every topic to the same account#

A generalist account that posts sports, politics, breaking news, culture, weather, and business is addressing very different audiences. Vertical accounts can help the algorithm associate an author with a clear editorial territory.

10.4. Measuring only impressions#

Impressions alone don't tell you whether a post created lasting value. You also have to watch:

  • engagement rate per impression ;
  • click-through to the article ;
  • time spent after the click ;
  • new follows gained ;
  • negative signals ;
  • performance by angle, not just by topic.

11. A simple method to audit your X/Twitter strategy#

To turn this analysis into a plan, a newsroom can audit its posts with five questions.

11.1. Does each post have a clear promise?#

A good post lets the reader understand immediately why they should stop scrolling. If the promise is fuzzy, the post leans too hard on the publisher's name.

11.2. Are nearby posts actually different?#

If two posts can be swapped, one of them is probably useless. Better to concentrate engagement on a strong version than scatter attention across three weak variants.

11.3. Are topics going to the right account?#

The main account should carry the broad-audience topics. Specialized accounts should carry depth, useful repetition, and tighter communities.

11.4. Does timing respect internal competition?#

Publishing five important posts at the same minute creates artificial competition. Smarter planning gives each post a window to pick up its first signals.

11.5. Are you watching the negative signals?#

A post that drives clicks but also a lot of rejection should be treated as a warning. The goal isn't only to make people open ; it's to build a lasting relationship with the audience.

12. What teams can do this week#

A very concrete plan for a newsroom.

12.1. Day 1: map your post types#

Sort the last 30 days of publications by function:

  • breaking news ;
  • cold article ;
  • analysis ;
  • live ;
  • video ;
  • thread ;
  • evergreen reshare ;
  • subscription push ;
  • quote or reaction.

The goal is to see whether the account actually publishes a real variety or just many variants of the same format.

12.2. Day 2: spot the cannibalization#

Look for moments where several posts from the same account went out in a 15 to 30 minute window. Compare their performance. If only one captures engagement and the others stay flat, you probably have an internal competition problem.

12.3. Day 3: rewrite the weak hooks#

Take posts with low clicks or low dwell and reframe them around reader value:

  • "what this changes" ;
  • "what to check" ;
  • "the three points to remember" ;
  • "why this is happening now" ;
  • "who's concerned".

12.4. Day 4: segment the accounts#

Identify topics that deserve a vertical account or a specific strategy. A publisher can keep the main account for the big moments and use specialized accounts for the strong niches.

12.5. Day 5: install a per-angle read#

Stop looking only at performance per article. Look at performance per social angle. The same article can produce several posts, but they don't all deserve the same treatment.

13. An honest note on the scope of this analysis#

The code released by xAI covers the For You ranking system: candidate sources, filters, engagement predictions, final selection. It doesn't fully cover the ingestion layer upstream: per-account rate limits, behavioral detection, internal BotMaker rules, real-time antispam that decides whether a post even enters the pipeline. That layer is run by X without public documentation.

Practical consequence for a newsroom: everything described in this article sits at the ranking layer and stays optimizable (angle, format, timing, diversity, editorial quality). But you also have to respect platform limits and behavioral thresholds set by X, which remain partly opaque. The working rule: don't try to bypass the official 50-post daily cap for unverified accounts, and keep a cadence that stays consistent with the account's history. An account that jumps overnight from five to fifty posts per day raises as many antispam flags as an account that tries to bypass them through multiple accounts.

14. The takeaway for publishers#

The X/Twitter algorithm doesn't reward frequency by itself. It rewards a post's ability to be relevant, distinct, engaging, and not rejected, for a given audience.

For a publisher, the winning strategy isn't "post as much as possible". It's:

  • publish each topic with a clear social angle ;
  • avoid duplicates and weak repetition ;
  • space out posts aimed at the same audience ;
  • use vertical accounts when volume gets too high ;
  • measure engagement quality, not just reach ;
  • treat each post as a candidate in competition.

A publisher can post a lot on X. But the more you publish, the more disciplined you have to be. The algorithm doesn't necessarily penalize volume ; it penalizes indifference, redundancy, and disappointment.

Good news for newsrooms: performance doesn't depend on a hidden trick. It depends on editorial work that publishers already know how to do, picking the right angle at the right time for the right audience.