How to write an SEO audit report a client will actually read
Most SEO audit reports fail for the same reason. They're accurate but nobody can act on them. A 40-page export full of warnings tells the client you were busy. It doesn't tell them what to do on Monday. Here's how to write one that gets fixes done.
Start from who reads it
Work out who will act on the report before you write anything:
- The business owner wants to know if it matters and what it costs.
- The developer or web person wants exact locations and the exact change.
- The marketing lead wants to know what to tell their boss.
Often it's one person wearing all three hats. Write for the person who has to make the change, and put a two-line summary at the top for everyone else.
Structure that works
1. One-paragraph summary
Cover the page or pages audited, the date, the overall state and the top three fixes. For example:
> We audited the homepage and two service pages on 3 October. The pages are in reasonable shape. The three changes that matter most are: give each service page its own title, fix the canonical tag that points every page to the homepage, and add the mobile viewport tag.
If the client reads nothing else, this is enough.
2. Ranked fix list
This is the core of the report. Each item gets:
- Severity (High / Medium / Low)
- What's wrong, in plain words
- Where (URL, plus the element or template)
- The fix, written as an instruction
Example:
`
HIGH: Canonical tag points to the homepage
Where: /services/boiler-repair (and all service pages, same template)
Fix: Change <link rel="canonical"> to the page's own full URL,
e.g. https://example.com/services/boiler-repair
`
Sort strictly by severity. Clients work top-down and often stop after the first few items, so the first few should be the ones that matter.
3. Notes and what you didn't check
Say what was out of scope (backlinks, speed, content strategy) so the client doesn't assume a clean report covers everything.
How to decide severity
Keep the rule simple and use it every time:
- High: can stop a page being understood, indexed correctly or used on mobile. Examples: missing or duplicate titles, a wrong canonical, no viewport tag, no
<h1>. - Medium: weakens how the page appears or is understood. Examples: a missing or generic meta description, content images without alt text, "click here" links.
- Low: polish or sharing. Examples: Open Graph gaps, heading-order tidy-ups.
Use the same labels on every client, so a returning client learns what "High" means.
Write it in plain words
Swap the jargon for what it does:
| Instead of | Write |
|---|---|
| "Missing meta description" | "There's no summary for Google to show under your link, so it'll pick some text itself." |
| "Canonical misconfigured" | "The page tells Google that a different page is the real one." |
| "Missing alt attributes" | "These 6 images have no text description for screen readers or image search." |
Keep the technical name in brackets if a developer will read it.
Things to leave out
- Tool scores without context. "72/100" means nothing on its own. If you include a score, use it to show progress between audits, not as the headline.
- Issues you can't explain. If you don't know why a warning matters, either look it up or drop it.
- Unsupported promises. Don't write "this will boost rankings by X%". On-page fixes remove obstacles. They don't guarantee positions.
- Duplicate items. If 50 pages share one template bug, report it once and note that it affects every page using that template.
Format and delivery
- Short reports go in the email body. A fix list of up to about ten items in plain text gets read more than an attachment.
- Longer or formal reports go as a PDF with your name, the client's name, the date and the pages covered. It looks professional, and the client can forward it internally without editing.
- Keep a copy of every audit, so next time you can show what changed.
A reusable template
`
SEO audit: [Client] - [Page(s)] - [Date]
Summary
[2-3 sentences + top three fixes]
Fixes, most important first
1. [HIGH] ... Where: ... Fix: ...
2. [HIGH] ...
3. [MEDIUM] ...
Not covered in this audit
[backlinks, speed, etc.]
Prepared by [Your name]
`
Common pitfalls
- Sending the raw crawler export "for completeness". Attach it if you must, but don't make it the report.
- Ranking by how many times an issue appears instead of by impact.
- Writing fixes as observations ("title is long") instead of instructions ("shorten the title so the service name comes first").
A quicker route
If you're writing these by hand for each page, most of the time goes into rewording tool output into plain instructions. We make Auditfold, which audits a page's HTML and produces a ranked, plain-word fix list with severities that you can copy into an email. On the paid plan it can also make a printable client report with your name and your client's name. Use it, or use the template above. Either way, the structure is what makes the report useful.