← Blog

15 September 2026 · Updated 18 September 2026

How to audit every page on your site in one spreadsheet

Download any "SEO audit spreadsheet" template and you get the same thing: neat column headers and nothing underneath them. You run your own crawl, fill in every row by hand, and only then does the actual audit start. LetsGetSurfaced's SEO health export skips straight to that last part. One row per page, every column filled in, the moment your crawl finishes.

Think about the last time a mechanic fixed the one noise you were worried about and handed the keys back with a one-line receipt. Useful, but you've still no idea about the rest of the car. A full inspection sheet, listing every check they ran, tells you more, even though most of it says nothing's wrong. Marketers get the same itch about their own site.

Why look at every page, not just the ones the dashboard flags?

The findings list is right about what it flags: broken links, a redirect chain, a page carrying a noindex signal it probably shouldn't, ranked by what's actually costing you visibility. That's where Monday should start. But it only shows the pages that already tripped a threshold. The spreadsheet is the other several hundred, the ones that are fine for now, plus the context that turns "this page is broken" into "here's the pattern across the whole site."

What's actually in the export

We built the crawler to ground AI visibility briefings in a real, page-by-page picture of the site. Once that picture exists, walking away without exporting it felt like leaving data on the table, so the full report ships too:

  • Status code, and whether the page is actually indexable, with the reason if it isn't
  • Redirect chains
  • Title and meta description, with their lengths
  • Canonical tag
  • H1 and H2 counts
  • Word count and a readability score
  • Last-modified date, where the page reports one
  • Duplicate content, grouped and counted
  • Inlinks, outlinks, and crawl depth from the homepage

Problem cells are shaded by severity, so it reads like a worked audit, not a data dump to make sense of cold. That's the raw material. Here's what it's actually for.

Rewriting titles and meta descriptions across the whole site

Doing a title and meta description pass this quarter? There's no bulk-editing trick that works the same way across every CMS, you'll still make the change in Shopify, WordPress or wherever the site lives. What the export solves is the half before that: sort the sheet by length and every truncated or missing one shows up in a minute, across the whole site at once, instead of clicking through page by page to find them.

Cleaning up duplicate content sitewide

A dashboard finding says "duplicate content found" and points at the worst offender. The export groups and counts every duplicate cluster on the site at once. Instead of fixing one flagged page and hoping it was the only one, you see all ten thin variations of the same page together, and decide, properly, whether to consolidate or differentiate each group.

Deciding what to refresh first

Content decay isn't abstract. The last-modified date on a page is exposed to search and AI engines directly, and a date over a year old reads to both as a sign nobody's looking after the page. Sort the sheet by last-modified, oldest first, for the pages that report one, and the refresh priority list writes itself instead of you guessing which of a hundred-odd pages actually need the attention this quarter.

Catching pages that shouldn't be public

Some pages exist for people who already know how to find them, a support section, a help centre, and have no business ranking for cold search traffic or getting cited by an AI engine. Nothing about a page like that trips an error. It loads fine. It isn't broken. It's just still indexable when it shouldn't be, and a findings list has no way to flag that on its own, because the crawler can't know your intent for a given page. Scanning the indexability column against your own map of the site is the only reliable way to catch it.

Finding orphan pages and fixing the links around them

A page your sitemap promises but nothing links to is invisible to a real crawler, and the export flags it as an orphan. The inlinks column shows the next problem along: pages with a link pointing to them, just one or two. An orphan needs its first link. An underlinked page needs more of them. Seeing both lists together turns two separate discoveries into one internal-linking pass across the whole site.

Checking nothing broke after a redesign or migration

Run the export before a redesign or migration, then run it again after, and put the two side by side. A topline SEO score can hold steady while individual pages quietly break underneath it: a canonical tag that stopped pointing where it should, a page that used to be indexable and now isn't, internal links that go nowhere. Comparing every page, not just the overall number, is what actually shows you which ones did.

A few things worth knowing

How many pages does it cover? Every page the crawl reaches, up to 500 pages per crawl, reached link by link from your homepage the way a search engine builds its picture, not a straight sitemap fetch. That distinction matters: a page your sitemap lists but nothing links to gets caught as an orphan, instead of quietly counted as covered.

What format does it export as? An Excel file, one row per page.

Does this replace the weekly briefing? No. The briefing is the verdict: the findings that actually need fixing this week, ranked by impact. The export is everything underneath it, for jobs more specific than this week's priority list.

Not a template. Already built.

Every one of these is a job marketers already do with a spreadsheet, usually a blank one, filled in by hand after running a crawl tool of their own. This one turns up finished. Every other SEO audit spreadsheet online is still an empty grid waiting for your crawl. This one already ran it.

See what AI is actually saying about your site.