# On-page audit and error pages

> How MeasureScale fetches one public page to check common on-page SEO rules, and how it finds error pages in GA4.

MeasureScale can check pages directly in two ways. The on-page audit fetches one public page of your site. It checks the HTML against common on-page SEO rules. The error-page check lists pages in GA4 whose title marks them as error pages, such as "404".

## How to read the answer

- A fail means search engines cannot use the page or are told to skip it. Fix the fails first.
- A warning is a recommendation. Title and description lengths follow common conventions, not Google rules.
- The audit reads the HTML the server sends. It does not check content that scripts add.
- The audit checks one page at a time. Ask your assistant to audit each important page in turn.
- For error pages, check the paths before you act. A normal page that mentions 404 in its title also appears.

## What it answers

- Does a page have a title, a meta description, one main heading and a correct canonical link?
- Does the page tell search engines not to index it?
- Which error pages do visitors reach, and how often?

## On-page audit

### Inputs

You name the Search Console property and the public page to audit. The page must belong to the property. Otherwise, MeasureScale rejects the request.

- A domain property such as sc-domain:example.com covers the domain and every subdomain, over http and https.
- A URL-prefix property covers URLs with the same scheme, host and port. The path must start with the property's path, compared by whole segments. A property for example.com/blog does not cover /blogger.

### How it works

MeasureScale fetches only public HTML pages on the property's own site. It reads the site's robots.txt first. It obeys the rules for the user agent MeasureScaleBot. It then reads the HTML that the server sends and returns one check per rule below.

If robots.txt disallows the page, MeasureScale does not fetch it. The result says so and has no checks. If robots.txt cannot be read, MeasureScale also does not fetch the page.

A page that answers with a status outside 2xx stops the audit. So does a page that MeasureScale refuses to fetch. The result then says why the audit failed.

### The rules

Each check has a status of pass, warn or fail. A fail means search engines cannot use the page or are told to skip it. A warning is a recommendation.

| Rule | Fail | Warn | Pass |
|---|---|---|---|
| HTTP status | The status is not 200 | | The status is 200 |
| HTTPS | | The final URL uses http | The final URL uses https |
| Title | No title tag, or an empty one | Under 10 or over 60 characters | 10 to 60 characters |
| Meta description | | Missing or empty, under 70 or over 160 characters | 70 to 160 characters |
| Main heading | | No h1 heading, more than one, or an empty one | Exactly one h1 heading with text |
| Canonical link | | Missing, relative, or naming a different URL | Absolute and naming this page |
| Robots meta | The robots meta tag or the X-Robots-Tag header says noindex or none | | Neither |
| Language | | The html tag has no lang attribute | A lang attribute is present |
| Viewport | | No viewport meta tag | A viewport meta tag is present |
| Image alt text | | At least one image has no alt attribute | Every image has an alt attribute |

These details decide edge cases:

- **Status.** Only a 2xx answer reaches the rules. A 2xx status other than 200 fails the HTTP status rule.
- **First tag wins.** The audit reads the first title, the first meta description, the first robots meta tag and the first canonical link.
- **Empty alt text.** An empty alt attribute passes. It marks a decorative image.

Every audit result is marked as a heuristic. It also names the rule set it used.

## Error pages in GA4

GA4 does not record the HTTP status of a page. MeasureScale therefore finds error pages by their title. It assumes the site's error template puts a marker such as "404" in the page title.

### How it works

MeasureScale reads one GA4 report for the window. It lists each page path and title whose title contains the marker text, in any case. The default marker is "404". You can ask for a different marker of 1 to 100 characters. Rows are sorted by views, highest first.

With no dates, the window is the last 28 settled days in the property's time zone. A **settled day** is a day whose data Google has finished processing.

Matching on the page path is not available. The result also says whether GA4 sampled or thresholded the data, as described in [Sampling, thresholds and row caps](/methodology/sampling-and-row-caps/).

## Limits

- **Length rules are conventions.** Google shortens titles and descriptions by pixel width, not by characters. The 60 and 160 character limits are common working limits, not Google rules.
- **One page at a time.** The audit checks one page. It does not crawl the site.
- **The HTML as sent.** The audit reads the server's HTML. It does not run JavaScript, so content that scripts add is not checked.
- **Not checked.** Links, structured data, page speed and rendering are outside the audit.
- **False positives in GA4.** A normal page whose title mentions 404 errors also matches. Check the paths before you act on them.
- **Missed error pages in GA4.** An error template with no "404" in its title produces no rows. Ask your assistant to use the template's title text instead, for example "Page not found".
- **Row cap in GA4.** GA4 returns at most 10,000 rows. The result says when GA4 has more.
