Total number of unique accounts who saw the story.
Number of DMs received directly from this story.
Includes Polls, Questions, Sliders, Links, etc.
Number of times the story was shared.
Taps on your username/profile from the story.
Any other positive signals tracked.
0.00%
Engagement Rate
Total Reach:0
Total Interactions:0
Interactions per 100 Views:0
How to Calculate Instagram Story Engagement Rate
Calculating your Instagram Story Engagement Rate is crucial for understanding how well your audience connects with your transient content. Unlike feed posts where likes and comments are public, story engagement is private and relies on specific actions taken by the viewer.
This calculator helps social media managers, influencers, and brands determine the effectiveness of their stories by aggregating all positive interaction metrics and comparing them against the total reach.
The Formula
While there are different ways to calculate engagement, the most accurate method for Stories is measuring actions against unique reach (views). The formula used here is:
To get an accurate engagement rate, you must sum up all active participations. Passive views do not count as engagement.
Replies (DMs): Direct messages sent in response to the story. This is a high-value engagement signal.
Sticker Taps: Interactions with interactive elements like Polls, Quizzes, Question boxes, Slider emojis, and Link clicks.
Shares: When a user sends your story to another user via DM.
Profile Visits: When a user taps your avatar or username in the top left corner to visit your main profile.
What is a Good Instagram Story Engagement Rate?
Benchmarks vary by industry and follower count, but generally, story engagement rates are lower than feed engagement rates because the content is ephemeral.
Below 2%: Low engagement. Consider adding more interactive elements like polls.
2% – 5%: Average engagement. Your audience is consuming your content normally.
5% – 10%: High engagement. Your content resonates well.
Above 10%: Excellent. This usually happens with highly viral content or very loyal micro-communities.
Why Use Reach Instead of Follower Count?
Many engagement calculators divide by total followers. However, for Instagram Stories, not all your followers will see your story. The algorithm filters content, and some users simply don't watch stories daily. Dividing by Reach (the people who actually saw the story) gives you a true performance metric of the content itself, rather than a metric of your account's algorithmic visibility.
Tips to Boost Your Story Engagement
If your calculation shows a low rate, try these tactics:
Use Stickers: Polls and sliders are low-friction ways for users to interact.
Add Captions: Many users watch stories with sound off. Captions keep them on the screen longer (retention) and encourage reading.
Ask Questions: Use the Question sticker to prompt specific replies.
Post Consistently: Posting at the right time ensures higher reach, which is the denominator of your equation.
function calculateEngagement() {
// Get values from inputs
var reach = document.getElementById('igReach').value;
var replies = document.getElementById('igReplies').value;
var stickers = document.getElementById('igStickers').value;
var shares = document.getElementById('igShares').value;
var visits = document.getElementById('igProfileVisits').value;
var other = document.getElementById('igOther').value;
// Parse values to floats, default to 0 if empty
var reachNum = parseFloat(reach);
var repliesNum = parseFloat(replies) || 0;
var stickersNum = parseFloat(stickers) || 0;
var sharesNum = parseFloat(shares) || 0;
var visitsNum = parseFloat(visits) || 0;
var otherNum = parseFloat(other) || 0;
// Validation
if (!reachNum || reachNum <= 0) {
alert("Please enter a valid number for Story Reach (must be greater than 0).");
return;
}
// Calculate Total Interactions
var totalInteractions = repliesNum + stickersNum + sharesNum + visitsNum + otherNum;
// Calculate Engagement Rate
var engagementRate = (totalInteractions / reachNum) * 100;
// Determine Status/Benchmark
var badgeContainer = document.getElementById('badgeContainer');
var badgeClass = "";
var badgeText = "";
if (engagementRate = 2 && engagementRate = 5 && engagementRate < 10) {
badgeClass = "status-good";
badgeText = "High Engagement";
} else {
badgeClass = "status-excellent";
badgeText = "Excellent / Viral";
}
// Update UI
document.getElementById('finalRate').innerHTML = engagementRate.toFixed(2) + '%';
document.getElementById('displayReach').innerHTML = reachNum.toLocaleString();
document.getElementById('displayInteractions').innerHTML = totalInteractions.toLocaleString();
document.getElementById('displayRatio').innerHTML = (totalInteractions / (reachNum/100)).toFixed(1);
badgeContainer.innerHTML = '' + badgeText + '';
// Show result section
document.getElementById('result-section').style.display = 'block';
// simple scroll to result
document.getElementById('result-section').scrollIntoView({behavior: 'smooth'});
}