The average TikTok engagement rate in our data is 5.38%, and 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 since October 2020, dividing likes plus comments plus shares 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. The identity of the account explains roughly six times more of a post's engagement than the strongest measurable thing about the post itself. Which means every benchmark on this page, ours included, can tell you whether a body of work is normal, and 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 object to compare against, so here is the whole distribution.
TikTok engagement rate distribution. Denominator: (likes + comments + shares) / views. n = 460,483 posts with views, published October 22, 2020 to July 23, 2026.
| Percentile | Engagement rate |
|---|---|
| p10 | 0.80% |
| p25 | 1.94% |
| p50 (median) | 3.95% |
| p75 | 7.01% |
| p90 | 11.11% |
| p95 | 14.38% |
| p99 | 22.51% |
| Mean | 5.38% |
Read it as a ladder. A post at 1.94% is not failing, it is at the 25th percentile. A post at 11.11% is not viral, it is in the top tenth. The gap between p25 and p75 is 5.07 percentage points, which is wider than the gap between most of the competing benchmarks published on this topic.
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, published between October 22, 2020 and July 23, 2026. They come from 212,029 distinct creators across 4,128 topic datasets and together 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, the creator effect, the promotional pattern, the like-dominated composition, the duration ladder, all replicate at scale.
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 verified that exact numerator against the API's own rounded rate field, so we know the platform counts shares in engagement rather than assume 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 and 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 table 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 tables below describe a slightly lower-engagement slice of the corpus. Where a table 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 table 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 are measuring two different quantities and calling both "engagement rate". We pulled the live search results for "average tiktok engagement rate" on July 22, 2026 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. Socialinsider reports 3.30%, Rival IQ 3.4%, and our corpus lands at 3.95%: three samples inside a band 0.65 points wide, while the table as a whole spans from 1.5% to 8%.
The per-follower sources tell a different story and move in the opposite direction as an account grows: Phlanx has engagement falling 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, and 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. It does not account for all of it: our per-view number sits about half a point above the other two per-view sources, and that residue is sample composition, which creators, which niches, how many of each. Composition is mostly creator mix, and creator mix is the subject of the rest of this article.
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 your population is below average, the average is describing something other than a typical member of it.
The concentration is the reason. The top decile of posts by engagement rate, 46,048 posts, accounts for 46.2% of every like, comment and share in the corpus. Sort instead by absolute engagement and the top 1% of posts holds 59.8% of all engagement events, the top 10% holds 92.7%. 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. Any single-number TikTok engagement rate benchmark, ours included, is a statement about a tail of a like-dominated distribution, not about a typical post.
Which variable actually explains a post's engagement rate?#
Not the hook. Not the length. Not the hour. The account.
To test this we rank every post by engagement rate, then measure how much of that ranking each variable accounts for (eta squared on ranks). Rank rather than raw values, because with a p99 of 22.51% the heavy tail dominates any sum of squares.
Every score needs a floor. So for each variable we also shuffled the ranks at random inside the same group sizes and recomputed, fifty times. That gives the number a variable would score by chance alone with that many groups of that size.
The comparison has to be like for like, so this table uses 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 rows exist only on the deep-labeled subset, so their samples are much smaller; the n column is per row.
| Variable | Share of ranking explained | Chance baseline | Groups | n |
|---|---|---|---|---|
| Creator | 0.662 | 0.048 | 7,565 | 156,651 |
| Topic dataset | 0.425 | 0.018 | 2,703 | 153,856 |
| Content intention | 0.115 | 0.000 | 7 | 148,873 |
| Category | 0.111 | 0.000 | 41 | 155,382 |
| Tone of voice | 0.110 | 0.015 | 188 | 12,142 |
| Call to action | 0.080 | 0.004 | 52 | 13,387 |
| Narrative structure | 0.053 | 0.003 | 36 | 13,652 |
| Hook | 0.020 | 0.004 | 60 | 13,302 |
Creator scores 0.662 against a chance level of 0.048, nearly fourteen times its own floor and about six times the strongest content variable.
An obvious objection: creators cluster inside topics, so maybe "creator" is really "niche" in disguise. We checked by computing the creator effect inside a single topic dataset, 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.
| Topic dataset | Creator, share explained | Chance baseline | Creators | n |
|---|---|---|---|---|
| Dataset A | 0.710 | 0.062 | 123 | 1,949 |
| Dataset B | 0.705 | 0.040 | 105 | 2,602 |
| Dataset C | 0.671 | 0.054 | 96 | 1,740 |
| Dataset D | 0.532 | 0.041 | 26 | 600 |
| Dataset E | 0.422 | 0.034 | 25 | 707 |
| Dataset F | 0.214 | 0.015 | 15 | 844 |
| Dataset G | 0.158 | 0.013 | 16 | 1,116 |
| Dataset H | 0.034 | 0.001 | 2 | 645 |
Weighted mean 0.528 across those eight, n = 10,203. Dataset H has only two qualifying creators, so its near-zero score measures the shortage of creators, not the absence of the effect. 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.
The only variable that rivals creator is the topic itself, at 0.425. That is a fact about the niche, not about the video either. Both terms that matter sit above the post.
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, and the worst performing one, at 2.86% against 4.94% for everything else, a gap of 2.08 percentage points.
The call to action shows the same axis. This table runs on the deep-labeled subset. Forty-two labels clear the floor of 30 posts; the table shows the 23 with at least 100 posts, and the labels are the model's own vocabulary, so near-duplicate spellings appear as separate rows.
| Call to action | Median engagement rate | n |
|---|---|---|
| Share | 4.20% | 166 |
| Comment engage | 4.01% | 156 |
| Follow | 3.95% | 1,398 |
| Use discount code | 3.94% | 142 |
| Comment / engage | 3.93% | 3,451 |
| Watch more | 3.92% | 293 |
| Comment | 3.91% | 716 |
| Sign up | 3.87% | 208 |
| Subscribe | 3.79% | 454 |
| Save | 3.77% | 218 |
| None | 3.65% | 26,267 |
| Engagement | 3.57% | 166 |
| Engage | 3.56% | 674 |
| DM | 2.96% | 165 |
| Try it | 2.75% | 582 |
| Visit profile | 2.56% | 2,037 |
| Contact us | 2.54% | 127 |
| Contact | 2.46% | 204 |
| Visit | 2.39% | 365 |
| Visit website | 2.36% | 686 |
| Click link | 1.75% | 2,638 |
| Purchase | 1.67% | 2,143 |
| Visit store | 1.55% | 396 |
The very top of the full table is small cells from the comment family: comment to engage at 5.02% on 85 posts, comment and follow at 4.49% on 69. Take those at face value and the top-to-bottom factor is 6.7, from 5.02% down to shop now at 0.75% on 47 posts. 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 and on-platform beats asking for something that costs the viewer money, and every purchase-adjacent ask sits at the bottom, purchase 1.67%, click link 1.75%, visit store 1.55%, shop 1.16%, shop now 0.75%. 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, because the deep-labeled subset skews promotional.
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, which is 60.5%, and a two-sided sign test on that split returns p < 0.001. 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: 13,730 promotional-majority accounts have a median-of-medians of 2.77%, 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.
What gets people to comment is a different table#
Comments are one percent of all engagement, so engagement rate is close to a like rate and tells you very little about whether anybody said anything. Rank the same groups by comments per view and the order changes.
| Content intention | n | Comments per view | Rank on engagement rate | Rank on comments |
|---|---|---|---|---|
| Persuasive | 13,621 | 0.175% | 4 | 1 |
| Emotional | 18,233 | 0.138% | 1 | 2 |
| Self-presentation | 19,155 | 0.127% | 3 | 3 |
| Engagement | 39,037 | 0.116% | 5 | 4 |
| Informational | 107,058 | 0.084% | 6 | 5 |
| Entertainment | 31,695 | 0.083% | 2 | 6 |
| Promotional | 213,266 | 0.055% | 7 | 7 |
Persuasive posts rank fourth on engagement rate and first on comments, and 1.81% of their engagement is comments against 0.67% for entertainment. Even the posts explicitly built to start a conversation sit fourth on comments, at 0.116% of views: arguing a case pulls more replies than asking for them. Entertainment drops from second on rate to sixth on comments, because entertainment collects likes and little conversation. Persuasive posts are also the most shared, at 0.227% of views against 0.099% for promotional. The posts people answer and forward are the ones that take a position. Promotional is last on both metrics.
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. This is also the one table on this search results 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 accounts for, 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) | 2026-07 5.06% (8,993) | 2026-04 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, and the worst band is the one most short-form advice recommends. The original slice found the same ladder with the same worst band, so this shape has now survived a fiftyfold scale-up. Before anyone reworks a content plan on that: the variable accounts for 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.
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%, and the most-viewed tenth of posts holds the highest median at 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.
Hook is the variable the how-to industry sells hardest, and it accounts for 0.015 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, 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-table, 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.
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, measured as the median ratio across the 7,507 creators with 8 or more posts and a non-zero p10. An account with a stable, predictable rate still 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. That matters because most competing sources publish exactly the per-follower figure, and 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 and 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, and 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. If you compare that to a per-follower figure 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 gets smaller than the effect you are trying to see. We resampled our own corpus 2,000 times at each sample size to find the width of the 90% interval around a measured median:
| Posts measured | 90% interval for the median | Width |
|---|---|---|
| 10 | 2.13% to 6.75% | 4.61 pp |
| 20 | 2.62% to 5.73% | 3.11 pp |
| 50 | 2.99% to 5.07% | 2.08 pp |
| 100 | 3.24% to 4.75% | 1.51 pp |
| 200 | 3.46% to 4.51% | 1.05 pp |
At 10 posts your interval is 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 tables 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, extracted the same day: 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 a week earlier, 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 accounts for only 0.012 of the ranking. Put the two together and the honest joint statement is that the posting hour buys arrivals and 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, extracted from the production database on July 23, 2026, spanning 212,029 creators and 4,128 topic datasets, published October 22, 2020 to July 23, 2026. 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, 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 table). 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.
