Content performance analysis is the practice of reviewing a batch of published posts together — not one at a time — to find which formats, topics, and hooks reliably earn results, and then changing what you publish next because of it. It is a monthly ritual, not a dashboard you stare at daily. Done properly it takes about half an hour and produces two lists: what to make more of, and what to stop making entirely.
Almost nobody runs it. What most teams do instead is check the notifications on the post they published yesterday, feel good or bad about the number, and carry on. That is not analysis. That is weather.
Why the last 48 hours lie to you
Judging content on recency has three specific failure modes, and you have probably hit all of them.
Recency bias. The post you published Tuesday is fresh in your head, so it gets weighted like evidence. One post is never evidence. It is a coin flip with a caption.
Outlier worship. A single post takes off, and next month's calendar is suddenly 40% imitations of it. Outliers are usually explained by something you can't repeat — a share from a big account, a news cycle, luck in the recommendation queue.
Reach blindness. A post that reached four times as many people will almost always have more likes. Compare raw likes across posts and you're mostly measuring distribution, not content quality. This is the trap behind most of the vanity metrics that fill social reports — big, green, and directionally useless.
The fix is boring and it works: batch your posts, tag them, normalize them, and read the pattern across a group instead of the story of one post.
The monthly ritual in five moves
Here is the whole thing before we go deep. Once a month, per platform:
- Pull your top 10 and bottom 10 posts from the last 30 days.
- Tag each one by format, topic, hook, and intent.
- Normalize every metric for reach.
- Find tags that repeat in the top group and the bottom group.
- Write next month's content mix and a kill list.
That's it. No dashboards to build, no attribution model, no BI tool. A spreadsheet and thirty focused minutes.
Move 1 — Pull your top 10 and bottom 10
One platform at a time. Metrics don't translate between platforms, and an average that blends LinkedIn and TikTok is a number about nothing.
Sort the last 30 days of posts by engagement rate — interactions divided by reach — and take the top 10 and the bottom 10. If you publish fewer than 20 times a month, take the top 5 and bottom 5 and widen the window to 60 days instead. You want the extremes, because the middle of the distribution rarely tells you anything you can act on.
Two rules before you copy anything into a sheet:
- Flag boosted posts. Paid amplification wrecks the read. Either exclude them or keep them in a separate tab.
- Exclude the last three days. Recent posts haven't finished accumulating reach, so they'll land in the bottom 10 for no reason other than being young.
Most platforms let you export post-level data natively, though as of October 2024 the depth varies a lot by platform and account type. If you schedule through a tool with per-post analytics, this step is a filter and a sort rather than an export-and-merge job.
Move 2 — Tag every post the same way
This is the step everyone skips, and it is the step that creates every insight you'll get. Without tags you have twenty rows of numbers. With tags you have a categorized inventory you can slice.
Four columns, filled in by hand:
| Tag | What goes in it | Example values |
|---|---|---|
| Format | The physical shape of the post | Reel / short video, carousel, single image, text-only, link post |
| Topic | The subject, ideally your content pillar | Client results, industry news, how-to, personal story, product |
| Hook | The first line or first frame's move | Question, bold claim, number list, contrarian take, story open, direct promise |
| Intent | What the post was supposed to do | Reach, save, click, reply, sell |
The intent column matters more than it looks. A post designed to drive profile visits and a post designed to drive saves are not competing in the same race, and scoring them on the same metric will make one of them look like a failure it isn't. Deciding intent up front is really a KPI question — which metric each piece of content is accountable for.
Twenty posts, four tags, roughly fifteen minutes. It goes faster if your posts already live somewhere organized. This is the part where a scheduling tool earns its keep: in SocialKit, the visual calendar shows you the month's published posts side by side with per-post analytics, so the tagging pass is scrolling one view and typing four short words per row instead of reconstructing what you published from three different native apps.
Move 3 — Normalize for reach before you compare anything
Raw interaction counts are a function of how many people saw the post. Normalize, or you'll conclude that your best content is whatever the algorithm happened to push.
Divide everything by reach or impressions:
- Engagement rate = (likes + comments + shares + saves) ÷ reach
- Save rate = saves ÷ reach
- Click rate = link clicks ÷ reach
- Comment rate = comments ÷ reach
Then compare rates, never totals. A post that reached 2,000 people and earned 90 saves is teaching you far more than one that reached 40,000 and earned 120. If you want a consistent formula across platforms, our engagement rate calculator uses the same denominator every time so your month-to-month numbers stay comparable — and the engagement rate definition covers why the reach denominator beats the follower denominator for post-level work.
Pay particular attention to save rate and share rate. Those are the two actions that cost the viewer something — a decision to come back, or a decision to put their own name behind your content. On Instagram especially, what saves and shares tell you about a post is usually a better forecast of what to make next than the like count on the same post.
Move 4 — Look for repeats, not champions
Now read the two groups. You are not looking for the best post. You are looking for tags that appear three or more times on one side and rarely on the other.
Ask exactly these questions:
- Which format shows up most in the top 10? Does it also show up in the bottom 10? (If it appears in both, format isn't your variable.)
- Which topic appears in the bottom 10 more than twice? That's a pillar with a problem.
- Do the top posts share a hook move — all questions, all specific numbers, all contrarian openers?
- Are the bottom posts clustered at a particular publish time? Cross-check against best-time-to-post benchmarks before blaming the content.
A concrete version: a freelance social media manager running a physiotherapy clinic's Instagram tags a month of posts and finds that four of the top 10 are single-image posts with a "most people get this wrong" hook about a specific exercise, while five of the bottom 10 are polished team/clinic-culture carousels. Format wasn't the driver — carousels appear on both sides. The pattern is the hook: corrective, specific, mildly contrarian. The action isn't "make more carousels." It's "put a corrective claim in the first line of everything, including the culture posts."
That's what a pattern looks like. One post can't produce it; ten tagged posts can.
Move 5 — Write the mix and the kill list
The output of the session is not a report. It's a changed calendar. Two documents, both short.
Next month's mix. A percentage allocation: how much of next month is each pillar and each format. Move 10–20 percentage points toward the winning tags — not 100%. Overcorrecting turns a working account into a one-note account, and audiences fatigue on formats faster than you'd think. Keep a fixed slice, maybe 20%, reserved for deliberate experiments so you have new tags to analyze next month.
The kill list. Name the topics, formats, and hooks you are not making again, in writing. This is the half everyone skips, and it's the half that gives you the time to execute the other half. "We should do more X" without "we're stopping Y" just means more work at the same quality.
Kill-list candidates from a typical first pass:
| Kill | Because | Redirect the time to |
|---|---|---|
| Milestone/announcement posts | Bottom-decile on every rate, every month | The pillar that keeps topping the save rate |
| A pillar that's there out of habit | Nobody engages; it survives because it's on the calendar | Fewer, better posts in a proven pillar |
| A format that eats hours | Middle-of-pack results at 4x the production cost | Two posts in your cheapest winning format |
A kill decision needs at least three or four data points in the same direction. One flop is noise; a pillar that lands in the bottom 10 three months running is a decision.
Recycle what already proved itself
Before you close the sheet, do one more pass over the top group and ask which of those posts were published once, to one platform, and never touched again. Those are your cheapest wins next month.
Your best-performing post from 60 days ago will be new to most of the people who follow you — organic reach on any single post is a fraction of your audience. Content repurposing is usually the highest-leverage output of an analysis session, because you're not gambling on a new idea, you're redistributing a proven one: the carousel becomes a LinkedIn text post, the top-performing hook gets reused on a new topic, the whole post gets rescheduled six weeks out with a fresh opening line.
Mechanically this should be cheap. In SocialKit, duplicating a proven post, adjusting the caption and hashtags per platform, and dropping it onto a future calendar slot is a compose-and-schedule job rather than a re-creation job — which is what makes recycling something you actually do instead of something you intend to do.
One honest limitation: analysis tells you what performed, not why people reacted the way they did. For that you have to read comments and DMs, and you have to do it in the native apps — SocialKit publishes and measures, it doesn't have a unified inbox, comment-moderation queue, or social listening. Ten minutes reading the comments on your top three posts will explain patterns your spreadsheet can only point at.
Where this goes wrong
Comparing across platforms. Run five separate analyses if you're on five platforms. Never one blended average.
Too few posts per tag. With two posts in a category you have an anecdote. Aim for at least three or four before you act.
Ignoring the confounders. A post published during a holiday week, a post that got shared by a large account, a post that ran while the platform was testing something — flag them and set them aside rather than letting them steer the mix.
Doing it and changing nothing. If the calendar looks the same next month, you didn't run an analysis, you ran a hobby. Book the analysis and the calendar update as one block of time.
Confusing this with a full audit. The monthly ritual reads 20 posts; a full content audit reads three to six months of everything and rebuilds the strategy underneath. Run the monthly pass twelve times a year and the audit once or twice.
Start here: your first session
Block 45 minutes this week — it'll be faster next month once tagging is a habit.
- Pick your highest-priority platform. Just one.
- Export or filter the last 30 days of posts; exclude the last 3 days and flag anything boosted.
- Take the top 10 and bottom 10 by engagement rate.
- Add four tag columns: format, topic, hook, intent. Fill them in.
- Convert every metric to a rate (÷ reach).
- Write down three patterns you can see in the top group and two in the bottom group.
- Draft next month's mix — shift 10–20 points toward the winners, hold 20% for experiments.
- Write the kill list. Minimum one item. It's not optional.
- Pick three proven posts to recycle and schedule them now, while you're already in the tool.
- Put next month's session in the calendar before you close the laptop.
Do this every month and your content decisions stop being opinions. Over a year it compounds into a documented view of what your specific audience responds to — the practical core of a data-driven social media strategy. The teams that grow steadily aren't the ones with better instincts. They're the ones who wrote down what worked and then made more of it.