Glossary

The Virality Rate Formula, and the Platforms That Publish Its Inputs

Taras Shynkarenko
Taras Shynkarenko
•Updated: •7 min read
The virality rate formula and the platform metrics it depends onThe virality rate formula and the platform metrics it depends on

TL;DR, Quick Answer

7 min read

Virality rate divides shares by the number of times a post was seen, then multiplies by 100. No platform returns it as a field, so you assemble it yourself from two numbers the platform does return. Choosing impressions as the denominator produces a smaller number than choosing reach, because impressions count the same person twice. LinkedIn is the only major API that hands you both in one object, as impressionCount and uniqueImpressionsCount. Meta has deprecated impressions on Instagram media created after July 2, 2024, and marks post_impressions on Facebook as deprecated above Graph API v25, so the impressions denominator is quietly disappearing on both.

What is virality rate?

A post's virality rate is the share of its audience that passed it on, written as shares divided by the number of times the post was seen. It is a spread metric, not an interest metric. A like tells you someone stopped. A share tells you someone put their own name behind your post and handed it to an audience you do not own.

That distinction matters because shares are the only interaction that grows the denominator of the next measurement. Everything else happens inside the reach you already had.

No platform returns this metric. There is no virality_rate field in the Instagram Graph API, no virality column in LinkedIn's share statistics, no such metric in the YouTube Analytics API. It is a formula that analysts assemble from two numbers the platform does publish, which is exactly why two tools can report two different virality rates for the same post.

What is the virality rate formula?

The formula is shares divided by the number of times the post was seen, times 100:

virality rate = (shares / impressions) * 100

Some analysts use reach instead:

virality rate = (shares / reach) * 100

A post with 40 shares and 20,000 impressions has a virality rate of 0.2 percent. The same post, if those 20,000 impressions came from 8,000 unique accounts, has a virality rate of 0.5 percent against reach. Same post, same shares, one number two and a half times the other.

This is the same structural problem that makes engagement rate impossible to compare across tools, where the denominator can be followers or reach. Virality rate inherits it, with the added difficulty that the numerator is also ambiguous.

Should the denominator be impressions or reach?

Reach is the better denominator, and impressions is the more available one.

Meta states the difference plainly in its own Instagram documentation, describing reach as the "Number of unique Instagram users that have seen the reel at least once" and adding that "Reach is different from impressions, which can include multiple views of a reel by the same account."

That sentence is the whole argument. Virality rate asks a question about people: of everyone who saw this, what fraction passed it on? Only one of those numbers counts people. Impressions counts screens. A reel that autoplays four times for the same viewer contributes four impressions and one reach, so the impressions denominator inflates and the resulting rate deflates, by a factor that varies with format. Feed carousels, reels and stories each have different rewatch behaviour, which means an impressions-based virality rate is not even comparable between two formats on the same account.

The case for impressions is practical, not theoretical. It is the number more platforms hand you, it is not labelled as estimated, and it is stable across the reporting window. Reach is estimated on Meta surfaces and depends on a deduplication window that Meta does not publish.

Pick one, write it down, and never mix the two in the same chart. If you want the full argument about what each number counts, reach and impressions measure genuinely different things.

Which platforms publish the numbers the formula needs?

Only LinkedIn hands you shares, impressions and unique impressions in a single API response. Everywhere else you get one denominator or none.

PlatformShare metricImpressionsReach or unique
Instagramsharesimpressions, deprecated for media created after July 2, 2024reach, marked estimated
Facebook Pagespost_activity_by_action_type, broken out by actionpost_impressions, "Deprecated above Graph API v25"post_impressions_unique, same deprecation note
LinkedInshareCountimpressionCountuniqueImpressionsCount
Xretweet_count plus quote_countpublic_metrics.impression_countnone published
Threadsreposts, quotes, sharesviewsnone published
TikTokshare_countnone in the Display APInone in the Display API
YouTubesharesad, card and annotation impressions onlynone
Blueskyrepost counts in the appnonenone

The TikTok row is the starkest. The Display API's video object exposes exactly four counters, like_count, comment_count, share_count and view_count, and there is no impressions or reach field at all. A TikTok virality rate is therefore shares over views, which is a third denominator with its own definition.

YouTube is similar in a different direction. The YouTube Analytics API does expose shares, defined as the number of times users shared a video through the Share button, but the impressions metrics it offers are ad impressions, card impressions and annotation impressions. Thumbnail impressions, the number every creator means when they say impressions, live in Studio's Reach tab and not in the API.

AdaptlyPost
AdaptlyPost

Start Your 7-Day Free Trial

All-platform analytics

Social Inbox

AI-powered assistant

Bluesky publishes no first-party analytics endpoint at all, so a Bluesky virality rate has to be reconstructed from the firehose or from the app's visible counts.

Two people looking at a smartphone together, showing what it means to hand a post to someone else.

What counts as a share on each platform?

The numerator is not one thing. X splits it into two fields, public_metrics.retweet_count and public_metrics.quote_count, and X's own documentation notes that repost count "Does not include quote posts." Add them and you overcount anyone who reposted and then quoted. Use only reposts and you miss the quote that actually carried the post into a new timeline.

Threads splits it three ways, into reposts, quotes and shares, where the last one covers sending a post outside Threads. Meta lists both views and shares on Threads as in development, which is its label for a metric whose definition may still change.

Instagram gives you one undifferentiated shares counter and defines it only as the number of shares of the media, with no breakdown of where those shares went. Facebook's post_activity_by_action_type is described in the Graph API reference as the number of stories created about your Page post, by action type, and the reference does not enumerate the action types on that page, so you have to inspect a live response to find the share bucket. LinkedIn warns that time-bound shareCount will not match the lifetime figure, because the time-bound data excludes instant reposts.

So before the denominator argument even starts, five platforms disagree about what a share is.

Where the inputs are quietly disappearing

Impressions is being retired underneath this formula on both Meta surfaces.

The Instagram media insights reference states that impressions is deprecated for media created after July 2, 2024, and remains available only for media created before that date. Meta's replacement, views, is described as the total number of times the media has been played on Instagram, which is a plays number rather than an on-screen number. Instagram's move from impressions to views changed what the denominator counts, not just its name.

On Facebook, the Graph API insights reference marks both post_impressions and post_impressions_unique as "Deprecated above Graph API v25." That is the post-level impressions number and the post-level reach number, on the same deprecation notice.

If your virality rate is built on impressions, it has a shelf life on Meta surfaces. A rate built on reach or on views will survive longer, at the cost of not being comparable to the numbers you calculated last year.

A person reviewing performance charts on a laptop, representing how a post's virality rate gets compared against past results.

Where impressions disappeared first
1
July 2, 2024. Instagram deprecates impressions for any media created after this date.
2
Graph API v25. Facebook marks post_impressions and post_impressions_unique deprecated above this version.
3
What's left. A virality rate built on impressions loses its denominator on both Meta surfaces, while reach and views survive longer.
Both Meta deprecation notices land on the impressions side of the formula, not the reach side.

What is a good virality rate?

Neither Meta, LinkedIn, X, TikTok nor YouTube publishes a benchmark for virality rate, because none of them defines the metric. Any industry average you see quoted comes from a vendor's own sample of the accounts it happens to manage, calculated with a denominator that vendor chose.

The usable version is internal. Fix the denominator, calculate the rate for every post over a long enough window, and compare each new post against your own distribution. A post in your top decile for virality rate is telling you something real about the format and the hook, regardless of whether 0.4 percent is good in the abstract.

Frequently asked questions

Is virality rate the same as amplification rate?

They are the same shape with different denominators. Amplification rate as commonly written divides shares by follower count, which measures spread relative to the audience you own. Virality rate divides shares by impressions or reach, which measures spread relative to the audience a post actually reached. A post that reached far beyond your followers can show a high amplification rate and a low virality rate at once.

Can I calculate virality rate on TikTok?

You can calculate shares over views. The TikTok Display API video object returns share_count and view_count and no impressions or reach field, so views is the only denominator available through the API. Label it as such, because a views-based rate is not comparable to an impressions-based rate on another network.

AdaptlyPost
AdaptlyPost

Start Your 7-Day Free Trial

All-platform analytics

Social Inbox

AI-powered assistant

Does a repost with a comment count as a share?

That depends on the platform and you have to decide. X counts it in quote_count, separately from retweet_count, and its documentation says the repost count excludes quote posts. Threads counts it in quotes, separately from reposts. If you include quotes in your numerator, include them on every platform and every period.

Why do two tools report different virality rates for the same post?

Because one of them divided by impressions and the other divided by reach, or one counted quote posts in the numerator and the other did not. No platform defines the metric, so every tool picks its own inputs. Ask any vendor which two fields they divide before comparing their number to yours.

Does Instagram still return impressions?

Only for older media. The Instagram media insights reference states the metric is deprecated for media created after July 2, 2024, and still available for media created before that date. New posts return views, reach and shares instead.

Which API gives me every input in one call?

LinkedIn's organizationalEntityShareStatistics endpoint returns shareCount, impressionCount and uniqueImpressionsCount in the same totalShareStatistics object, so you can compute both denominators from a single response. Note that the endpoint returns organic data only within a rolling 12-month window, and that sponsored activity is excluded.

How does virality rate differ from engagement rate?

Engagement rate divides interactions like likes and comments by followers or reach, the same denominator problem that makes it hard to compare across tools. Virality rate divides only shares by impressions or reach, isolating the one interaction that grows the audience beyond the people already reached. Both numerators are ambiguous: LinkedIn counts clicks, likes, comments and shares as engagement, and shares are counted differently on every platform.

Why can't I compare virality rate across formats like reels and carousels?

Feed carousels, reels and stories each have different rewatch behaviour, and impressions count every replay while reach counts a person once. A reel that autoplays four times for the same viewer racks up four impressions and one reach, so the impressions-based rate drops by a factor that shifts with the format. Use reach as the denominator if you need to compare virality rate across formats on the same account.

Does LinkedIn's time-bound shareCount match the lifetime figure?

LinkedIn's time-bound shareCount does not match the lifetime figure. LinkedIn's own documentation says the time-bound data excludes instant reposts, which explains the gap. Treat the time-bound number as a partial count, not a substitute for the lifetime one.

What replaced impressions on Instagram?

Views. Meta describes views as the total number of times the media has been played on Instagram, a plays number rather than an on-screen number like impressions was. New Instagram posts return views, reach and shares in place of impressions.

Was This Article Helpful?

Let us know what you think!

See us more often in Google

One click marks AdaptlyPost as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.

Before you go...

AdaptlyPost

AdaptlyPost

Schedule your content across all platforms

Manage all your social media accounts in one place with AdaptlyPost.

All-platform analytics

Social Inbox

AI-powered assistant

Related Glossary Terms

Related Articles