Semantic HTML: a practical guide
The gap between knowing this and actually doing it is where most teams lose ground. This guide covers what semantic HTML actually involves, where it usually goes wrong, and how to tell whether yours is in reasonable shape.
Code gets read far more often than it gets written, and usually by someone with less context than the author had. Nothing below assumes a large team or a large budget — most of it is a decision somebody has to make and then write down.
What it costs to ignore
The right element gives you behaviour and accessibility for free. The reasoning matters more than the rule, because the rule has exceptions. Anything you cannot measure here, you are deciding by taste, which is fine as long as everyone knows it.
For most businesses the question is not whether this matters but how much of it is worth doing right now. That depends on what you are trying to achieve in the next few months, not on best practice in the abstract. The reasoning matters more than the rule, because the rule has exceptions.
How to approach it
A div with a click handler is not a button. None of that requires a large budget, only a decision and someone to own it. It is the sort of thing that looks like polish right up until it costs you an enquiry.
Most development decisions are really maintenance decisions wearing a different hat. The version that works in practice is usually less elaborate than the version described in the guides.
Semantic markup is the cheapest accessibility work available. The reasoning matters more than the rule, because the rule has exceptions. The failure mode is not doing it wrong, it is doing it once and assuming it stays done.
A working checklist
If you want a quick read on where you stand, work through this. Anything you cannot answer confidently is where to start.
- The right element gives you behaviour and accessibility for free
- A div with a click handler is not a button
- Semantic markup is the cheapest accessibility work available
- Someone is named as the owner, not just assumed to be
- There is a date in the calendar to review it again
- The decision and the reasoning behind it are written down somewhere findable
- You could explain the current setup to a new hire in five minutes
Warning signs
The most common failure is not doing this badly. It is doing it once, during a launch, and never revisiting it. Circumstances move, the setup does not, and the gap widens quietly until something breaks or somebody notices the numbers.
- It was configured during a launch and has not been touched since
- Different people in the business believe different things are true about it
- There is no way to tell whether the last change helped or hurt
- The only person who understands it has left, or is about to
The question is rarely whether something can be built, but what it costs to keep running afterwards. Small and consistent beats large and occasional here.
How we approach it
On our projects this gets handled during the build rather than added afterwards, because retrofitting it costs several times more than including it. We write down what was decided and why, so the next person to touch it is not guessing.
If you are working with someone else, the questions worth asking are simple: who owns this, how will we know it is working, and what happens when it needs to change?
Where to go from here
Pick the single item from the checklist above that would cause the most trouble if it turned out to be wrong. Fix that one, confirm it worked, then move on. None of this needs a rewrite. Most of it is a morning's work once someone decides to do it.