Carousels vs Reels vs Photos: Instagram Engagement by Format in 2026
On the same accounts, carousels got 9% more likes and comments than the account's usual post. Reels landed right on the usual. Single photos got 20% less.
We pulled 4,052 recent posts from 170 Instagram accounts across 15 niches in October 2026, and compared each post with the same account's typical post. That way a big account doesn't drown out a small one, and we're comparing formats rather than audiences.
One caveat before the numbers: we measured likes and comments. Reels can reach people who don't follow you, and that reach doesn't show up in likes. So carousels win on engagement per post, and Reels may still win on reach. More on that below.
Key findings
- Reels are most of what accounts post: 73% of posts, against 22% carousels and 5.5% single photos.
- Carousels do best on engagement: 1.09 times the account's usual likes and comments. Reels: 1.00. Photos: 0.80.
- Carousels beat Reels on 58% of accounts that post both.
- Smaller accounts gain most from carousels. For accounts with 10,000 to 100,000 followers, carousels got 1.30 times the usual, against 0.93 for Reels.
- Longer Reels did a little better. Reels over 90 seconds got 1.04 times the usual; 15 to 30 seconds, 0.93.
- Hashtag count made no difference, and almost nobody used more than ten.
How each format performs on the same accounts
For each account we took the median likes plus comments across its posts, then measured every post against it. A score of 1.0 is a normal post for that account. We only included accounts that post at least two formats.
| Format | Posts | Accounts | Vs the account's usual | Got 2x the usual |
|---|---|---|---|---|
| Carousels | 519 | 91 | 1.09 | 24% |
| Reels | 1,204 | 95 | 1.00 | 25% |
| Single photos | 100 | 40 | 0.80 | 17% |
The lines on the chart are 95% ranges. The carousel range sits above 1.0 and the photo range sits below it, so both gaps are unlikely to be noise. Reels and carousels hit double the usual at about the same rate, so carousels win on consistency rather than breakouts.
Why would carousels outperform? Our data can't say for sure, but the likely reason is simple: a carousel gives people more to look at, and every swipe is another moment to stop and like or comment. A Reel either holds someone or it doesn't.
Does account size change the answer?
Yes. Carousels help smaller accounts most.
| Followers | Carousels | Reels | Photos |
|---|---|---|---|
| 1k to 10k | 1.12 | 0.98 | 1.01 |
| 10k to 100k | 1.30 | 0.93 | 0.92 |
| 100k to 1M | 1.05 | 1.00 | 0.73 |
| 1M+ | 1.00 | 1.00 | 0.63 |
Figures are each format against the account's usual post. For accounts over a million followers, carousels and Reels perform the same, and single photos fall to well under the usual.
Engagement per follower tells the same story. Carousels beat Reels in every size band:
Instagram engagement rate benchmarks for 2026
Across all formats, this is what a typical post got, by account size:
| Followers | Accounts | Median likes | Median comments | Engagement per follower | Comments per 100 likes |
|---|---|---|---|---|---|
| 1k to 10k | 20 | 105 | 6 | 2.6% | 4.3 |
| 10k to 100k | 52 | 361 | 15 | 1.2% | 3.3 |
| 100k to 1M | 55 | 1,579 | 30 | 0.6% | 1.7 |
| 1M+ | 35 | 6,687 | 93 | 0.4% | 1.2 |
Two things to notice. Engagement per follower falls fast as accounts grow, from 2.6% to 0.4%. And smaller accounts get more conversation: four comments for every hundred likes, against just over one for the biggest accounts. If you're picking creators for a campaign that needs replies and questions, smaller accounts give you more of them.
How long should an Instagram Reel be?
Longer Reels did slightly better on the same accounts.
| Reel length | Reels | Vs the account's usual |
|---|---|---|
| Under 15 seconds | 410 | 0.96 |
| 15 to 30 seconds | 485 | 0.93 |
| 30 to 60 seconds | 486 | 0.99 |
| 60 to 90 seconds | 472 | 1.02 |
| Over 90 seconds | 270 | 1.04 |
The differences are small, and the ranges overlap, so this isn't a rule. But there's no sign that short Reels are rewarded. If a topic needs 90 seconds, take them.
Hashtags, captions and hidden likes
- Hashtags: posts with no hashtags, one to three, and four to ten all performed the same, at 1.00 times the usual. Only 4 of 2,751 posts used more than ten.
- Caption length: no clear effect either way.
- Hidden likes: 9% of posts hid their like count, and 28% of accounts hid it on at least one post. Small accounts hide likes more often (13% to 15% of posts) than big ones (3% to 5%). If you're benchmarking creators, those posts can't be measured, so leave them out.
So should you post carousels or Reels?
Both, for different jobs:
- Use carousels for engagement with your existing audience. They earn more likes and comments per post, especially if you have under 100,000 followers.
- Use Reels for reach. We measured likes and comments, not views. Reels are how Instagram shows your content to people who don't follow you, and that's how accounts grow.
- Drop the single photo unless it's a big moment. It was the weakest format at every size, and only 5.5% of posts used it.
A reasonable mix for a growing account is Reels for discovery and carousels for the posts you want people to save and discuss.
Check your own formats
This pulls an account's recent posts and scores each format against the account's usual. In JavaScript (Node 18 or later, as an .mjs file):
const API = "https://api.sociavault.com/v1/scrape";
const HEADERS = { "x-api-key": process.env.SOCIAVAULT_API_KEY };
const FORMAT = { 1: "photo", 2: "reel", 8: "carousel" };
// Lists can come back as arrays or as objects with numbered keys
const asList = (x) => (Array.isArray(x) ? x : Object.values(x ?? {}));
const median = (xs) => {
const s = [...xs].sort((a, b) => a - b);
const mid = Math.floor(s.length / 2);
return s.length % 2 ? s[mid] : (s[mid - 1] + s[mid]) / 2;
};
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
const engagement = (p) => (p.like_count ?? 0) + (p.comment_count ?? 0);
async function posts(handle, pages = 2) {
const out = [];
let cursor;
for (let page = 0; page < pages; page++) {
const params = new URLSearchParams({ handle });
if (cursor) params.set("next_max_id", cursor);
const res = await fetch(`${API}/instagram/posts?${params}`, {
headers: HEADERS,
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
const data = (await res.json()).data ?? {};
out.push(...asList(data.items));
cursor = data.next_max_id;
if (!cursor) break;
await sleep(1000);
}
return out;
}
const items = (await posts("natgeo")).filter(
(p) => !p.like_and_view_counts_disabled,
);
const usual = median(items.map(engagement));
const scores = {};
for (const p of items) {
const fmt = FORMAT[p.media_type] ?? "other";
(scores[fmt] ??= []).push(engagement(p) / usual);
}
for (const [fmt, vals] of Object.entries(scores)) {
console.log(
`${fmt}: ${vals.length} posts, ${median(vals).toFixed(2)}x the usual`,
);
}
And in Python:
import os
import time
from statistics import median
import requests
API = "https://api.sociavault.com/v1/scrape"
HEADERS = {"x-api-key": os.environ["SOCIAVAULT_API_KEY"]}
FORMAT = {1: "photo", 2: "reel", 8: "carousel"}
def as_list(x):
# Lists can come back as lists or as dicts with numbered keys
return list(x.values()) if isinstance(x, dict) else (x or [])
def engagement(p):
return (p.get("like_count") or 0) + (p.get("comment_count") or 0)
def posts(handle, pages=2):
out, cursor = [], None
for _ in range(pages):
params = {"handle": handle}
if cursor:
params["next_max_id"] = cursor
r = requests.get(f"{API}/instagram/posts", headers=HEADERS, params=params, timeout=60)
r.raise_for_status()
data = r.json().get("data") or {}
out += as_list(data.get("items"))
cursor = data.get("next_max_id")
if not cursor:
break
time.sleep(1)
return out
items = [p for p in posts("natgeo") if not p.get("like_and_view_counts_disabled")]
usual = median(engagement(p) for p in items)
scores = {}
for p in items:
fmt = FORMAT.get(p.get("media_type"), "other")
scores.setdefault(fmt, []).append(engagement(p) / usual)
for fmt, vals in scores.items():
print(f"{fmt}: {len(vals)} posts, {median(vals):.2f}x the usual")
Each page of the posts endpoint returns 12 posts for 1 credit.
How we did it
- Sampling: for each of 15 niches, we searched two hashtags for posts from the past week and collected the accounts behind them. We read up to 20 accounts per niche to get follower counts, then kept up to four per niche in each of four follower bands: 170 accounts.
- Posts: each account's latest posts, about 24 each, pulled on 19 October 2026 with SociaVault's hashtag search and posts endpoints. 4,052 posts in total.
- Filters: posts 3 to 180 days old with visible likes, from accounts with at least 8 such posts: 2,751 posts from 146 accounts. Format comparisons use only accounts that post at least two formats.
- Score: each post's likes plus comments divided by the account's median. Medians, not averages, so a single viral post doesn't skew the result.
- Cost: 528 credits.
Limits. We measured likes and comments, not saves, shares or reach, which only the account owner can see. Hashtag search surfaces larger accounts, so we have fewer accounts under 10,000 followers (20) than in the other bands. Single photos are rare, so their figures rest on 100 posts. The aggregated tables are in the CSV download, free to reuse with a link.
Older context on how carousels behave, from before this study, is in our carousel analytics guide. For TikTok's numbers, see TikTok benchmarks 2026.
Frequently Asked Questions
Do carousels get more engagement than Reels in 2026?
Yes, on likes and comments. On the same accounts, carousels got 1.09 times the usual engagement and Reels 1.00. Carousels beat Reels on 58% of accounts that post both. The gap is biggest for accounts with 10,000 to 100,000 followers.
Are Reels still worth posting?
Yes. Reels reach people who don't follow you, and we didn't measure that reach. Use Reels to grow and carousels to engage the audience you have.
What is a good Instagram engagement rate in 2026?
Likes plus comments per follower: about 2.6% for accounts under 10,000 followers, 1.2% from 10,000 to 100,000, 0.6% from 100,000 to a million, and 0.4% above that.
How long should an Instagram Reel be?
Length made little difference, but Reels over 60 seconds did slightly better than 15 to 30 second Reels on the same accounts. Make it as long as the idea needs.
Do hashtags still help on Instagram?
Not that we could measure. Posts with no hashtags performed the same as posts with four to ten.
Want to see which formats work for the accounts you track? Sign up for 50 free credits and run the script above.
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.