X Engagement Insights

What actually drives engagement on X

We scan posts across our tracked X catalog and measure every one against its own author's median, so format and timing effects show through instead of account size. Everything below is an association observed in that sample, not a proven cause, and where a difference is too small to matter we say so instead of leaving it out.

The short version

Across 1,673,303 original posts from 58,046 tracked accounts, every post is compared with the same account's other posts, so account size drops out of the comparison and what is left is the format or the timing. Each account counts once, however much it posts. Nothing we can measure moves engagement by more than 2% either way once the comparison runs account by account. On this data, format and timing are not the lever.

  1. Images and video

    Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

    No measurable effect
  2. Video specifically

    Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

    No measurable effect
  3. How many images

    Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

    No measurable effect
  4. Outbound links

    Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

    No measurable effect
  5. Post length

    Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

    No measurable effect
  6. Hashtags

    Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

    No measurable effect
  7. Mentioning other accounts

    Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

    No measurable effect
  8. Posting client

    Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

    No measurable effect
  9. Gap since the last post

    Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

    No measurable effect
  10. Threads

    Not measurable. X exposes the conversation link on almost none of the posts we sample, so we cannot separate posts that open a thread from posts that stand alone. We would rather say that than publish a thread finding built on a handful of posts.

    No measurable effect

Every dimension we test appears in this list, including the ones where the answer was "no difference". Bar length is the size of the effect on a single scale shared by every chart on this page.

Accounts measured
58K
37K with a settled sample
Posts analysed
2.7M
in the current windows
Median engagement rate
0.101%
per follower, across accounts above 948 followers
Median reach
6.71%
of an account's followers see a post
Last computed
Sep 1
rollups run daily

Is your engagement rate good?

Work out your own first: take the median number of likes, reposts, replies and quotes across your last 20 original posts, divide by your follower count and multiply by 100. Median, not average, so one good post does not rewrite your baseline. Then find that number on the ladder below.

p100.002%
p250.012%
p50 (median)0.08%
p750.43%
p902.10%
p99160.7%
Engagement rate as a share of followers, across the 36,054 accounts we have scanned enough to measure. The axis is logarithmic, because the top and bottom of this population are about 107,142 times apart and a linear axis would flatten everything below the median into a single point.
Show the percentile table
Engagement rate percentiles
PercentileEngagement rate
10th percentile0.002%
25th percentile0.012%
50th percentile0.08%
75th percentile0.43%
90th percentile2.10%
99th percentile160.7%
Engagement rate bands across the measured accounts
BandEngagement rateAccounts
Top 1%160.7% and above361 of 36,054
Top 10%2.10% to 160.7%3,245 of 36,054
Top 25%0.43% to 2.10%5,408 of 36,054
Above the median0.08% to 0.43%9,014 of 36,054
Below the median0.012% to 0.08%9,014 of 36,054
Bottom 25%below 0.012%9,014 of 36,054

This ladder is built from the 36,054 accounts in our tracked X catalog with enough scanned posts to measure, every one of them above 948 followers, with a median of 98K. It is not a sample of X as a whole, and it is not representative of small accounts: engagement rate falls as follower counts rise, so a smaller account will normally place higher here than the comparison really justifies. Use it to locate a large account among its peers, not to grade a new one.

Follower count is not reach. For the median account in this group a typical post is seen by about 5.02% of its follower count, and 1.23% of those impressions turn into an interaction. That is why the follower-based rates on this page look so much smaller than the ones quoted in social media guides, which usually divide by impressions instead.

A percentile is a rank inside this group, not a grade. It says how many of the accounts we measure sit below a given rate, and nothing about whether that rate is good for your audience, your niche or what you post.

Every dimension we tested

Each bucket is compared with the same accounts' other posts, so a bucket below zero underperformed the people who posted it rather than underperforming X as a whole. Every chart shares one scale, the whisker is the 95% confidence interval, and the evidence column counts accounts rather than posts. Note the buckets overlap: a post with video is also a post with media.

Images and video

Not measurable

Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

Images and video: how each bucket compares with the same accounts' other posts.
Images and videoEffect chartEffect95% intervalAccounts
With image or video(not conclusive)+102%+97% to +106%20K
Text only(not conclusive)-48%-49% to -47%23K

Video specifically

Not measurable

Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

Video specifically: how each bucket compares with the same accounts' other posts.
Video specificallyEffect chartEffect95% intervalAccounts
With video(not conclusive)+48%+46% to +50%24K
No video(not conclusive)-28%-29% to -27%18K

How many images

Not measurable

Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

How many images: how each bucket compares with the same accounts' other posts.
How many imagesEffect chartEffect95% intervalAccounts
2-3 images(not conclusive)+9%+7% to +10%13K
4+ images(not conclusive)+3%+1% to +4%7.6K
1 image(not conclusive)-7%-8% to -6%9.2K

Outbound links

Not measurable

Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

Outbound links: how each bucket compares with the same accounts' other posts.
Outbound linksEffect chartEffect95% intervalAccounts
No link(not conclusive)+80%+77% to +83%14K
With a link(not conclusive)-43%-44% to -42%19K

Post length

Not measurable

Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

Post length: how each bucket compares with the same accounts' other posts.
Post lengthEffect chartEffect95% intervalAccounts
Over 280 characters(not conclusive)+14%+13% to +16%19K
180 - 280 characters(not conclusive)-2%-3% to -1%25K
80 - 180 characters(not conclusive)-4%-4% to -3%31K
Under 80 characters(not conclusive)-5%-6% to -4%24K

Hashtags

Not measurable

Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

Hashtags: how each bucket compares with the same accounts' other posts.
HashtagsEffect chartEffect95% intervalAccounts
No hashtags(not conclusive)+11%+9% to +12%12K
1 hashtag(not conclusive)-6%-7% to -4%15K
2 hashtags(not conclusive)-6%-8% to -5%8.2K
3+ hashtags(not conclusive)-7%-9% to -6%6.5K

Mentioning other accounts

Not measurable

Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

Mentioning other accounts: how each bucket compares with the same accounts' other posts.
Mentioning other accountsEffect chartEffect95% intervalAccounts
No mentions(not conclusive)+22%+20% to +25%9.6K
1 mention(not conclusive)-14%-15% to -12%15K
2+ mentions(not conclusive)-22%-24% to -20%6.5K

Posting client

Not measurable

Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

Posting client: how each bucket compares with the same accounts' other posts.
Posting clientEffect chartEffect95% intervalAccounts
X app(not conclusive)+18%+15% to +21%5.2K
Scheduler or API(not conclusive)-9%-12% to -7%7.5K

Gap since the last post

Not measurable

Not measurable yet. No bucket here clears both tests we require - at least 30 independent accounts behind it, and a confidence interval that stays on one side of zero. Until both hold, a difference here cannot be told apart from ordinary variation between accounts.

Gap since the last post: how each bucket compares with the same accounts' other posts.
Gap since the last postEffect chartEffect95% intervalAccounts
More than a day after the last post(not conclusive)+7%+6% to +8%26K
6 - 24 hours after the last post(not conclusive)+4%+3% to +5%33K
1 - 6 hours after the last post(not conclusive)0%0% to +1%31K
Within an hour of the last post(not conclusive)-13%-14% to -12%26K

Threads

Not measurable

Not measurable. X exposes the conversation link on almost none of the posts we sample, so we cannot separate posts that open a thread from posts that stand alone. We would rather say that than publish a thread finding built on a handful of posts.

Threads: how each bucket compares with the same accounts' other posts.
ThreadsEffect chartEffect95% intervalAccounts
Opens a thread(not conclusive)+19%+17% to +22%10.0K
Single post(not conclusive)-16%-18% to -14%4.4K

When posts land

By hour posted (UTC)

Across 1.6M posts, 21:00 UTC is the strongest hour at -1% and 04:00 UTC the weakest at -6%, a spread of 5 points. Each hour is measured against the same accounts posting at other hours, so this is a timing pattern rather than a map of when the big accounts happen to be awake.

Engagement by hour posted, UTCTwenty-four bars, one per UTC hour. Each bar shows how posts published in that hour compare with their own authors' median engagement. Bars above the centre line ran higher than the median, bars below ran lower.
0003060912151821
Above the authors' own mediansBelowScale: plus or minus 6%
Show engagement by hour posted, utc as a table
Engagement by hour posted, UTC
Hour (UTC)Vs author medianPosts
00:00 UTC-1%50K
01:00 UTC-2%51K
02:00 UTC-4%49K
03:00 UTC-4%53K
04:00 UTC-6%42K
05:00 UTC-4%41K
06:00 UTC-4%47K
07:00 UTC-5%51K
08:00 UTC-4%60K
09:00 UTC-3%68K
10:00 UTC-2%71K
11:00 UTC-3%77K
12:00 UTC-2%85K
13:00 UTC-2%93K
14:00 UTC-3%96K
15:00 UTC-2%99K
16:00 UTC-3%96K
17:00 UTC-2%89K
18:00 UTC-2%83K
19:00 UTC-2%79K
20:00 UTC-1%73K
21:00 UTC-1%65K
22:00 UTC-1%57K
23:00 UTC-2%51K

By day of week

Across 1.7M posts, Sunday is the strongest day at +4% and Friday the weakest at -3%. The edge is small, but it points the opposite way to the "post on weekdays" advice most guides repeat.

Engagement by day of weekSeven bars, one per weekday, Sunday first. Each bar shows how posts published on that day compare with their own authors' median engagement. Bars above the centre line ran higher than the median, bars below ran lower.
SunMonTueWedThuFriSat
Above the authors' own mediansBelowScale: plus or minus 5%
Show engagement by day of week as a table
Engagement by day of week
DayVs author medianPosts
Sunday+4%228K
Monday0%281K
Tuesday-2%270K
Wednesday-1%249K
Thursday-2%242K
Friday-3%250K
Saturday+3%225K

Hours are UTC because that is how the posts are stored. Your audience's local clock is what matters, so read these as a shape rather than as a schedule.

What X's own ranking code says

X open-sourced its ranking stack, so some of this does not have to be guessed at. Where our measurements agree with it we say so, and where they point somewhere else we say that too.

X's ranking weights are public. In the open-sourced code, a reply is worth 10 times a like, a quote or a DM share matches a reply, and a copy-link share is the single largest positive signal. Profile clicks and raw dwell time are weighted at zero.

Source: xai-org/x-algorithm, published January 2026 and still updated

What we see: Our engagement figure counts likes, reposts, replies and quotes equally, so an account that earns replies rather than likes is worth more to the timeline than our rate suggests. Nothing on this page can see a copy-link share at all.

Negative signals dominate. A report, a mute, a block or a 'show less often' tap carries far more weight than any positive action.

Source: xai-org/x-algorithm ranking parameters, August 2026

What we see: None of this is visible from outside X, so no engagement rate published anywhere, ours included, can see the half of the ledger that punishes accounts.

There is no coded penalty for outbound links. X's head of product said in July 2026 that links no longer need to go in a reply, and that this had been the case for over a year. No URL rule appears in the published ranking code.

Source: Nikita Bier and Elon Musk, July 2026; xai-org/x-algorithm

What we see: We still measure posts carrying a link running well below the same accounts' other posts, and the gap shows up in impressions as well as in interactions. That is consistent with the ranking code and with the statements above: the likelier explanation is what link posts tend to BE - announcements, cross-promotion, automation - rather than a rule that punishes the URL.

Ranking now runs through a Grok-based model rather than hand-written rules, with X stating the goal of removing manual heuristics entirely.

Source: X engineering, January 2026 release; Elon Musk, October 2025

What we see: There is no rule left to game, which is worth holding on to while reading anything below. What we measure is how audiences behave around a format, not a setting anybody can toggle.

Only one post per conversation branch survives into the timeline: the pipeline keeps the highest-scored candidate and drops the rest. A thread is not several chances at distribution.

Source: Analysis of the published home-mixer pipeline, January 2026

What we see: We cannot check this. X stops exposing the conversation link on almost everything we sample, which is why the threads row on this page reports itself as unmeasurable rather than guessing.

Hashtags are deprecated. X banned them in promoted posts and its own leadership has asked people to stop using them, because retrieval no longer depends on them.

Source: X, 2024-2025

What we see: Our measurement agrees with the direction: across the catalog, posts carrying no hashtags outperform the same accounts' hashtagged posts. Whether that is the hashtag or the kind of post that tends to carry one is not something an observational dataset can separate.

There is no post-age decay function in the published ranking code, which is the basis for the widely repeated claim that a post is finished after 30 minutes.

Source: xai-org/x-algorithm ranking scorer, 2026

What we see: Our hour-of-day and day-of-week spreads are far narrower than our format effects, which is what you would expect if timing mattered much less than the advice industry says it does.

Strongest engagement for their size

Ranked by where each account's engagement rate falls among the accounts closest to it in follower count, so a focused account can outrank a much larger and sleepier one. The right-hand column is the number of original posts behind each row, because a rate measured on nine posts and a rate measured on ninety are not the same claim.

Accounts ranked by engagement rate relative to their size band
AccountFollowersEngagement rateVs accounts its sizeTypical postPosts measured
Khyle.
@khyleri
2.2M7.23%beats 100%Top 10% for its size159K14
masoq
@masoq095
755K19.4%beats 100%Top 10% for its size147K10
니키 (qdeoks)
@rubberdeokies
843K10.1%beats 100%Top 10% for its size85K8
⁷⚯͛☔
@inuot7
9.9K828.1%beats 100%Top 10% for its size83K12
茅原クレセ👑「ヒマチの嬢王」ドラマ化👑
@kayaharakurese1
483K11.8%beats 100%Top 10% for its size57K16
yes. ✭
@iAmTerrace
9.8K326.8%beats 100%Top 10% for its size32K12
Fran
@FranYaoi
89K33.6%beats 100%Top 10% for its size30K35
Chocolate Mint
@Player1_Please
94K24.6%beats 100%Top 10% for its size23K44
佐野勇斗
@sanohayatodazo
686K18.4%beats 100%Top 10% for its size125K15
Nick shirley
@nickshirleyy
1.8M4.25%beats 100%Top 10% for its size76K11
Sarah Andersen
@SarahCAndersen
852K8.16%beats 100%Top 10% for its size69K9
Things that make ya go Hmmm...🤔
@RichardBouselli
10.0K593.3%beats 100%Top 10% for its size59K20
野口 衣織
@noguchi_iori
547K8.68%beats 100%Top 10% for its size47K23
𝑩𝒓𝒐𝒐𝒌𝒆 𝑪𝒉𝒓𝒊𝒔𝒕𝒊𝒏𝒆 ★
@barbiebrookeecc
100K28.3%beats 100%Top 10% for its size28K49
Majid 🇵🇸
@NeverGoyAgain_
9.9K235.4%beats 100%Top 10% for its size23K13
amb :3
@amburrne
99K22.8%beats 100%Top 10% for its size21K12
You Maniac เดี๋ยวจะรักซะให้บ้า
@YouManiacSeries
91K22.1%beats 100%Top 10% for its size20K8
冨樫義博
@Un4v5s8bgsVk9Xp
3.9M3.88%beats 100%Top 10% for its size151K8
キュルZ
@kyuryuZ
901K6.92%beats 100%Top 10% for its size62K8
porsuppakarn
@porsuppakarn
614K9.24%beats 100%Top 10% for its size56K28
♡graciepoo♡
@9wacie
10.0K493.0%beats 100%Top 10% for its size49K37
SWAGUU
@seyi_vibez
520K8.19%beats 100%Top 10% for its size43K8
ella⁷
@minjiiminie
99K26.7%beats 100%Top 10% for its size26K10
もちもちもっちゃん
@motimoti_seizin
99K21.7%beats 100%Top 10% for its size20K29
Egotistical (Replaying GTA5)
@TristanBeMe101
88K21.7%beats 100%Top 10% for its size19K20

Buy or sell X accounts - escrow-protected

PlayerSells is an escrow marketplace for X accounts. Every deal is protected, with no middleman risk.

How we measure this

What counts as a good engagement rate on X?
Among the 36,054 accounts we can measure, the median engagement rate is 0.08% of followers and the top 10% start at 2.10%. Those accounts are all very large, and engagement rate falls as accounts grow, so a smaller account should expect a higher number. For an outside reference point, RivalIQ's 2024 industry benchmark report put the median X engagement rate at 0.029% of followers using the same denominator. Figures in the low single-digit percentages that get quoted elsewhere are almost always dividing by impressions, not by followers, and the two are not comparable.
What is this built from?
Engagement aggregates for 58,046 X accounts in our tracked catalog, built from 2,679,249 posts captured in the current scanning windows. Aggregates and best-post records are kept permanently; raw post text is not.
How is engagement rate calculated here?
Median interactions (likes, reposts, replies and quotes) on an account's original posts over a 30-day window, divided by its follower count. Medians rather than averages, because one viral post would otherwise make a quiet account look busy. Replies to other people, reposts and quote-posts of others are excluded from the sample - only the account's own original posts count.
What does the multiple mean?
Every post is measured against its own author's other posts. A 2.0x post did twice as well as that account normally does. Comparing raw like counts across accounts of different sizes would only tell you which formats large accounts happen to prefer, which is a fact about our catalog rather than about X.
How do you decide an effect is real?
Two tests, and a bucket has to pass both. First, at least 30 independent accounts have to have posted in and out of that bucket, because tweets from one account are not independent observations of how X behaves - accounts are. Second, the 95% confidence interval around the effect has to stay on one side of zero. Anything that fails either test is reported as no measurable effect rather than quietly left out, which is what the earlier version of this page did.
Why compare accounts within a size band?
Engagement rate falls predictably as accounts grow, so a flat threshold would just re-measure follower count. Each account is ranked against the follower decile it sits in, and the result is a percentile: 50 is the middle of that group, 90 is the top tenth. A percentile is uniform by construction, so the label is a statement of fact rather than an opinion about what good looks like.
Are these effects causes?
No, and we will not write them that way. We observe posts that already happened; we never assign an account to post at 9pm or to add a video. Every figure on this page is an association measured across a large sample, which is useful for spotting where to look and worthless as a promise. Where the number is small we say it is small.
Do impressions cover the same posts as follower counts?
Yes. View counts come back on effectively every original post we sample, so the impression-based rate and the follower-based rate rest on the same posts. They are still very different numbers: a typical post in our catalog reaches a small fraction of its account's follower count, so the impression-based rate is far higher. When you see an engagement rate quoted anywhere, check which denominator it used before comparing it to anything here.
How current are these numbers?
Counters are read at scan time and reflect the moment they were captured, not a live figure. A post keeps accumulating engagement after we look at it, so recent posts are measured slightly early. Aggregates are recomputed on a rolling schedule and the page shows when the freshest one ran.

What this cannot tell you

  • This is our tracked catalog, not X. The accounts with enough scanned posts to measure skew very large, so nothing here should be read as a benchmark for a small or new account.
  • We measure posts, not people. An account that engages heavily in replies to others will look quieter here than it is, because replies are excluded from the sample every rate is built on.
  • Accounts choose their own formats. An account that only uses video on its best material will show a video effect that is really a material effect, and no amount of sample size fixes that - it is why these are associations and not causes.
  • A difference of a few percent can be beyond statistical doubt and still be worthless. Where a dimension shows nothing, or shows something too small to matter, we say so rather than dropping it.
  • We cannot see deleted posts or anything from protected accounts, and we do not model reply quality, dwell time or negative feedback - all of which X's own ranking uses and none of which is visible from outside.

Go deeper on one question

Every finding on this page is also published as machine-readable JSON with its sample size, 95% interval and measurement date, under CC BY 4.0.

Keep going