Each one is a check that runs, described by the engine itself. If a check changes, this page changes with it.
Question-and-answer extractability
qa_contentHeadings that end in a question mark, and summary/details blocks, in the main content — each paired with the copy beneath it, plus any FAQPage or QAPage JSON-LD. Fails when marked-up questions are absent from the visible copy, or when every question on the page has under 15 words beneath it; warns when questions carry no markup, when some go unanswered, or when an answer runs past 200 words before reaching the point. A page with no questions on it reports not_measurable — this measures how liftable existing answers are and does not require a page to have any.
Fixing it: Lets an answer engine lift a complete answer off this page instead of a fragment of one.
Structured data (JSON-LD)
structured_dataEvery <script type="application/ld+json"> block: whether it parses as JSON, whether it declares an @type (walking arrays and @graph), and which types are present. A block that fails to parse is worse than no block at all, because it forfeits rich-result eligibility silently.
Fixing it: Makes the page eligible for rich results. Eligible, not guaranteed — Google decides whether to show them.
Heading hierarchy
heading_hierarchyThe h1-h6 outline: how many h1 elements exist, whether any heading is empty, and whether the document skips a level (an h2 followed directly by an h4). Zero or multiple h1 elements and skipped levels both make the page outline ambiguous to crawlers and screen readers.
Fixing it: Gives crawlers and screen readers an unambiguous outline of what the page covers.
H1 and title alignment
h1_title_alignmentOverlap between the meaningful terms in <title> and in the first <h1>, as a fraction of the smaller term set. At or above 0.5 the two describe the same topic; at or above 0.25 they are loosely related; below that the search result promises one thing and the page delivers another. Reports not_measurable when either element is missing or empty.
Fixing it: Makes the search result and the page agree about the topic, reducing bounce.
Content depth and readability
content_readabilityVisible copy taken from <main>, <article>, <body> or the document, then measured for word count and Flesch Reading Ease. Under 300 words reads as thin; a reading ease below 30 reads as academic or legal prose to a general audience.
Fixing it: Gives the page enough substance to be a credible answer to the query.
Meta description
meta_descriptionPresence, uniqueness and length of <meta name="description">. Fails when absent or empty; warns outside 70-160 characters or when more than one description tag is present. Does not rank, but it is the copy that earns the click.
Fixing it: Raises click-through on the ranking you already have. Does not affect ranking itself.
Server-rendered content
render_dependencyVisible text as a share of the response body, plus inline script share and server-rendered word count. Fails under 60 words alongside a script-heavy document, or below a 2% text ratio; warns below 5%. SEOAST executes no JavaScript, so this measures what a crawler sees before deciding whether to queue a rendered pass.
Fixing it: Puts the content in the first response, where every crawler reads it, instead of behind a render pass that is neither fast nor guaranteed.
Business contact details (NAP)
business_contactPhone numbers from schema telephone, tel: links and visible text, and addresses from PostalAddress, <address> and address-shaped copy. Fails on conflicting phone numbers, or on a business page with no contact details at all; warns when details exist but are not machine-readable or the structured address is incomplete. Reports not_measurable on any page that does not present a business.
Fixing it: Makes the phone number and address readable as data and consistent with the listings elsewhere that search engines reconcile them against.
Google Business Profile match
gbp_matchTwo tiers. From the page alone: whether a Google Business Profile is linked or embedded, and whether that link carries a place identifier. When the pipeline has retrieved the profile itself: name, phone, street, locality, postal code and website compared field by field against it. Fails on a disagreement between the two; warns when no profile is linked or the link names no listing. The coverage line states whether the profile was retrieved, so an unmeasured match is never shown as a matching one.
Fixing it: Removes a disagreement between the site and the Google Business Profile, and states which listing this site belongs to.