A webpage should make sense even when someone cannot see its colors, pictures, or layout.
What You Need to Know
Automated scanners catch missing attributes and some structural problems, but they cannot judge whether an alt description is useful or a task makes sense. Combine automated checks with human testing.
Try the Example
Take a look at the example. We’ll explain the important lines right below it.
<form action="/submit" method="post">
<label for="message">Your message</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Send message</button>
</form>
Let’s Read the Code
- <form>: The form groups controls and identifies where submitted data goes.
- <label>: The label tells people what the input is for. A matching for/id pair makes the label clickable.
- for: For connects a label or output with a control by ID.
- id: An id uniquely identifies an element on this page.
What the example shows: Automated checks can detect certain missing labels or invalid relationships, but not whether the message instructions make sense.
What Happens in the Browser?
Try this with Tab and Shift+Tab. If you can, inspect the accessibility tree too; appearance alone does not tell the whole story.
Try a different way of reading. Read only the headings and labels, or navigate through links without looking at the rest of the page. If the page still makes sense, the underlying HTML is probably doing an important part of its job.
Your Turn
List two questions a human tester must answer that automation cannot.
Common Beginner Mistakes
- Judging the page only by how it looks, without checking its meaning and keyboard behavior.
- A green audit score does not mean the workflow was tested with a keyboard or a screen reader.
Key Takeaways
- Automated scanners catch missing attributes and some structural problems, but they cannot judge whether an alt description is useful or a task makes sense.
- <form>: The form groups controls and identifies where submitted data goes.
- A meaningful HTML element is usually a stronger starting point than adding an ARIA role to a generic div. Also check what happens using only the keyboard.