Back to Blog
Research

What Is a Good Engagement Rate on Instagram in 2026? (By Niche & Follower Count)

March 25, 2026
14 min read
S
By SociaVault Team
InstagramEngagement RateAnalyticsBenchmarksInfluencer MarketingSocial Media Data

What Is a Good Engagement Rate on Instagram in 2026? (By Niche & Follower Count)

You just checked your Instagram engagement rate. It's 2.4%.

Is that good? Bad? Average?

The answer is: it depends. A 2.4% engagement rate is excellent for an account with 500K followers. It's mediocre for a nano creator with 3K followers. And it's completely different depending on whether you're in fitness or finance.

The generic "3-6% is good" advice floating around the internet is useless. Engagement rate benchmarks change by follower size, content niche, content type, and year. What was good in 2023 is not what's good in 2026.

This post gives you actual benchmarks based on real data — not recycled numbers from 2021 blog posts that everyone keeps copying from each other.


How We Got These Numbers

At SociaVault Labs, we've analyzed over 50,000 Instagram accounts across 10 content niches and 5 follower tiers as part of our ongoing research into influencer authenticity and engagement patterns.

We filtered for accounts that showed signs of genuine, organic engagement — no purchased followers, no bot activity, no engagement pods. After filtering, we computed engagement rates using the standard formula:

Engagement Rate = (Likes + Comments) / Followers × 100

Calculated per post, averaged across the last 30 posts per account.

The result: clean, trustworthy benchmarks that reflect what real engagement looks like on Instagram in 2026.


The Quick Answer

If you just want the headline numbers, here they are:

Follower TierRangeAverage ER"Good" ER"Great" ER
Nano1K – 10K4.2%5.0%+7.0%+
Micro10K – 50K2.8%3.5%+5.0%+
Mid50K – 100K1.9%2.5%+3.5%+
Macro100K – 500K1.4%1.8%+2.5%+
Mega500K+0.9%1.2%+1.8%+

The pattern is clear: engagement rate drops as follower count grows. This isn't a sign of failure — it's math. When you reach 1M people, a smaller percentage will interact with any single post.

If your rate falls within the "Good" column for your tier, you're outperforming most accounts. If you're in "Great," you're in the top 10-15% of your tier.


Why Follower Count Changes Everything

This is the most important thing to understand about engagement rates, and it's the reason generic benchmarks are worthless.

Example: Two fitness creators, both posting workout Reels.

  • Creator A: 5,000 followers, 300 likes per post = 6.0% ER
  • Creator B: 400,000 followers, 8,000 likes per post = 2.0% ER

Creator B gets 26x more engagement in absolute terms. But their engagement rate is 3x lower. By the "3-6% is good" rule, Creator A looks great and Creator B looks mediocre.

That's absurd. Creator B is crushing it for a macro account.

Always compare within your tier. Anything else is comparing apples to dump trucks.


Engagement Rates by Niche (2026)

Content niche is the second biggest factor. Here are the average engagement rates for the 10 niches we track, across all follower tiers:

RankNicheAvg. ERNotes
1Education & How-to3.8%Saves drive this up — tutorial content gets bookmarked
2Food & Cooking3.5%Recipe Reels have high comment engagement
3Parenting & Family3.3%Strong community, loyal audiences
4Fitness & Health3.1%Transformation content performs, but saturated
5Entertainment & Comedy2.9%High reach but lower relative engagement
6Tech & Gaming2.6%Niche audiences, lower volume but loyal
7Finance & Business2.4%Growing fast, professional audiences
8Travel & Lifestyle2.2%Post-pandemic recovery, aspirational content
9Fashion & Style1.9%Highly commercialized, audience fatigue
10Beauty & Cosmetics1.7%Highest follower counts + highest fraud = lowest ER

The surprise winner: Education. Tutorial content — "how to edit photos," "Excel tips," "study methods" — consistently gets the highest engagement because people save and share it. The algorithm loves that.

The laggard: Beauty. This isn't because beauty content is bad. It's because the beauty niche has the highest fake follower rate at 52.1%. Inflated follower counts crush the engagement rate calculation even for good creators.


The Full Breakdown: ER by Niche × Follower Tier

Here's the complete matrix. Find your niche and your tier:

Nano Accounts (1K – 10K Followers)

NicheAverage ERGoodGreat
Education5.6%6.5%+8.5%+
Food & Cooking5.2%6.0%+8.0%+
Parenting4.9%5.5%+7.5%+
Fitness4.5%5.2%+7.0%+
Entertainment4.2%5.0%+6.5%+
Tech & Gaming3.8%4.5%+6.0%+
Finance3.5%4.2%+5.5%+
Travel3.2%4.0%+5.5%+
Fashion2.8%3.5%+5.0%+
Beauty2.5%3.0%+4.5%+

Micro Accounts (10K – 50K Followers)

NicheAverage ERGoodGreat
Education4.2%5.0%+6.5%+
Food & Cooking3.8%4.5%+6.0%+
Parenting3.5%4.0%+5.5%+
Fitness3.2%3.8%+5.0%+
Entertainment2.9%3.5%+4.5%+
Tech & Gaming2.7%3.2%+4.2%+
Finance2.5%3.0%+4.0%+
Travel2.3%2.8%+3.8%+
Fashion2.0%2.5%+3.5%+
Beauty1.8%2.2%+3.0%+

Mid-Tier Accounts (50K – 100K Followers)

NicheAverage ERGoodGreat
Education2.8%3.5%+4.5%+
Food & Cooking2.5%3.0%+4.0%+
Parenting2.3%2.8%+3.8%+
Fitness2.1%2.6%+3.5%+
Entertainment1.9%2.4%+3.2%+
Tech & Gaming1.8%2.2%+3.0%+
Finance1.6%2.0%+2.8%+
Travel1.5%1.9%+2.6%+
Fashion1.3%1.7%+2.4%+
Beauty1.1%1.4%+2.0%+

Macro Accounts (100K – 500K Followers)

NicheAverage ERGoodGreat
Education2.1%2.6%+3.5%+
Food & Cooking1.9%2.3%+3.0%+
Parenting1.7%2.1%+2.8%+
Fitness1.5%1.9%+2.5%+
Entertainment1.4%1.7%+2.3%+
Tech & Gaming1.3%1.6%+2.1%+
Finance1.2%1.5%+2.0%+
Travel1.1%1.4%+1.9%+
Fashion0.9%1.2%+1.7%+
Beauty0.8%1.0%+1.4%+

Mega Accounts (500K+ Followers)

NicheAverage ERGoodGreat
Education1.4%1.8%+2.5%+
Food & Cooking1.2%1.6%+2.2%+
Parenting1.1%1.4%+2.0%+
Fitness1.0%1.3%+1.8%+
Entertainment0.9%1.2%+1.6%+
Tech & Gaming0.8%1.1%+1.5%+
Finance0.8%1.0%+1.4%+
Travel0.7%0.9%+1.3%+
Fashion0.6%0.8%+1.2%+
Beauty0.5%0.7%+1.0%+

How to Calculate Your Own Engagement Rate

The Manual Way

Pick your last 12 posts. For each one, add likes + comments. Divide by your follower count. Multiply by 100. Average the results.

Simple but tedious.

The API Way

Pull the data programmatically and calculate it for any account — yours, a competitor's, a potential partner's:

const axios = require('axios');

const API_KEY = process.env.SOCIAVAULT_API_KEY;
const BASE_URL = 'https://api.sociavault.com';

async function calculateEngagementRate(username) {
  // Step 1: Get the profile (follower count)
  const profile = await axios.get(`${BASE_URL}/v1/scrape/instagram/profile`, {
    params: { handle: username, trim: true },
    headers: { 'X-API-Key': API_KEY }
  });

  const followers = profile.data.data.data.user.edge_followed_by.count;
  const accountName = profile.data.data.data.user.full_name;

  // Step 2: Get recent posts (likes + comments)
  const posts = await axios.get(`${BASE_URL}/v1/scrape/instagram/posts`, {
    params: { handle: username, trim: true },
    headers: { 'X-API-Key': API_KEY }
  });

  const postEdges = posts.data.data.data.user.edge_owner_to_timeline_media.edges;

  // Step 3: Calculate engagement rate per post
  const engagementRates = postEdges.map(edge => {
    const likes = edge.node.edge_liked_by?.count || 0;
    const comments = edge.node.edge_media_to_comment?.count || 0;
    const er = ((likes + comments) / followers) * 100;
    return {
      shortcode: edge.node.shortcode,
      likes,
      comments,
      engagementRate: er.toFixed(2) + '%'
    };
  });

  // Step 4: Calculate average
  const avgER = engagementRates.reduce((sum, p) => sum + parseFloat(p.engagementRate), 0) / engagementRates.length;

  console.log(`\n📊 @${username} (${accountName})`);
  console.log(`Followers: ${followers.toLocaleString()}`);
  console.log(`Posts analyzed: ${engagementRates.length}`);
  console.log(`Average engagement rate: ${avgER.toFixed(2)}%`);
  console.log(`\nPer-post breakdown:`);
  engagementRates.forEach(p => {
    console.log(`  ${p.shortcode}: ${p.likes} likes, ${p.comments} comments → ${p.engagementRate}`);
  });

  return { username, followers, avgER: avgER.toFixed(2), posts: engagementRates };
}

// Check any account
await calculateEngagementRate('natgeo');

Python version:

import requests
import os

API_KEY = os.getenv('SOCIAVAULT_API_KEY')
BASE_URL = 'https://api.sociavault.com'
headers = {'X-API-Key': API_KEY}

def calculate_engagement_rate(username):
    # Get profile
    profile = requests.get(
        f'{BASE_URL}/v1/scrape/instagram/profile',
        params={'handle': username, 'trim': 'true'},
        headers=headers
    ).json()

    user = profile['data']['data']['user']
    followers = user['edge_followed_by']['count']

    # Get posts
    posts = requests.get(
        f'{BASE_URL}/v1/scrape/instagram/posts',
        params={'handle': username, 'trim': 'true'},
        headers=headers
    ).json()

    edges = posts['data']['data']['user']['edge_owner_to_timeline_media']['edges']

    # Calculate per-post ER
    rates = []
    for edge in edges:
        node = edge['node']
        likes = node.get('edge_liked_by', {}).get('count', 0)
        comments = node.get('edge_media_to_comment', {}).get('count', 0)
        er = ((likes + comments) / followers) * 100
        rates.append(er)
        print(f"  {node['shortcode']}: {likes} likes, {comments} comments → {er:.2f}%")

    avg = sum(rates) / len(rates) if rates else 0
    print(f"\n@{username}: {followers:,} followers, avg ER: {avg:.2f}%")
    return avg

calculate_engagement_rate('natgeo')

This costs 2 API credits (1 for profile + 1 for posts). You get the engagement rate for any public account in seconds.


Reels vs. Feed Posts vs. Carousels: Which Gets Better Engagement?

Not all content types are created equal. Here's how they stack up in 2026:

Content TypeAverage ERBest For
Carousels3.1%Saves, education content, detailed information
Reels2.4%Reach, discovery, new followers
Single Image1.8%Quick updates, quotes, announcements
StoriesN/ARetention, DMs, link clicks (no public ER)

Carousels win engagement. They keep people swiping, which the algorithm counts as time-on-content. Each swipe is a signal that you're interested.

Reels win reach. The algorithm pushes Reels to non-followers through Explore and the Reels tab. You'll get more eyeballs, but a lower percentage engages.

The optimal strategy? Both. Reels to grow, carousels to engage.

Deep dive: Carousels vs. Reels: What the Data Actually Shows


What's Killing Your Engagement Rate (And How to Fix It)

If your engagement rate is below average for your tier, here are the most common reasons:

1. Ghost Followers

Old followers who stopped using Instagram, follow-unfollow bots from 2020, purchased followers that never engaged. They inflate your follower count without adding engagement.

Fix: There's no magic delete button. Focus on content that organically attracts new active followers. The ratio improves over time.

2. Wrong Content for Your Audience

Posting lifestyle content when your audience followed you for business tips. Posting Reels when your audience prefers carousels.

Fix: Check which posts get the most engagement. Double down on what works.

3. Inconsistent Posting

The algorithm favors consistency. Posting 3 times a week for a month, then disappearing for 2 weeks, tanks your reach.

Fix: Pick a sustainable frequency. Three solid posts per week beats seven mediocre ones.

4. Engagement Pods and Buying Likes

This artificially inflates some posts but tanks others when the pod doesn't participate. Instagram's algorithm also detects pod behavior and suppresses reach.

Fix: Stop. Build real engagement. Read our research on why fake engagement destroys accounts long-term.

5. Low-Quality Hooks

People scroll past your Reel in 0.3 seconds. If your first frame doesn't grab attention, you get zero engagement.

Fix: Study what works. Use the Instagram posts endpoint to analyze top-performing content from creators in your niche.


How to Track Engagement Rates Over Time

One-time checks are useful. Ongoing tracking is powerful. Here's a simple script that tracks any account's engagement rate weekly:

const axios = require('axios');
const fs = require('fs');

const API_KEY = process.env.SOCIAVAULT_API_KEY;
const BASE_URL = 'https://api.sociavault.com';

async function trackEngagement(usernames) {
  const results = [];
  const date = new Date().toISOString().split('T')[0];

  for (const username of usernames) {
    const profile = await axios.get(`${BASE_URL}/v1/scrape/instagram/profile`, {
      params: { handle: username, trim: true },
      headers: { 'X-API-Key': API_KEY }
    });

    const posts = await axios.get(`${BASE_URL}/v1/scrape/instagram/posts`, {
      params: { handle: username, trim: true },
      headers: { 'X-API-Key': API_KEY }
    });

    const followers = profile.data.data.data.user.edge_followed_by.count;
    const edges = posts.data.data.data.user.edge_owner_to_timeline_media.edges;

    const rates = edges.map(e => {
      const likes = e.node.edge_liked_by?.count || 0;
      const comments = e.node.edge_media_to_comment?.count || 0;
      return ((likes + comments) / followers) * 100;
    });

    const avgER = rates.reduce((a, b) => a + b, 0) / rates.length;

    results.push({
      date,
      username,
      followers,
      postsAnalyzed: edges.length,
      avgEngagementRate: avgER.toFixed(2) + '%'
    });
  }

  // Append to tracking file
  const logFile = 'engagement-tracking.json';
  const existing = fs.existsSync(logFile)
    ? JSON.parse(fs.readFileSync(logFile, 'utf-8'))
    : [];

  existing.push(...results);
  fs.writeFileSync(logFile, JSON.stringify(existing, null, 2));

  console.log(`Tracked ${results.length} accounts on ${date}`);
  results.forEach(r => {
    console.log(`  @${r.username}: ${r.avgEngagementRate} (${r.followers.toLocaleString()} followers)`);
  });

  return results;
}

// Track your brand + competitors weekly
await trackEngagement([
  'nike',
  'adidas',
  'puma',
  'underarmour'
]);

Run this weekly with a cron job. After a month, you'll have trend data no analytics platform gives you for competitor accounts.


FAQ

What engagement rate should I aim for?

Look at the tables above for your specific tier and niche. As a rough rule: if you're 20% above the average for your tier, you're doing well.

Does Instagram count saves and shares in engagement rate?

The standard formula uses likes + comments only, because those are publicly visible. Some marketers include saves (available for your own account via Insights), which inflates the number. Our benchmarks use the likes + comments formula so you can compare against any public account.

Why is my engagement rate dropping?

Usually one of three things: your follower count is growing faster than engagement (normal), you changed content types, or Instagram's algorithm shifted distribution. Check the algorithm changes analysis for recent shifts.

Are Reels engagement rates calculated differently?

Same formula — (likes + comments) / followers × 100. Some people use views instead of followers as the denominator for Reels, which gives a much lower number. We use followers for consistency across content types.

How do I check a competitor's engagement rate?

Use the API approach shown above. The Instagram profile endpoint gives you their follower count, and the posts endpoint gives you likes and comments per post. Two API calls, done.


Get Started

Want to benchmark your own engagement rate — or audit competitors?

Sign up free and get 100 credits to start. The profile + posts endpoints cost 2 credits total, so that's 50 engagement rate calculations out of the box.

Full API documentation: docs.sociavault.com/api-reference/instagram/profile


Found this helpful?

Share it with others who might benefit

Ready to Try SociaVault?

Start extracting social media data with our powerful API. No credit card required.