"The page has a canonical problem" is an observation. Showing the URL, the canonical it returns, the canonical it should return, the canonical Google actually selected, and how you checked turns that observation into a finding someone else can verify.
SEO findings are rarely acted on by the person who found them. Developers, content teams, clients, and other SEOs need to understand what was found, where, why it matters, and whether the fix worked. When a finding rests on authority alone, it gets questioned, deprioritized, or fixed the wrong way. When it rests on evidence, the conversation changes.
Observation vs. Finding
An observation describes what a tool or person saw. A finding states what was observed, what was expected, and provides enough evidence for someone else to reach the same conclusion.
Some pages have missing H1s.
27 of 265 crawled HTML pages returned no H1 in the rendered HTML (crawl of Oct 5, 2026, Googlebot smartphone user agent, JavaScript rendering on). Affected URLs are in the export; page source was checked on a sample of five to confirm.
The second version can be checked independently. That's the standard an audit should aim for: not an SEO opinion, but an auditable finding.
Detected Condition Is Not a Confirmed Problem
A crawler detects conditions. An SEO professional decides whether those conditions are problems. Treating every crawler warning as confirmed is the fastest way to lose a developer's trust.
Two examples:
- Multiple H1s is evidence of a structural condition, not of an SEO penalty. Google has said multiple H1s are fine when the structure makes sense.
- A 65-character title is evidence of length, not of a ranking problem. Google truncates by pixel width (roughly 600px), not characters, and often rewrites titles anyway.
Label each finding with how far the evidence actually goes:
| Confidence level | Meaning |
|---|---|
| Detected | A tool reported a condition. Not yet reviewed. |
| Confirmed | The condition was reproduced and is an implementation error. |
| Risk | Confirmed, and it plausibly affects crawling, indexing, or ranking. |
| Verified issue | Google's own data (URL Inspection, Search Console, logs) shows the effect. |
| No action | Reviewed and intentional or harmless. |
Clients and developers can then prioritize by confidence, not by how alarming a warning label sounds.
The Finding Format
A consistent structure stops audits from becoming collections of unexplained warnings. Every finding should carry these fields:
| Field | What it answers |
|---|---|
| Finding | What is wrong? |
| Affected URLs | Where? Full list exported, with a representative sample in the report. |
| Observed | The exact value detected. |
| Expected | What it should be, and why. |
| Crawl context | Date, user agent, raw or rendered HTML, crawl configuration. |
| Evidence | Crawl data, source, headers, Google tool output. |
| Confidence | Detected, confirmed, risk, verified, or no action. |
| Impact | Search Console clicks and impressions on affected URLs. |
| Recommendation | What to change, or "no change required." |
| Verification | How you'll confirm the fix worked. |
Example
Finding: Product template outputs more than one H1.
Affected URLs: 212 product pages (export attached). Sample:
| URL | H1 count | H1 values |
|---|---|---|
/products/oak-desk/ | 2 | "Oak Desk" / "Customer Reviews" |
/products/walnut-shelf/ | 2 | "Walnut Shelf" / "Customer Reviews" |
Observed: The reviews widget renders its heading as an H1 on every product page.
Expected: One H1 for the product name; widget headings as H2.
Crawl context: Oct 5, 2026, rendered HTML, Googlebot smartphone.
Confidence: Confirmed. Low SEO risk, but a clear implementation error in one component.
Recommendation: Change the widget heading to H2 in the component.
Verification: Re-crawl /products/ and compare H1 counts with this audit.
Note that the recommendation comes from the evidence. The sample showed the second H1 was always the same widget, which pointed to a one-line component fix instead of 212 content edits.
Record the Crawl Context
Many "we can't reproduce it" disputes between SEOs and developers come down to different conditions. The same URL can return different HTML depending on how it's requested. Every finding should state:
- Crawl date and time
- User agent
- Raw or rendered HTML
- JavaScript rendering on or off
- Request location
- Cookies or login state
- CDN cache state
A canonical injected by JavaScript exists in the rendered HTML but not the raw source. A firewall may serve Googlebot a challenge page while a browser sees content. Without the context, two people can check the same URL and both be right.
Match the Evidence to the Claim
Collect the smallest amount of evidence that proves the finding. Proving a missing canonical needs the URL and the response. Proving an incorrect canonical needs much more.
Missing or duplicate title
URL, status, extracted title, and for duplicates, the shared text and all URLs using it.
Missing H1
URL, H1 count, extracted heading structure, rendered HTML confirmation.
Incorrect canonical
Declared canonical (HTML and HTTP Link header), expected canonical, target status, and Google-selected canonical from URL Inspection.
Broken internal link
Source URL, destination URL, status returned, anchor text, link location.
robots.txt block
URL, the matching rule, the user agent evaluated, and the Search Console robots.txt report.
Structured data
Expected type, detected markup, and results from the Rich Results Test or Schema Markup Validator.
Noindex
Meta robots value and X-Robots-Tag header, since either can apply.
Status and redirects
Full redirect chain and final status, ideally as rerunnable command output.
For status codes, headers, and redirects, the most developer-friendly evidence is output they can rerun themselves:
curl -sI https://www.example.com/old-page/ HTTP/2 301 location: https://www.example.com/new-page/ x-robots-tag: noindex
That three-line response proves a redirect and a header-level noindex faster than any screenshot.
Add Google's Own Evidence
Crawler evidence shows what the page contains. Google's evidence shows what search engines did with it. For any finding rated as a risk, add at least one:
| Source | What it proves |
|---|---|
| URL Inspection | Indexed status, user-declared vs. Google-selected canonical, live test vs. indexed version |
| Page Indexing report | How many URLs Google excludes, and for what reason |
| robots.txt report | The robots.txt version Google fetched and any errors |
| Server logs | What Googlebot requested and the responses it received |
| Performance report | Clicks and impressions on affected URLs, for impact and priority |
The Performance report also fixes the weakest field in most audits: impact. "Affects 212 pages" is a count. "Affects 212 pages that earned 48,000 clicks last quarter" is a priority.
Evidence Also Proves When Nothing Is Wrong
Evidence isn't only for proving problems. A crawler may flag an unusual URL pattern, a canonical pointing elsewhere, or a page missing from the sitemap. Checking canonicals, internal links, indexability, and the page's purpose may show it's entirely intentional.
Prove the Fix Worked
A recommendation isn't the end of the evidence trail. "Did we deploy the fix?" and "did the deployed change produce the expected SEO state?" are different questions. The second needs a re-crawl compared against the original evidence, with the same crawl configuration:
| Metric | Before | After | Result |
|---|---|---|---|
| Pages crawled | 10,000 | 10,050 | +0.5% |
| Missing meta descriptions | 500 (5.0%) | 12 (0.1%) | Improved |
| Duplicate descriptions | 38 | 41 | Regression |
| 4xx pages | 24 | 24 | Unchanged |
Three things make this comparison trustworthy. Rates sit alongside counts, because the crawl grew. The regression is reported, not hidden: the template fix created three new duplicates worth checking. And the 12 remaining pages become a new, smaller finding with their own evidence.
Each crawl becomes a snapshot. Snapshots can be compared, comparisons build a history, and the history is the evidence trail. It's the same record that makes change management verifiable and incident investigation possible.
What Good SEO Evidence Looks Like
Specific
Exact URLs, elements, and values.
Reproducible
Someone else gets the same result under the same crawl context.
Relevant
Supports the claim, nothing extra.
Time-bound
Dated, so it can be compared later.
Traceable
Linked to a URL, template, crawl, or deployment.
Proportional
A missing title needs one line. An indexing collapse needs much more.
Evidence Checklist
Before delivering a finding, confirm:
- Affected URLs are listed or exported
- Observed and expected values are stated
- Crawl context is recorded
- The finding was reproduced
- A confidence level is assigned
- False positives were considered
- Google's data was checked for risks
- Impact uses real traffic data
- The recommendation follows from the evidence
- A verification method is defined
If several are missing, the finding needs more investigation before it becomes a recommendation.
From SEO Report to Evidence Trail
A crawler's job isn't just to produce warnings. It's to establish the factual record behind an SEO decision. SiteAuditLint keeps every crawl as part of the site's audit history, so the evidence for a finding, the state after the fix, and any regressions in between stay connected instead of scattered across exports.
A useful audit answers three questions, in order:
- What is wrong?
- How do we know?
- Did we actually fix it?
An SEO report lists problems. An evidence trail proves them.