TL;DR
7 min readX defines the Twitter engagement rate as engagements divided by impressions, and it defines an engagement as a click anywhere on the post, including detail expands, profile clicks and hashtag clicks. That makes X's own number run well above a likes, replies and reposts calculation. The API returns the engagements total only to the post's author, only for posts from the last 30 days, and X's ads help center describes its engagement rate with the fraction upside down.
How is the Twitter engagement rate calculated?
X calculates the Twitter engagement rate as engagements divided by impressions, and X's own definition of an engagement is a click anywhere on the post, not only a like, reply or repost. The formula is short:
engagement rate = engagements / impressions x 100
The wording comes from X's help article "About your activity dashboard," which defined the two terms this way:
Engagements: Total number of times a user interacted with a post. Clicks anywhere on the post, including reposts, replies, follows, likes, links, cards, hashtags, embedded media, username, profile photo, or post expansion
Engagement rate: Number of engagements divided by impressions
That article no longer exists as a page you can read. Its address, help.x.com/en/managing-your-account/using-the-post-activity-dashboard, now answers with a 301 redirect to x.com/i/account_analytics, which sends a logged-out visitor to a login screen. The Internet Archive's capture from 13 February 2026 records that redirect. The last capture with the text intact is from 2 June 2024, and it remains the most complete definition of organic engagement X has published.
What does X count as an engagement?
X counts every click on the post as an engagement, and the retired activity dashboard article listed each click type as its own metric. The list is longer than most people expect.
| Metric in X's dashboard | X's definition |
|---|---|
| Detail expands | Clicks on the post to view more details |
| User profile clicks | Clicks on the name, @username, or profile photo of the post author |
| Link clicks | Clicks on a URL or Card in the post |
| Hashtag clicks | Clicks on hashtag(s) in the post |
| Embedded media clicks | Clicks to view a photo or video in the post |
| Permalink clicks | Clicks on the post permalink (desktop only) |
| Follows | Times a user followed you directly from the post |
| Likes | Times a user liked the post |
| Replies | Times a user replied to the post |
| Reposts | Times a user reposted the post |
| Shared via email | Times a user emailed the post to someone |
| App install attempts, App opens, Leads submitted | Card actions for ads and app posts |
Two actions are missing from that list. Bookmarks and quote posts do not appear anywhere in X's engagement definition, even though the API reports both as public counts. X never said whether its dashboard total includes them.
Here is why the click rule matters. Take an illustrative post with 10,000 impressions, 40 likes, 5 replies, 8 reposts, 25 link clicks, 30 profile clicks and 60 detail expands.
| Formula | Numerator | Rate |
|---|---|---|
| Likes, replies and reposts only | 53 | 0.53% |
| X's definition, named metrics only | 168 | 1.68% |
Same post, and the X version is more than three times higher. Detail expands alone outweigh every like, reply and repost combined. LinkedIn does the same thing with clicks, and the LinkedIn engagement rate formula gets inflated in exactly this way.

What does the X API return for engagement?
The X API returns the engagements total only in non_public_metrics, which requires user-context authentication on a post you own, and X's metrics page states that "Non-public, organic, and promoted metrics are only available for posts created within the last 30 days."
The public fields are a different set. Anyone with an app-only bearer token can read these from public_metrics:
| Field | Access | What it counts |
|---|---|---|
impression_count | Public | "Count of times the post appeared on a user's screen. Not unique" |
like_count | Public | Likes |
reply_count | Public | Replies |
retweet_count | Public | Reposts, and X notes it "Does not include quote posts" |
quote_count | Public | Quote posts |
bookmark_count | Public | "Number of times the post has been bookmarked by users" |
url_link_clicks | Non-public | Link clicks, author only |
user_profile_clicks | Non-public | Profile clicks, author only |
engagements | Non-public | X's total, author only |
So nobody outside your account can compute your rate the way X does. A competitor analysis tool can only divide public counts by impression_count, which is a narrower number by design. And after 30 days, even you lose the engagements field through the API. Keep your own exports if you report on older posts. API access has its own costs, covered in the breakdown of Twitter API pricing.
X's documentation also leaves engagements undefined. The metrics page lists the field without saying what goes into it, and the illustrative response on that same page does not add up. It shows engagements at 345 alongside 234 likes, 89 link clicks and 156 profile clicks. Those three alone sum to 479. The example is sample data, but it means the docs give you no way to rebuild the total from its parts. Treat engagements as X's figure, not yours.
RedReplier
Get Started
Reddit, X, Bluesky & HN
Real-time intent alerts
Unlimited AI replies
Ranked by buyer intent
Are impressions and views the same thing on X?
X never states whether impressions and views are one count: the API field is impression_count, the app labels the number views, and X describes it three different ways.
- The retired dashboard article: "Times a user is served a post in timeline or search results."
- The API metrics page: "Count of times the post appeared on a user's screen. Not unique."
- The "About view counts" help page: "Anyone who is logged into X who views a post counts as a view," and "If you're the author, looking at your own post also counts as a view." That page adds that "Embedded posts will not add to view counts."
"Served" and "appeared on a user's screen" are not the same event, and X has never published a viewability threshold for either. The self-view rule matters for small accounts. If the view count is the impression count, an author checking a post a dozen times is a visible share of the denominator, but X does not say that it is. For the wider question of how impressions relate to people reached, see reach vs impressions.
Does X Ads use the same engagement rate?
X Ads uses a different engagement rate, and its help center describes it with the fraction inverted. The campaign dashboard help page on business.x.com reads: "Engagement rate - This is the number of impressions for your ads divided by the number of results."
Two things are off. The numerator and denominator are swapped: a campaign with 10,000 impressions and 50 results would get an "engagement rate" of 200 by that wording. And the ads version divides by "results," which X defines on the same page as "the actions that are directly tied to your campaign objective(s)," such as link clicks for a website traffic campaign. That is a results rate, not the organic engagement rate. Read the dashboard number, not the help text.
In its answer on why reported conversions change, the ads help center also says "X reporting is finalized within 24-48 hours of when impressions are served." A number pulled the morning after a campaign day is still an estimate.
- Engagements divided by impressions
- Engagements are clicks anywhere on the post
- Impressions divided by results, the fraction upside down
- Results are actions tied to the campaign objective
- Finalized within 24-48 hours of impressions being served

What is a good Twitter engagement rate?
X publishes no benchmark for the Twitter engagement rate in its help center, business help center or developer documentation. Every "average engagement rate on X" figure comes from a vendor study, and vendors outside your account cannot see detail expands or profile clicks, so their averages use a narrower numerator than X's own dashboard.
That makes comparing your native X number against a vendor benchmark a category error. Your dashboard counts clicks the benchmark could not see. Compare your posts against your own history, on one formula, and write the formula next to the number. The general case for doing that is laid out in the guide to engagement rate formulas.
Frequently asked questions
What is the Twitter engagement rate formula?
The Twitter engagement rate formula X uses is engagements divided by impressions, multiplied by 100 for a percentage. X defines engagements as clicks anywhere on the post, including detail expands, profile clicks, link clicks and hashtag clicks, alongside likes, replies, reposts and follows.
Do bookmarks count toward engagement rate on X?
X's published engagement definition does not name bookmarks, and X has not said whether its dashboard total includes them. The API exposes bookmark_count as a public metric, so any rate that adds bookmarks is a formula you chose, and it should say so.
Can I calculate a competitor's engagement rate on X?
You can calculate a public-metrics rate for a competitor's post by dividing likes, replies, reposts, quotes and bookmarks by impression_count. You cannot reproduce X's own rate, because engagements, link clicks and profile clicks are non-public metrics that only the post's author can read.
Why is my engagement rate on X higher than in my social media tool?
X's native rate counts clicks, detail expands and profile clicks that many third-party tools leave out or cannot read. A tool using likes, replies and reposts over impressions produces a lower number from the same post, so the gap is a formula difference, not a data error.
Does viewing my own post lower my engagement rate?
Viewing your own post adds to its view count, according to X's "About view counts" help page. X does not say whether views and impressions are one count, so it does not say whether a self-view lands in the engagement rate's denominator. If it does, an author refreshing a post with a few hundred views lowers the rate by a visible amount.
How long can I pull engagement data from the X API?
The X API returns non-public metrics, including engagements, url_link_clicks and user_profile_clicks, only for posts created within the last 30 days. Public metrics such as impression_count and like_count stay available after that.
Do clicks count as engagement on X?
Yes. X's definition counts clicks anywhere on the post, including detail expands, profile clicks, link clicks, hashtag clicks and embedded media clicks. Likes, replies, reposts and follows count too. That is why X's own rate runs higher than a likes, replies and reposts calculation.
RedReplier
Get Started
Reddit, X, Bluesky & HN
Real-time intent alerts
Unlimited AI replies
Ranked by buyer intent
Are impressions and views the same thing on X?
X never states whether they are one count. The API field is impression_count, the app labels the number views, and X describes it as "served" in one place and "appeared on a user's screen" in another. Write down which label your source used before you compare numbers.
Is the engagement rate in X Ads the same as the organic rate?
No. The organic rate is engagements divided by impressions. The ads help center describes its rate as impressions divided by results, which is inverted, and results are the actions tied to your campaign objective. Read the dashboard number, not the help text.
What is a good engagement rate on X?
X publishes no benchmark in its help center, business help center or developer documentation. Vendor averages use a narrower numerator, because vendors cannot see detail expands or profile clicks. Compare your posts against your own history on one formula, and write the formula next to the number.
See us more often in Google
One click marks RedReplier as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.
Before you go...
RedReplier
Catch every buyer asking for what you sell
RedReplier watches Reddit, X, Bluesky and Hacker News in real time, ranks every thread by buyer intent, and drafts your reply, so you get there first.
Reddit, X, Bluesky & HN
Real-time intent alerts
Unlimited AI replies
Ranked by buyer intent
Related Articles


Who Sees X Hidden Replies, and What Happens When Yours Gets Hidden
How x hidden replies work: who can hide a reply, where the hidden reply icon sits, what the replier is told, and the API v2 hide replies endpoint.


Every Reddit Engagement Rate You See Was Built by Somebody Else
A Reddit engagement rate exists in no Reddit product. What the API returns, what post insights show, and the three rates people build out of those parts.


X Stopped Publishing Twitter API Rate Limits by Tier
Twitter API rate limits now sit in one per-endpoint table split by app and by user, not by plan tier. The live numbers, checked 12 September 2026.

