Content audit: the four decisions that matter, and the data for each
Most content audits produce a spreadsheet with an action column nobody acts on. This method starts from the four decisions you can make about a page, collects only the data that separates them, and plans the work to fit the hours you actually have.
What is a content audit?
A content audit is a page-by-page review of a site’s content to decide what to keep, merge, rewrite or remove, based on what each page earns, the queries it ranks for, the links it receives and whether it is still accurate. It starts from an inventory of every URL and ends with a decision and an owner for each.
Nielsen Norman Group draws the useful line between the two halves. In Content Inventory and Auditing 101, Anna Kaley defines an inventory as a list of every piece of digital content you have, and an audit as the activity that examines, assesses and evaluates the quality of what the inventory lists. Most failed audits are inventories with a column called action.
| Content inventory | Content audit | SEO audit | |
|---|---|---|---|
| Question | What do we have? | What should we do with each page? | What stops the site being crawled, indexed and ranked? |
| Unit | Every URL or asset | Every page, or every page family | Templates, sections and site-wide settings |
| Data | URL, title, type, owner, date | Clicks, queries, links, accuracy | Crawl, index status, speed, markup |
| Output | A list | A decision per page | A defect list and its causes |
A content audit overlaps with the content section of an SEO audit checklist, and fails the same way: cataloguing is not deciding. The difference is that content decisions are more consequential, because removing a page is harder to reverse than fixing a title tag.
Why most content audits change nothing
Most content audits change nothing because they produce hundreds of small decisions nobody has the authority or time to make, presented as though the analysis was the hard part. The hard part is deciding, and a spreadsheet with an action column filled in optimistically has not started it.
The standard method exports every URL, pulls a dozen metrics against each, colours the rows and hands over the file. It is thorough and it usually stalls, for three reasons that have nothing to do with the analysis:
- No capacity was set. Three hundred rows are graded as if all three hundred could be acted on. A quarter later, a handful have been.
- The columns do not separate the decisions. Word count, bounce rate and a content score do not tell you whether to merge or remove.
- Nobody owns the outcome. The action column says “rewrite” and no name sits next to it.
The version that works inverts the order. Start from the four decisions you are willing to make, set how many you can act on this quarter, then collect only the data that separates them.
- 1DecisionsAgree the four outcomes: keep, merge, rewrite, remove
- 2CapacityHours this quarter, written down before any data
- 3DataOnly the columns that separate the four decisions
- 4DraftRules give most pages a decision; people review the edge cases
- 5ExecuteRemovals first, merges last, each with an owner
- 6MeasureChanged pages against kept pages, a full window later
Capacity is a real constraint even for well-resourced teams. HubSpot’s account of auditing its own blog reports that the team had bandwidth for 240 updates in 2024, that the project was later deprioritised, and that 76 updates were completed, about a third. A team that had sized its capacity was still overtaken by other priorities. Plan for that.
The four content audit decisions: keep, merge, rewrite, remove
Every page in a content audit ends in one of four decisions: keep it as it is, merge it into a stronger page, rewrite it so it answers its query properly, or remove it. Each decision has a different cost, risk and payback, and naming them first is what stops an audit becoming a list of observations.
Other frameworks use different words for the same set. HubSpot’s audit used keep, optimise, recycle (rewrite from scratch on the same URL) and prune. Optimise and recycle are both rewrites at different depths, which is why this guide treats them as one decision with a range of effort.
Re-targeting: the cheapest rewrite
One kind of rewrite deserves its own name. A page briefed against one keyword sometimes ranks, quietly, for a set of queries nobody planned. The action is to re-target it at what it already earns: change the title, lead with the question it actually answers, and let the original brief go. It needs no new research and often only an hour of editing.
When to do a content audit, and how to scope it
A content audit is worth doing once a year on a site that publishes regularly, after a period of heavy publishing, before a migration or redesign, and when organic traffic falls without a technical cause. Scope it by section and by capacity, not by the whole site at once, unless the site is small.
- Write the goal. “Recover clicks lost on the blog since last year” or “cut the docs to what is current before the redesign”. The goal decides which pages are in scope.
- Pick the sections. Blog, docs, help centre, landing pages, programmatic families. Audit one at a time if the site is large.
- Set the capacity. Writing hours per week, multiplied by the weeks in the quarter, and the developer time for redirects. Write it down before you look at a single page.
- Set the window. Ninety days of Search Console data is a practical default, extended to twelve months for seasonal businesses. Pages published in the last few months are excluded; they have not had time to earn anything.
- Name the owner of each decision type: who approves removals, who writes rewrites, who implements redirects.
HubSpot phased its audit the same way: the oldest content first, then the lowest-performing, then the value of topic clusters. Phase one alone covered its oldest 4,000 URLs and took ten weeks, according to the same write-up.
Ahrefs’ published content audit process scopes from the other end. For sites with thousands of pages, Joshua Hardwick recommends following the 80/20 rule and auditing the top 20% of pages with the most organic traffic or backlinks, and he treats a page published or significantly updated less than six months ago as one that may need more time. That scope suits a growth audit, where the aim is to push pages that already work. It is the wrong scope for a pruning audit, because the pages a pruning audit exists to find are the ones with no traffic and no links. Pick the scope from the goal in step one, not from habit.
How to do a content audit, step by step
A content audit runs in eight steps: build the inventory, pull performance data, add the queries each page ranks for, add inbound links, tag content type and cluster, apply the decision rules, review the edge cases by hand, then execute in order of cost. The first five steps are data; the last three are the audit.
- Build the inventory. Crawl the section with Screaming Frog or Sitebulb, and reconcile against the XML sitemap and a CMS export, because each misses pages the others catch. The Screaming Frog SEO Spider is free up to 500 URLs.
- Pull performance per page. From the Search Console Performance report, export clicks and impressions by page for the window. The Performance report defaults to the past three months, so set the range deliberately. Add conversions from analytics where pages lead to sign-ups or demos.
- Add the queries each page ranks for. Export page and query together. This is the most useful column in the audit and the one most often missing.
- Add inbound links. Internal links from the crawl, counting only links from body copy, and referring domains from a backlink tool.
- Tag each page with its content type and cluster, and the date its content last changed in a way a reader would notice.
- Apply the decision rules in the next sections to produce a draft decision per page.
- Review edge cases by hand: pages the rules disagree about, pages with conversions but no clicks, pages that exist for email, paid campaigns or sales rather than search, and anything commercial.
- Execute in order: removals, re-targets, rewrites, then merges, within the capacity you set. Merges go last because they are the hardest to reverse.
Content audit checklist
The checklist below turns those steps into items you can tick, and adds the scoping and measurement items the steps leave implicit. The verdict changes as you progress, so you can see which stage is holding the audit up.
The content audit data that actually separates the four decisions
The content audit data that separates keep, merge, rewrite and remove comes down to five columns: clicks, impressions, the queries a page ranks for, inbound links, and whether its content is still accurate. Most audit templates collect twenty columns and use three of them.
| Column | Source | What it tells you |
|---|---|---|
| Clicks, window | Search Console | Whether anyone arrives from search |
| Impressions, window | Search Console | Whether the page is visible; visible with no clicks means unconvincing |
| Top queries and positions | Search Console, page plus query export | What the page actually earns, which may not be what it was briefed for |
| Body-copy internal links in | Crawler | Whether your own site endorses the page; removing it breaks something |
| Referring domains | Backlink tool | Whether removal needs a redirect to keep external links working |
| Conversions | Analytics | Whether the page leads anywhere, which can justify keeping a low-traffic page |
| Last meaningful change | CMS history or editor | Whether facts may be stale; not the modified date, which plugins change |
| Content type and cluster | Your tagging | Which pages could merge, and which hub each belongs to |
Columns to skip or treat with care
- Word count. Google’s SEO starter guide says the length of the content alone does not matter for ranking. A short page that answers its query is not a problem.
- Bounce rate or engagement on informational pages. A reader who got the answer and left looks the same as one who gave up.
- Third-party content scores. Useful prompts for a rewrite, not evidence for a decision.
- Publish date on its own. Age is not a defect, as the section on old pages explains.
For the inbound-links column, a link map of the site separates pages with real editorial support from orphans, which is the input the removal decision needs and the one most audits guess at.
Content audit decision rules: which signals point to which action
Content audit decision rules map combinations of clicks, impressions, links and query overlap to an action. They produce a draft decision for most pages in minutes, and leave a short list of genuine judgement calls for a person to review.
| Clicks | Impressions | Links in | Other signal | Draft decision |
|---|---|---|---|---|
| Some | Some | Any | No sibling ranks for the same queries | Keep |
| Some | Some | Any | A sibling ranks for the same queries | Merge candidate: check the click share |
| None | Many | Any | Ranks for queries it was not briefed for | Rewrite: re-target |
| None | Many | Any | Ranks on page two for its own target | Rewrite: improve |
| None | Few | Several | Something links here for a reason | Investigate by hand |
| None | None | None | No referring domains | Remove: 404 or 410 |
| None | None | None | Has referring domains | Remove: 301 to the closest page |
“Some” and “many” are relative to the site. A practical approach is to rank pages by clicks and treat the bottom fifth as “none” for the first pass, then adjust once you see the distribution. A small site with a few hundred clicks a month needs different cut-offs from one with a few hundred thousand.
The keep, merge, rewrite or remove decision tree
The table drafts decisions in bulk. The tree below applies the same rules to one page at a time, which is how the edge cases get reviewed, and it adds the accuracy check that a metrics export cannot make for you. Open the answer that fits the page at each step.
Yes
Yes
No
Yes
No
No
Yes
Yes
No
No
Referring domains
Links in or another job
None of these
The non-search branch matters more than it looks. As Ahrefs’ audit guide puts it, not all pages need traffic to justify their existence. A page that sales sends to prospects, or that an onboarding email links to, can have no search clicks at all and still be doing its job.
HubSpot’s published removal criteria are a useful reference for the link rules. In its account of removing 3,000 posts, Aja Frost describes deleting pages with no backlinks whose content could not be salvaged, redirecting pages to the most similar page when they had backlinks but unsalvageable content or were outranked by another page on the same keywords, and optimising pages that had backlinks, could be improved and did not compete with another page. In the later blog audit described above, which began in February 2023, the team archived URLs with fewer than 10 backlinks and no backlink profile of value, and redirected those with more than 10 backlinks or a backlink profile worth keeping.
The page that ranks for nothing it was written for
A page that ranks for nothing it was written for, but does rank for queries nobody planned, is the most valuable case in a content audit and the one a spreadsheet handles worst. Graded against its target keyword, it looks like a failure. Graded against what it earns, it is often the cheapest win available.
- Export the page’s queries for the window and sort by impressions.
- Group them. If most share one intent that differs from the brief, the page is answering a different question from the one it was written for.
- Rewrite the title and H1 around that question.
- Move the answer to the opening paragraph and the start of the most relevant section.
- Leave the rest of the page alone unless it contradicts the new framing.
- Record the change and the date, and compare the page’s clicks after a full window.
The reverse case is worth naming. A page that ranks exactly as briefed and earns nothing was aimed at a query with no value. That is a planning fault, not a content fault, and rewriting the page will not help. The Content Gap Checker is useful at the planning stage, to compare what a page covers with what ranks before anyone briefs a rewrite.
What to do with old content in a content audit
Old content in a content audit should be judged on whether it is still correct and still answers a question people ask, not on its publish date. A page from several years ago that is still accurate has had years to accumulate links and ranking history, and refreshing it because of its date risks resetting an asset that works.
| Condition | Signal | Action |
|---|---|---|
| Old and still correct | Stable rankings, steady clicks | Keep. Change the date only if the content changed |
| Old and factually stale | Names a deprecated tool, a superseded figure, a dead link | Fix the specific claim, not the whole page |
| Old and structurally wrong | Answers a question people stopped asking | Re-target or remove, depending on what it earns |
The one real exception is anything with a year in the title or URL. Those pages carry an expiry date, and “best tools 2024” tells a reader in 2026 that it is out of date. Either commit to updating them annually or stop putting years in titles.
Check outbound links on old pages too. A page full of links to sites that have moved or closed reads as abandoned even when the argument still holds, and it is a short fix rather than a rewrite. A related judgement, deciding which queries are now answered on the results page and are not worth a rewrite, is covered in the guide to AI Overviews.
How to remove pages in a content audit without breaking anything
Pages are removed in a content audit in one of two ways: a 301 redirect to the closest relevant page when the URL has external links or traffic worth keeping, or a 404 or 410 when it has neither. In both cases, internal links to the old URL are updated and the URL leaves the sitemap the same day.
Google’s HTTP status code documentation says all 4xx errors except 429 are treated the same, so 404 and 410 behave alike, and that previously indexed URLs returning a 4xx are removed from the index. It treats a 301 as a strong signal that the redirect target should be canonical and a 302 as a weak one, so a removal should never use a temporary redirect.
- Decide the method from the referring-domains column: links worth keeping means 301, none means 404 or 410.
- Choose the redirect target by topic, the page a visitor following the old link would most want. A blanket redirect to the homepage or the blog index gives that visitor nothing.
- Update internal links to the removed URL, so the site does not link to its own redirects or errors. HubSpot’s team had a developer script remove internal links to pruned posts as part of the process.
- Remove the URL from the XML sitemap.
- Keep the redirects. Google’s site move guidance recommends keeping redirects for generally at least a year.
- Check the Page indexing report over the following weeks for the removed URLs moving out of the index.
Removal is the only decision that gives capacity back. Every other decision costs writing time. A removed page stops needing review, stops appearing in internal-link suggestions and stops being a merge candidate in next year’s audit. Do not expect it to lift the pages that remain on its own; the return is in attention and maintenance, measured over quarters.
Noindex is a third option for pages that must stay live for users, such as old release notes or gated assets, but should not be in search. It keeps the page and removes the search problem, at the cost of leaving it in the inventory for the next audit.
- Sends visitors and external links to a live page
- Google treats it as a strong signal that the target should be canonical
- Needs a relevant target; a homepage redirect helps nobody
- Has to be kept, generally for at least a year
- Simplest; nothing to maintain
- Google removes previously indexed 4xx URLs from the index, and treats 404 and 410 alike
- Any external links to the URL stop working for visitors
- The page stays live for users who need it
- Removes it from search without a redirect
- The page stays in the inventory and comes back in the next audit
How to merge pages in a content audit
Pages are merged in a content audit when two or more of them rank for an overlapping set of queries and none is clearly winning. One page absorbs the useful content of the others, and the others redirect to it with a 301, so links and signals consolidate on a single URL.
Select merge candidates by query overlap, not title similarity. Two pages with near-identical titles can serve different intents, and two with unrelated titles can compete directly. Pivot the page-plus-query export by query, and list every query where two or more of your pages appear. Pages that share many queries are candidates.
- Pick the survivor: usually the page with the most referring domains, the most clicks, or the cleanest URL, in that order.
- Move the useful content from the other pages into the survivor, under headings that match the queries they ranked for.
- Update internal links to point at the survivor directly.
- Redirect each absorbed page to the survivor with a 301, only once the content has moved, and remove it from the sitemap.
- Merge one cluster at a time and wait a full crawl cycle before the next, so you can see what each merge did.
Overlap between pages is common enough that Google says, in its starter guide, that duplicate content on your site is not a violation of its spam policies. It still splits clicks and links between URLs. The diagnosis in depth is in the guide to keyword cannibalization, which is worth reading before the first merge.
Merged pages need links into the survivor from the cluster around it, which is a rule better written once than repaired each year; the internal linking strategy guide sets out the rules per content type.
How to audit programmatic and generated content
Programmatic and generated content is audited by page family, not page by page, because a family of hundreds of location or integration pages shares one template and one data source. The questions become whether the family as a whole earns anything, what distinguishes adjacent members, and where the tail stops earning.
- Does the family earn? Sort members by clicks and calculate the share held by the top tenth. If a small number of members carry almost all the clicks, the rest are overhead.
- What differs between two adjacent members? If the answer is a city name and a number, neither a reader nor a search engine can tell them apart. That is one template problem, not hundreds of content problems.
- Where does the tail flatten? Most families have a point past which members earn nothing. That point is the removal boundary.
- What does Google index? A large share of the family in “Crawled – currently not indexed” in the Page indexing report is Google’s own verdict on the template.
The action on a failing family is rarely to improve every member. It is to cut the family to the members that earn, and fix the source data and the template so the next generation does not reproduce the problem. The guide to programmatic pages covers the build-time rules that prevent it.
A worked example: a 300-page content audit with a capacity cap
A content audit with a capacity cap turns a list of three hundred grades into a plan that fits one quarter. Take a hypothetical B2B SaaS blog with 300 posts older than six months, one editor with 8 hours a week for audit work, and developer time for redirects.
| Group | Pages | Draft decision |
|---|---|---|
| No clicks, no impressions, no links in, no referring domains | 41 | Remove: 404 |
| No clicks, no impressions, no links in, has referring domains | 22 | Remove: 301 |
| No clicks, many impressions | 55 | Rewrite: re-target or improve |
| Clicks, shares queries with a sibling | 48 | Merge candidates, in 24 pairs |
| Clicks, no overlap | 134 | Keep |
| Total | 300 | 41 + 22 + 55 + 48 + 134 |
Capacity: 8 hours a week for 13 weeks is 104 hours of editing. Assume a re-target takes 1 hour, a merge 4 hours and a full rewrite 6 hours, and the plan becomes:
| Work | Count | Hours each | Hours |
|---|---|---|---|
| Re-targets | 20 | 1 | 20 |
| Merges (pairs) | 8 | 4 | 32 |
| Full rewrites | 8 | 6 | 48 |
| Buffer | 4 | ||
| Total | 104 |
The 63 removals (41 plus 22) are done first, in a batch, because they are unambiguous and finishing something builds momentum. Of the 55 rewrite candidates, 28 are done this quarter (20 re-targets and 8 rewrites) and 27 roll into the next, chosen by the value of their queries. Of the 24 merge pairs, 8 are done, covering 16 pages, and 16 pairs wait. Counted in pages, that is 63 removed and 44 changed editorially (20 + 8 + 16), or 107 of the 166 pages with a non-keep decision (63 + 55 + 48). The other 59 are scheduled for next quarter rather than left in a spreadsheet.
Without the cap, the same audit would grade all 300 pages equally and discover in week eight that there is no time to act on most of it. The grading was never the constraint.
Content audit capacity calculator
The calculator below runs the same sum for your own audit. Editing capacity is hours a week multiplied by weeks, minus the buffer. Hours needed is re-targets times hours each, plus full rewrites times hours each, plus merge pairs times hours each. The share you can finish this quarter is capacity divided by hours needed, capped at 100 percent, and periods to clear (each a quarter at the default 13 weeks) is hours needed divided by capacity. Removals are left out because they sit in developer time.
Enter your hours and the counts from your draft decisions.
With the hypothetical defaults, capacity is 100 hours against 326 needed, so 30.7% of the editorial work fits in the quarter and the backlog takes about 3.3 quarters at this pace. That is the number to put in front of whoever approves the audit, before the work starts rather than in week eight.
How to measure whether a content audit worked
Whether a content audit worked is measured by comparing the pages you changed with the pages you did not, over the same period, a full window after the changes. Site-wide traffic is a poor test, because it moves with seasonality, demand and algorithm updates at the same time as your edits.
- Re-targets and rewrites: clicks and impressions for each changed page, ninety days before and ninety days after, compared with the keep group over the same dates.
- Merges: clicks to the survivor against the combined clicks of all merged pages before the merge.
- Removals: removed URLs leaving the index in the Page indexing report, no rise in 404s from internal links, and redirected URLs passing visitors to their targets.
- The library: the share of pages earning clicks, and the number of pages in the next audit’s removal group.
HubSpot published one of the few detailed public results, in the write-up of its blog audit. Of the 4,000 oldest URLs it audited, 951 (23.78%) were recommended for optimisation or recycling, 2,888 (about 72%) for pruning and 161 needed no action or were already redirected. Six months after the 76 completed updates, cumulative monthly traffic to those posts had risen 458%, and the average age of the library fell from 2,088 days to 1,747, according to HubSpot’s account. Note what that measured: the updated posts, not the whole blog.
The wider measurement problems, and how to report organic results honestly, are covered in measuring organic when attribution is already broken.
| Horizon | Work | Done when |
|---|---|---|
| Week 1 | Goal, sections and capacity written; inventory and data pulled; draft decisions applied | Every page has a draft decision |
| Month 1 | Removals and redirects shipped; re-targets done; edge cases reviewed | Removal group out of the sitemap; re-targets live |
| Quarter 1 | Merges one cluster at a time; rewrites within capacity; results measured | Changed pages compared with the keep group |
If the same kinds of page keep appearing in the removal group year after year, the problem is upstream, in what gets briefed. That is a content system problem, and fixing the brief is cheaper than auditing its output every year.
A content audit exists to make four decisions about each page: keep, merge, rewrite or remove. Judge a page by what it earns and the queries it actually ranks for, not by the keyword it was briefed against or its age. Set your capacity before you start, do removals and re-targets first because they are fast and unambiguous, and handle every removed URL deliberately with a redirect or a clean 404. Measure the pages you changed against the pages you did not, a quarter later.
Start with removals. They are unambiguous, they free capacity, and finishing something is what keeps the rest of the audit moving. The audits that stall are the ones that open with the merges.
Set the cap before you open the spreadsheet. Knowing you will act on thirty-odd editorial decisions this quarter changes how you look at the data: you stop grading every page and start looking for the thirty that matter.
The measure of a content audit is not how many rows it has. It is how many URLs are different a month later.
Frequently asked
What is a content audit?
How do you do a content audit step by step?
What is the difference between a content inventory and a content audit?
How often should you do a content audit?
How long does a content audit take?
Does deleting pages improve SEO?
Should I use a 404, a 410 or a 301 for removed content?
What tools do you need for a content audit?
I take on a small number of engagements at a time. If you are past product-market fit and want to talk through what this would look like for your situation, the calendar is open.
Book a call