Valid is the floor
A validator answers one question: does this parse as valid markup. It does not answer whether the markup describes the page.
Four steps, in order
1. render the page
- does the block appear in the html the server returns
- does it still appear with javascript disabled
2. parse it
- does a validator accept the syntax
- are the required properties for the type present
3. compare it to the page
- every value in the markup is visible to a reader
- nothing is claimed that the page does not show
4. count the entities
- one organisation block, not three
- one faq block, and only where questions are visible
A filled test
Brightwater Dental, the implants page, 2026-10-02.
step 1 block present in the raw html yes
block present with javascript off yes
step 2 validator result valid
type and required properties MedicalWebPage, all present
step 3 values compared to the page
name "Dental implants" visible as the h1
areaServed "14 miles of the practice" visible in the footer
priceRange "from 1800" NOT visible anywhere
-> remove the price, or show it on the page
step 4 entity count in one page 1 organisation, 1 page, 0 faq
result one finding, one fix, re-tested after the change
The mistakes a validator cannot catch
- A price in markup that the page shows as something else.
- Two blocks describing the same thing, from different components.
- A FAQ block on a page whose questions live in an image.
- A date in markup that the page never displays.
- An organisation name that appears nowhere on the site.
Acceptance: the test is complete when
- the block is read from the built HTML, not the source file
- every value is visible on the rendered page
- the entity count is checked on the built page
- findings are re-tested after the fix ships
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| The source has one block, the page has two | A component injects another | Search the built HTML for the type |
| A value is invisible | A template default | Bind it to the page, or drop it |
| The validator disagrees with the page | Policy, not syntax | Read the policy, then the page |
| No rich result appears | The page does not qualify | Check the type before the markup |
| The same finding returns monthly | Nothing re-tests after a ship | Add the step to the release check |
Limits
Passing these steps does not earn a rich result.
Search engines decide appearance. The only honest claim about markup is that it describes the page accurately.