On this page
The average TikTok engagement rate in our data is 5.38%. The median is 3.95%. We computed both on 460,483 TikTok posts, every post with a view count in the corpus buzzabout has collected, as likes plus comments plus shares, divided by views. The median lands in the same ballpark as the published per-view benchmarks, about half a point above them.
The number worth the article is the one underneath it. Who posted a video explains roughly six times more of its engagement than the strongest measurable thing about the video itself. So every benchmark on this page, ours included, can tell you whether a body of work is normal. None of them can tell you whether a video was good.
What is a good engagement rate on TikTok?#
Above 3.95% puts a post in the better half of this corpus. But a single number is the wrong thing to compare against. Here is the whole ladder.
The denominator is views: (likes + comments + shares) / views, on the 460,483 posts with a view count. The mean, 5.38%, sits well above the median; the tail section below explains why.
Read it as a ladder. A post at 1.94% is not failing; it sits at the 25th percentile. A post at 11.11% is not viral; it is in the top tenth. The middle half of all posts spans 1.94% to 7.01%, a gap of 5.07 percentage points, wider than the distance between most of the competing benchmarks published on this topic. The point: "good" is a range, not a number. Compare your work to a rung, not to an average.
What this corpus is, and how the labels were made#
The 460,594 posts are the entire TikTok corpus buzzabout has collected: every post pulled by a research run since tracking began. They come from 212,029 distinct creators across 4,128 topic datasets. Together they carry 130.9 billion views, 6.72 billion likes, 596.9 million shares and 72.5 million comments. The first version of this study ran on a curated slice of about 1.9% of this corpus. Every number on this page now comes from the whole of it. And the structural findings of the slice all replicate at scale: the creator effect, the promotional pattern, the like-dominated composition, the duration ladder.
The datasets the original study named, Iron deficiency in women (735 posts), Dadmode laundry stains (669), Magic tricks (500), Gymshark (500) and Sustainable luxury (430), are all still here at exactly the same size. None of them is close to the largest anymore. The largest datasets are customer research queries, which we do not name; the biggest holds 7,727 posts.
This is a sample of topic-driven content, not a representative panel of TikTok. Posts enter because somebody ran a research query on a niche. The mix leans toward food, fashion, shopping and health: the five largest categories are food and drink (54,950 posts), style and fashion (46,679), shopping (46,040), healthy living (42,544) and medical health (28,098). No single account dominates. The busiest account contributes 0.27% of posts, the ten busiest together 1.55%, and 72.6% of creators appear exactly once. Every claim below describes this corpus and nothing wider.
The formula, computed rather than read. The database stores raw counts and no engagement-rate field. So every rate on this page is computed directly as (likes + comments + shares) / views, on the 460,483 posts with a nonzero view count. The original slice of this study checked that exact numerator against the API's own rounded rate field. That is how we know the platform counts shares in engagement, rather than assuming it.
The labels are model-assigned, and here is what that costs. Every post also carries fields the platform API does not return. The pipeline reads the post content and its comment thread, then extracts what the post is trying to do, how it asks, its tone, its narrative structure and its hook. Those are not metadata. They are the output of reading.
Coverage is two-tier, and every breakdown below says which tier it stands on. Content intention (442,171 posts, 96.0%), category (456,609, 99.1%) and duration (440,324, 95.6%) cover nearly the whole corpus. The craft labels do not. Call to action, hook, tone, narrative and language exist only on the roughly 47,000 posts (10.3%) that went through a full content-analysis run. That deep-labeled subset is not a random sample. Customers research commercial niches, so it is heavy on promotional content. And the posts outside it engage differently: rows with no intention label run at a median of 4.86%, against 3.92% for labeled ones. So the intention breakdowns below describe a slightly lower-engagement slice of the corpus. Where a breakdown runs on the deep subset, it says so, and it describes that subset rather than the platform. A single misclassified post moves one cell in one breakdown by one post in hundreds or thousands.
This is also why no published benchmark on this topic slices engagement by intention. Counting how often a keyword appears cannot produce that column. Reading what a conversation is about can.
Why does every TikTok engagement rate benchmark report a different number?#
Because they measure two different quantities and call both "engagement rate". We pulled the first page of search results for "average tiktok engagement rate" and read what each source actually reports.
| Source (position) | Published figure | Denominator |
|---|---|---|
| Phlanx (1) | 5.60% at 1K to 5K followers, 2.43% at 5K to 20K, 2.15% at 20K to 100K, 2.05% at 100K to 1M, 1.97% above 1M | per follower |
| Hootsuite (2) | 1.5% | not stated |
| Influencer Marketing Factory (3) | 8% median, 7.4% to 8.1% by follower band | not stated |
| Rival IQ (4) | 3.4% median | per view |
| Social Cat (5) | 4% to 8% | not stated |
| Influencer Gift Form (6) | 2.5% | not stated |
| Brandwatch (7) | 4.07% | not stated |
| Socialinsider (8) | 3.30% | per view |
| buzzabout (this study) | 3.95% median, 5.38% mean | per view |
Line the per-view sources up and most of the disagreement vanishes.
Three samples inside a band 0.65 points wide, while the table as a whole spans 1.5% to 8%.
The per-follower sources tell a different story. Their rates fall as an account grows: Phlanx has engagement dropping from 5.60% at 1K to 5K followers down to 1.97% above a million. That is a real pattern, but it is a pattern in a different quantity. Views and followers are not the same denominator. A small account with a video in the For You feed can have more views than followers.
Two quantities, one name. That accounts for most of the visible fivefold disagreement, and it is a labeling failure rather than a measurement failure. The rest is sample composition: which creators, which niches, how many of each. Our per-view number sits about half a point above the other two per-view sources for exactly that reason. Composition is mostly creator mix, and creator mix is the subject of the rest of this article. The rule to take away: before comparing two benchmarks, check the denominator. Per-view and per-follower numbers cannot be compared, only confused.
Average or median, and the shape of the tail#
The mean is 5.38% and the median 3.95%, and 63.7% of posts sit below the mean. When nearly two thirds of a population sits below average, the average is describing something other than a typical member.
Concentration is the reason. A thin top layer of posts collects most of the engagement.
Sort posts by absolute engagement and the top 1% holds 59.8% of every like, comment and share; the top 10% holds 92.7%. Sort by engagement rate instead and the top decile, 46,048 posts, still accounts for 46.2% of all events. We report shares of actual engagement events here, 7,391,387,030 of them, not sums of rates, because a sum of rates is not a quantity. The raw counts are just as skewed: mean likes run 52 times the median, 14,597 against 283.
Then there is what the metric is made of.
Ninety percent likes. Engagement rate is a like rate wearing a broader name. So any single-number TikTok benchmark, ours included, is a statement about the tail of a like-dominated distribution, not about a typical post. Trust medians. When a source quotes only an average, assume the tail wrote it.
Which variable actually explains a post's engagement rate?#
Not the hook. Not the length. Not the hour. The account.
Here is the test. Rank every post by engagement rate. Then measure how much of that ranking each variable explains, on a scale where 1.000 means the variable fully decides a post's place and 0.000 means it tells you nothing. (The exact statistic is in the Methodology.) We use ranks rather than raw values because, with a p99 of 22.51%, a handful of monster posts would otherwise dominate the math.
Every score needs a floor. A variable that splits posts into thousands of groups scores something by luck alone. So for each variable we also shuffled the ranks at random inside the same group sizes and recomputed, fifty times. That is the score chance would produce.
The comparison has to be like for like, so the test runs on the 156,651 posts from the 7,565 creators with 8 or more posts in the corpus, with a minimum of 8 posts per group. The craft variables exist only on the deep-labeled subset, so their samples are much smaller, roughly 12,000 to 14,000 posts each.
Creator scores 0.662 against a chance floor of 0.048. That is nearly fourteen times its own floor and about six times the strongest content variable. The other floors are small: topic dataset would score 0.018 by chance, tone of voice 0.015, everything else 0.004 or less.
An obvious objection: creators cluster inside topics, so maybe "creator" is really "niche" in disguise. We checked by computing the creator effect inside single topic datasets, where every post is about the same subject. The eight largest datasets with enough qualifying creators (at least 2 creators with at least 8 posts inside the dataset) are all customer research queries, so the rows are anonymized.
The weighted mean across those eight is 0.528, on 10,203 posts, against chance floors of 0.001 to 0.062. Dataset H has only two qualifying creators, so its near-zero score measures the shortage of creators, not the absence of the effect. And content intention inside the same datasets mostly collapses: it runs between 0.009 and 0.095 across the seven datasets where it can be computed.
So the objection fails. Hold the topic constant and the creator effect stays. The only variable that rivals creator is the topic itself, at 0.425, and that is a fact about the niche, not about the video either. Both terms that matter sit above the post. Plainly: who posts, and in which niche, predicts engagement about six times better than anything about the video. So before you copy a viral video's format, check whose account it sat on.
What the post asks of the viewer, and why the gap is not a lever#
One content axis does move the median visibly, and it is not craft. It is what the post asks the viewer to do.
Sample sizes: promotional 213,266, informational 107,058, engagement 39,037, entertainment 31,695, self-presentation 19,155, emotional 18,233, persuasive 13,621. Promotional is the largest labeled group, 48% of all labeled posts. It is also the worst performing one: 2.86%, against 4.94% for everything else. The gap is 2.08 percentage points.
The call to action shows the same axis. This breakdown runs on the deep-labeled subset, and the labels are the model's own vocabulary, so near-duplicate spellings exist as separate labels. Here is every call to action with at least 400 labeled posts.
The shape is one gradient. Free, on-platform asks sit at the top. Asks that cost the viewer money, or a click away from the app, sit at the bottom: purchase 1.67%, click link 1.75%, visit store 1.55% (n = 396), shop 1.16%, shop now 0.75%. The smaller cells stretch the same gradient further: comment to engage prints 5.02% on 85 posts, share 4.20% on 166. Take the small cells at face value and the top-to-bottom factor is 6.7. Stick to cells with hundreds of posts and the honest pair is share at 4.20% against purchase at 1.67%, a factor of 2.5. Either way the direction is the same: asking for something free beats asking for money.
One disclosure the subset demands: the 413,154 posts with no call-to-action label at all run at a median of 4.04%, above the labeled baseline. The deep-labeled subset skews promotional, and it shows.
The promotional penalty also replicates within category. It holds in 36 of the 39 categories with enough posts on both sides, from pets (2.73% on 5,273 promotional posts against 7.04% on 8,951 others) to food and drink (3.23% on 28,974 against 4.58% on 25,027). The three reversals are all news-adjacent: in crime (3.66% against 3.38%), politics (5.17% against 4.13%) and war and conflict (4.84% against 3.49%), promotional posts outperform. Selling something is a handicap everywhere except where the surrounding content is grim.
This is the strongest content finding in the piece. It survives most of the test that matters, but not all of it.
Inside an account, most of the gap disappears, but not all of it. Take the 7,367 creators who posted at least 2 promotional and at least 2 non-promotional posts, and compare each creator against themselves. The median within-creator difference is 0.31 percentage points against promotional. The middle half of creators falls between 1.56 points down and 0.51 points up. Non-promotional posts win for 4,457 of the 7,367 creators, 60.5%. A split that lopsided is not luck; the odds of it under a fair coin are below one in a thousand (the exact test is in the Methodology). The original slice of this study ran the same test on 61 creators and could not tell the difference from zero. At 7,367 it is unambiguous: a within-account promotional penalty exists. It is also small. About a third of a point, against a cross-post gap of 2.08.
Most of the gap lives between accounts. Split accounts with 3 or more labeled posts by whether their posts are majority promotional. For the 13,730 promotional-majority accounts, the typical account median is 2.77%; for the 16,141 other accounts, 4.98%. That account-level gap of 2.21 points reproduces the entire 2.08-point gap measured across all posts.
So the promotional penalty is mostly a property of the kind of account that posts promotions, and only slightly a property of the promotion. If you run a feed that is mostly product posts, your whole feed engages at a lower rate, and no single non-promotional video will buy that back. Inside the feed the lever exists, but it moves about a third of a point, not two. Fix the mix, not the post.
What gets people to comment is a different ranking#
Comments are one percent of all engagement. So engagement rate is close to a like rate, and it tells you almost nothing about whether anybody said anything. Rank the same intention groups by comments per view and the order changes.
The ranking flips. Persuasive posts sit fourth on engagement rate and first on comments, and 1.81% of their engagement is comments against 0.67% for entertainment. Entertainment drops from second on rate to sixth on comments: it collects likes and little conversation. Even the posts explicitly built to start a conversation sit fourth, at 0.116% of views. Arguing a case pulls more replies than asking for them. Persuasive posts are also the most shared, at 0.227% of views against 0.099% for promotional. Promotional is last on both metrics. The posts people answer and forward are the ones that take a position.
The calls to action reorder too, and here asking does work. The comment family dominates comments per view: comment to engage 0.406% (n = 85), comment engage 0.163% (156), comment 0.110% (716), comment / engage 0.108% (3,451), against 0.028% for click link (2,638) and 0.032% for purchase (2,143). Save asks, respectable on engagement rate, produce almost no conversation at 0.037% (218).
The metric the whole industry benchmarks and the outcome most teams actually want are not the same ranking. If what you want is conversation, benchmark comments per view, not engagement rate. This is also the one breakdown on this page that cannot be built from post metadata, because it needs somebody, or something, to have read what the posts were doing.
Everything else that barely moves the number#
Eleven more breakdowns, one table. Each row shows the best and worst cell, how much of the ranking the variable explains, and the level it would reach by chance. Rows marked with an asterisk run on the deep-labeled subset, about a tenth of the corpus.
| Variable | Best cell | Worst cell | n | Share explained | Chance |
|---|---|---|---|---|---|
| Tone of voice* | Playful and confident 8.29% (89) | Enthusiastic promotional 1.23% (250) | 43,578 | 0.103 | 0.010 |
| Category | Books and literature 9.54% (4,900) | Shopping 2.21% (46,040) | 456,498 | 0.100 | 0.000 |
| Language* | Chinese 5.44% (49) | Turkish 0.13% (1,137) | 47,113 | 0.071 | 0.001 |
| Narrative structure* | Chronological story 5.16% (549) | Product showcase 1.87% (111) | 46,182 | 0.046 | 0.001 |
| Duration | Over 5 min 5.25% (80) | 15 to 30 s 3.32% (85,359) | 440,232 | 0.028 | 0.000 |
| Hook* | Humor / cultural reference 5.35% (107) | Urgency / FOMO 1.58% (99) | 45,662 | 0.015 | 0.003 |
| Hour of day (UTC) | 22:00 4.57% (22,301) | 09:00 3.11% (13,147) | 460,483 | 0.012 | 0.000 |
| Month posted (last 12) | Best month 5.06% (8,993) | Worst month 3.93% (19,947) | 460,467 | 0.009 | 0.000 |
| Caption length | Under 50 chars 4.77% (37,429) | 250 to 500 chars 3.54% (79,320) | 460,483 | 0.009 | 0.000 |
| View band | 1M to 10M 4.93% (18,238) | Over 10M 3.26% (2,013) | 460,483 | 0.005 | 0.000 |
| Day of week | Sunday 4.13% (51,534) | Friday 3.87% (69,696) | 460,483 | 0.001 | 0.000 |
Four rows deserve prose.
Duration runs against the received advice. The full ladder: under 15 seconds 3.71% (n = 73,409), 15 to 30 seconds 3.32% (85,359), 30 to 60 seconds 3.55% (117,815), 1 to 2 minutes 4.59% (118,703), 2 to 5 minutes 5.21% (44,866), and a small over-5-minute band at 5.25% (80).
Longer is better here. The worst band, 15 to 30 seconds, is the one most short-form advice recommends. The original slice found the same ladder with the same worst band, so this shape has survived a fiftyfold scale-up. Before anyone reworks a content plan on it: duration explains 0.028 of the ranking, against a chance level of 0.000. It is real and it is small. And it is at least as likely to reflect which creators make long videos as what length does to a viewer. The takeaway is defensive: do not cut a good two-minute video to fifteen seconds because a listicle told you to.
More reach does not cost engagement, except at the very top. Sort all 460,483 posts by views and cut them into ten equal deciles.
The shape is a U. The rate bottoms out in the middle of the range, around five to ten thousand views, at 3.49%. The most-viewed tenth holds the highest median, 4.92%. There is no decay law: earning ten or a hundred times the reach does not cost engagement rate, and the per-follower intuition that rates must fall as you grow does not appear in per-view data. The exception sits at the extreme. The 2,013 posts above 10 million views engage at 3.26%, the worst of any named view band. A mega-viral post reaches far past the audience that had any reason to engage with it, and the rate shows it. Do not fear growth; only mega-virality dilutes the rate.
Hook is the variable the how-to industry sells hardest. It explains 0.015 of the ranking, against a chance level of 0.003, on the deep-labeled subset of 45,662 posts. The spread between the best and worst of the 49 hook labels with at least 40 posts is 3.77 percentage points. That is less than the spread between one creator and another inside a single niche. Posts with no detectable hook at all sit at 3.06% (n = 5,445), mid-pack, below many engineered hooks and above the worst of them. We are not claiming hooks do not matter. We are reporting that which hook a post used does not predict where it lands. Spend the hook-engineering hours on the account instead.
The language row is a trap, and we print it as a worked example. It scores 0.071, which looks like the third strongest variable on the page. But it runs on the 10% deep-labeled subset, and its worst cell does all the work: the 1,137 Turkish-language posts at 0.13% come overwhelmingly from one commerce-heavy customer dataset. Remove one research query and the row deflates. A strong-looking score on a small, non-random subset is not a finding.
One aside the slice could not support: the corpus now holds 584 image posts with views, 0.13% of the total, and their median engagement rate is 1.66%, less than half the corpus median.
Enough to report, not enough to build a format strategy on.
What this data cannot tell you#
It cannot tell you whether one video was good. Inside a single creator's own feed, the post at their 90th percentile earns 2.64 times the engagement rate of the post at their 10th percentile. That is the median ratio across the 7,507 creators with 8 or more posts and a non-zero p10. Even an account with a stable, predictable rate spans nearly threefold across its own posts.
It cannot give you a per-follower benchmark. The posts carry no follower count, so every number on this page is per view. Most competing sources publish exactly the per-follower figure, so you cannot compare theirs to ours.
It is not a panel of TikTok. Posts enter through research runs on specific niches. Food and drink is the largest category at 54,950 posts, followed by style and fashion and shopping. A corpus with that shape earns the right to describe a distribution, not the right to describe the platform.
It is correlation, all of it. The promotional finding is the worked example: a 2.08-point gap that looks causal across posts, shrinks to a third of a point inside accounts, and belongs mostly to which accounts post promotions. Every other breakdown in this article is exposed to the same problem, and most of them have not been tested against it as carefully.
Outliers kept, flagged, not cleaned. Ninety-nine posts exceed 100% engagement rate and 349 exceed 50%, consistent with reshared or aggregated view accounting; the highest prints 14,842% on a handful of engagements over a tiny view count. We kept them; they do not move the median. Another 2,858 posts, 0.62%, sit at exactly zero engagement. We kept those too.
How to use a TikTok engagement rate benchmark without fooling yourself#
- Compute per view. Likes plus comments plus shares, divided by views. Compare that to a per-follower figure and you will draw a conclusion about nothing.
- Use at least 50 of your own posts. Fifty is not a round number. It is where the measurement error gets smaller than the effect you are trying to see. We resampled our own corpus 2,000 times at each sample size and measured how wide the 90% interval around a measured median comes out:
At 10 posts the interval runs 2.13% to 6.75%, wide enough to contain almost every published benchmark on this page at once. At 20 it is still wider than the 2.21-point account-level effect it would need to detect. At 50 it drops below that effect for the first time. Past 100, each extra post buys very little.
- Compare your median to percentiles, not to an average. Place it against p25 1.94%, p50 3.95%, p75 7.01%, p90 11.11%.
- Segment your own posts before you compare them. Split by intention, by length, by whatever you actually vary, and compare each segment to its own history rather than to a global figure.
- Expect a small promotional penalty inside your own feed, and a large one from your feed's mix. Within a single account, promotional posts run about a third of a point below the account's own median. The two-point version of the gap belongs to account type: feeds that are mostly product posts engage lower as a whole.
- Read a single video against your own distribution, never against ours. One post above your p75 is a good post for you. One post above 11.11% is a good post for a topic-driven sample of somebody else's niches.
A benchmark tells you whether a body of work is normal. That is a real and limited thing to know, and most of this page exists to say how limited. The question it leaves open is the one worth answering: why does this audience respond to some posts and not others. Answering that needs the content and its comment threads read and classified across the networks the audience actually uses, which is a different job from tracking how often a keyword appears. That is what buzzabout does, and it is the reason the intention and comment breakdowns above exist at all.
Related benchmarks#
The Instagram engagement rate benchmarks study runs the same method, the same classifier disclosure and the same tests on the Instagram half of the same database: median 2.41% and mean 3.52% across 245,559 posts with published view counts.
Our best time to post study ran on this same tracked corpus, measured views rather than engagement rate, and found TikTok's 16:00 to 21:00 UTC window worth up to 77% more median views than the early morning. This study finds the same evening pattern on the other metric.
Every hour from 15:00 UTC through 01:00 holds a median above 4%, with the peak at 22:00 (4.57%) and the trough at 09:00 (3.11%). But the hour explains only 0.012 of the ranking. Put the two together and the honest joint statement is: the posting hour buys arrivals, and it barely moves the rate at which the arrivals react. Hours are UTC in both studies with no audience-timezone correction, which is a limit here and the reason the timing article is the deeper treatment of it.
Methodology#
Data. 460,594 public TikTok posts, the full corpus collected by buzzabout research runs, spanning 212,029 creators and 4,128 topic datasets. 460,483 carry a nonzero view count and enter the rate calculations; 111 were dropped for zero views. No TikTok view count in the corpus is flagged as estimated (0 of 460,594 rows).
Engagement rate. (likes + comments + shares) / views, computed per post from raw counts. The database stores no per-post engagement-rate field, so there is nothing to read and round: the rate on this page is the definition itself. The original slice of this study verified this numerator against the API's rounded per-post rate field, which is how we know shares belong in it.
Statistics. Medians and percentiles throughout, because the distribution is heavy-tailed. Variance shares are eta squared computed on engagement-rate ranks, reported in the body text as the share of the ranking a variable explains, with a permutation baseline generated by shuffling ranks within the same group structure 50 times. Cells need at least 40 posts (30 in the call-to-action breakdown). The within-creator promotional test is a paired comparison of per-creator medians with a two-sided sign test. Sample-size intervals come from 2,000 bootstrap resamples per cell.
What these numbers are. Population patterns in a topic-driven corpus, useful as a distribution to place your own work against, and not a controlled experiment on your account or a census of TikTok.
