Engagement Rate Benchmark Comparator – Where Your Rate Actually Sits
A single engagement rate tells you almost nothing on its own. 4.2% is only meaningful next to other rates measured the same way, and the moment you reach for a published “industry average” to supply that context, the comparison quietly breaks: you are almost certainly holding two numbers built from different denominators. This comparator fixes that by doing the opposite of what a benchmark table does. It ships no figures at all. You supply the comparison set, it applies one stated definition to every row including yours, and it shows you the shape of the distribution you actually built.
One definition, applied to every row
Engagement rate is not standardised, so the definition is an input here rather than an assumption. Two controls set it: which interactions count in the numerator — likes, comments, shares and optionally saves — and what the denominator is: followers, reach or impressions. The resulting formula, something like ER = (likes + comments + shares) ÷ followers × 100, is pinned directly under the headline percentile and written into the first line of the CSV export. Change either control and the whole distribution recomputes, never just your own row.
The denominator is where most cross-account comparisons go wrong. Followers counts everyone subscribed whether or not they saw the post; reach counts only the unique accounts shown it; impressions counts every view including repeats. The same 1,200 interactions can be 4% on reach and 1% on impressions. Both are correct. Neither is comparable to the other.
How the percentile is calculated
The tool uses the mid-rank (Hazen) convention: (below + 0.5 × equal) ÷ n × 100, where the comparison set is the cohort rows alone and your own rate is not a member of it. Ties land halfway rather than all at the top. Quartiles and the median use linear interpolation between order statistics — R type 7, the same method as Excel’s PERCENTILE.INC — so a figure computed here matches one computed in a spreadsheet. Both conventions are named in tooltips beside the numbers, because percentile has several defensible definitions and a silent choice is unreproducible.
Percentage points are not percent
If your rate is 4.3% and the cohort median is 2.9%, the gap is 1.4 percentage points and also +48% relative. Both describe the same pair and they are constantly swapped for one another in reporting. This tool prints both, each labelled with its own unit, so a screenshot cannot be misread.
Mean, median and the pooled rate
Three averages appear, because they answer different questions. The median is the middle row. The mean averages the row rates, weighting a 300-follower post exactly as much as a 300,000-follower one — the typical post. The pooled rate adds every interaction and divides by every denominator, so the largest rows dominate — the body of work as a whole. The percentile and the quartiles are built on row rates, which puts them in the same family as the mean and the median rather than the pooled figure.
Reading the distribution strip
The strip is the point of the tool. A shaded band spans Q1 to Q3, a solid line marks the median, every cohort row is a tick on the axis, and your own rate is a tall marker with a callout. A benchmark you cited, when you add one, is drawn as a dashed reference line and excluded from every statistic — it is a number from somewhere else, not a member of your set. Ticks are keyboard-reachable in sorted order and each announces its label and rate. Below it, a sorted bar chart shows every row descending by rate with the median drawn across them, which is the view worth screenshotting.
Edge cases the tool refuses to fudge
A row with no denominator is excluded and marked, never treated as 0%. A row with zero interactions and a real denominator is a legitimate 0.00% and stays in. A rate below the display precision shows as < 0.01% rather than rounding to nothing, while full precision is kept for the maths and the export. Negative inputs are rejected at the field. And a cohort of exactly one row suppresses the percentile entirely in favour of a plain two-way comparison, because a percentile over a single value is either 0 or 100 and means nothing.