Skip to tool

Calculator to measure Instagram post reach

Calculate your Instagram engagement rate and reach, potential virality and other metrics. All free, right in your browser.

Post reach
3.8%
Median reach
3.2%
Virality index
0.7%
Best hour
19:00
The analysis runs locally in your browser. We don't send your data anywhere.

Instagram Reach Calculator

Post reach (Engagement Rate)
0%
Virality index
0%
Formulas: Post reach = (likes + comments + saves + shares) / (base) × 100. Virality index = (saves + shares) / (base) × 100.

Estimate profile view frequency

Frequency = impressions ÷ followers. Optionally, you can enter your exact reach from IG.

Impressions help estimate view frequency (how many times, on average, a person saw your profile/content).

Where do I find them on Instagram?
  • Open Instagram (mobile) → switch to a Professional/Business account.
  • On your profile, select Professional dashboard → Insights (overview).
  • In Insights, choose a period (7/30/90 days). You'll see Reach and often also Impressions for the account.
  • For individual posts, tap View insights – the details screen shows the metric Impressions.
View frequency (optional)
—

Want your profile to grow?

Followers and likes delivered in minutes. No password, with a guarantee.

View packages

How exactly we calculate Instagram engagement (methodology)

Engagement rate (ER) is the most widely used indicator of organic content quality on Instagram. It shows what share of your audience you managed to engage – typically through likes, comments, saves or shares. In this tool, we calculate ER_post for each post as well as aggregate metrics, so we can clearly determine what works and when it's best to post. The entire calculation runs locally in your browser, so no data is sent to a server.

The basic formula for a single post is: ER_post = (likes + comments + saves + shares) / (reach || followers_at_time) * 100. This means we add up the interactions and divide them either by reach or by the number of followers at the time of posting (followers_at_time). The recommended base is reach, because it better reflects how many people actually saw the post. If you don't have reach data, you can use follower count as a proxy. You can switch the base in the “Calculation settings” section.

For overall values, we use two approaches. ER_overall_simple is the simple average of all ER_post (optionally after excluding outliers using IQR). ER_overall_weighted takes reach size into account: it multiplies ER_post by the selected base for each post and sums the results, which in practice equals sum(interactions)/sum(base) * 100. This prevents a few small posts with randomly high ER from deciding the result.

Virality index and why it matters

The virality index tracks only “shares” and “saves”: Virality = (saves + shares) / (base) * 100. In practice, this means it measures how often people save content for later or pass it on. Educational and “how-to” formats tend to have higher virality, while quick entertainment is dominated by likes and comments. If your virality index is growing, it's a strong signal that you're creating content with long-term value. The tool calculates this metric automatically and also uses it in its recommendations.

IQR outlier detection

Every profile occasionally hits an exceptionally viral format or giveaway, or rides a trend. These spikes can skew the average. That's why we offer filtering using IQR (interquartile range). We calculate the Q1 and Q3 percentiles for all ER_post, the difference is the IQR. We consider outliers to be values lower than Q1 − 1.5 × IQR or higher than Q3 + 1.5 × IQR. The “Include/exclude outliers in aggregations” toggle determines whether these extremes are part of the average, median and other aggregations. Median ER is more resistant to outliers, so it's a good idea to track it alongside the averages.

When to choose reach vs. followers_at_time

If you have reach for most posts, always prefer it as the base for calculating engagement rate. It better reflects your real audience and accounts for cases where a post didn't reach your entire follower base. The alternative is followers_at_time, ideally filled in as accurately as possible at the time of posting. The tool also keeps things consistent: if you choose followers as the base for ER, it uses them to calculate the weighted average too.

How to interpret median vs. average

The average (ER_overall_simple) is intuitive but can be skewed by spikes. Median ER is the middle value of the distribution and often better reflects the typical performance of a regular post. If the median is significantly lower than the average, it suggests a few “rockets” pulled the average up. Conversely, a median higher than the average signals a long “tail” of weaker results. Compare both values.

How to use this tool (without import)

This version is designed for quick manual calculations: fill in your followers and interactions and you'll instantly see “Post reach (Post engagement)” and “Virality index”. For view frequency, use the separate section to enter Impressions and follower count.

The most common import errors are a wrong date format and a missing base. The tool will alert you to these and tell you what was filled in by default (e.g. interactions set to 0). If you need to fill in followers_at_time, but only have a table of follower growth, we recommend approximating the value with linear interpolation between two known data points.

Find the best time to post

The “Hour × Day” heatmap shows the average ER_post for individual hours and days of the week. The color intensity tells you when your content gets above-average engagement. For example, if it turns out that ER is consistently higher between 18:00 and 21:00 on weekdays, that's a strong candidate for testing. But also consider seasonality and the impact of campaigns – a short period can create misleading patterns.

The ideal approach is an A/B test: pick 2–3 times favored by the heatmap and publish the same type of content at those times for several weeks. Track the change in ER, but also Virality. It's important to keep the format (e.g. carousels) and topic consistent so the test isn't skewed by other factors.

Worked calculation examples

Let's take three posts in one week. P1 (carousel) has a reach of 8,000, interactions: 320 likes, 28 comments, 62 saves, 20 shares. P2 (reel) has a reach of 15,000, interactions: 420 likes, 34 comments, 120 saves, 70 shares. P3 (post) has a reach of 4,000, interactions: 110 likes, 12 comments, 16 saves, 8 shares. For ER_post we get: P1 = (320+28+62+20)/8,000×100 = 5.375%, P2 = (420+34+120+70)/15,000×100 = 4.97%, P3 = (110+12+16+8)/4,000×100 = 3.65%. ER_overall_simple = (5,375 + 4,97 + 3,65) / 3 = 4,66 %.

For ER_overall_weighted we add up the interactions and divide by the sum of the selected bases. Here the base is reach: total interactions = 430 + 644 + 146 = 1,220; total reach = 8,000 + 15,000 + 4,000 = 27,000. The result ER_overall_weighted = 1,220/27,000×100 = 4.52%. We can see that the weighted average is lower because the high-reach post (reel) had a relatively lower ER than the carousel.

For Virality (for P2: (120+70)/15,000×100 = 1.27%), we track the content's ability to “travel” and stay relevant. If median ER were 3.8% and the average 4.6%, the difference would point to a few outlier successes. The IQR test excludes extremes: we calculate quartiles from ER_post, get the IQR and eliminate values outside the interval [Q1 − 1.5×IQR, Q3 + 1.5×IQR]. The aggregations then reflect “typical” performance.

What to do based on your results: actionable recommendations

The tool generates concise insights and an action plan. Below are typical scenarios and how to respond:

  • Low ER: Shorten your captions, add a clear call-to-action, post more swipeable carousels and make the first slide stand out.
  • High saves (Virality ↑): Increase the share of tutorials, checklists and downloadable templates. Save-worthiness is a signal of value.
  • Low consistency: Plan content batches (e.g. 3× Reels + 2× carousels per week) and recycle older successful formats.
  • Reels dominate: Look for a repeatable format, hook viewers within 2 seconds and test lengths of 7–15 s.
  • Carousels outperform: Create mini-series and educational sequences. Optimize the first and last slides.
  • ER_weighted ≠ ER_simple: If the weighted value is significantly lower, posts with large reach have weaker ER – they need better quality.
  • No reach data: Use followers as the base and track trends rather than absolute comparability with other tools.

FAQ

I don't have reach data – does it still work?

Yes. Choose the base followers_at_time. The results will be suitable for trend comparisons and internal benchmarking.

Why does my ER differ from other tools?

Each tool may use a different base (reach vs. followers), a different selection of interactions or include outliers. Here, everything is transparent and configurable.

How exactly does the PDF export work?

The page temporarily switches to a “print skin” for better readability and is rendered using html2canvas into jsPDF. Charts are converted to images.

Do I need an API key?

No. Everything runs only in your browser, without a server or API.

How does the weighted average work and when should I turn it on?

The weight corresponds to the selected base (reach/followers). Turn it on if you want reach size to determine the result.

What are outliers and why include (or exclude) them?

Outliers are extreme values based on IQR. Including or excluding them affects the average; the median stays more stable.

Can I edit the data manually?

Yes. In the “Manual entry” section, you can add rows and instantly recalculate the metrics.

Do you support Reels views?

Yes, they're optional. ER is calculated from “reach” or “followers”, not views, but you can track views alongside.

Is the output suitable for client reports?

Yes. The PDF export includes a cover page with key metrics, charts and recommendations.

Can I set custom thresholds for recommendations?

Yes, the thresholds are easy to adjust in the JS code (e.g. virality_threshold).

How secure is my data?

All calculations run locally. We don't send anything, and files aren't even uploaded to a server.

How large a CSV can it handle?

We recommend up to ~10–20 thousand rows for smooth performance on a typical laptop. Close any other resource-heavy apps you have open.

Mini case study (fictional data)

A marketing-focused profile posted irregularly 2–3× a week, mostly single-image posts. Average ER hovered around 1.4%, the median at 1.2% and virality at 0.3%. After analyzing the heatmap, the team decided to move posting to weekdays between 18:00 and 20:00, added 2 carousels a week and 1 educational summary reel. After 6 weeks, ER rose to 2.1%, the median to 1.8% and virality to 0.8%. The biggest improvement came from save-worthy carousels with a clear CTA: “Save this for later”.

Glossary

ER (engagement rate): Share of interactions relative to the selected base (reach/followers).

Reach: Number of unique accounts that saw the post.

Impressions: Total number of views (including repeat views).

Virality: Saves + shares relative to the base; a proxy for the long-term value of content.

Median: The middle value of a distribution; more resistant to outliers.

IQR: Interquartile range (Q3 − Q1), used to detect outliers.

Consistency: Number of posts per week in a given period.

Final CTA

Run a free analysis and save your results to a PDF report. For the best interpretation, track the average, median and virality index together.

Advanced Instagram Engagement Calculator
Glass panels, IG gradient, exports and analytics — no server.
Legal notice: This tool is not officially affiliated with Instagram.