There’s been a lot of debate about headings lately on the
GAWDS mailing list and at the recent PSF event. I think this is great because it means that people are discussing the finer points of accessibility and working on the details.
I thought I'd repost my response on the GAWDS list here for those who don't use the GAWDS mailing list (shame on you!).
The problem with headings is that nobody seems to be able to agree on which heading needs to start the page, and whether it’s OK to skip a heading or not. The problem is further compounded by automated tools which will fail you if you use more than one H1 or if you skip a heading element (say H2 to H4).
I need to make it clear that I'm not advocating sloppy structure, sites should be designed with a logical heirarchy as part of good design practice.
I’ve put something together here to try and illustrate how JAWS users use headings and why these main concerns may or may not actually be that important from a practical perspective. So if you've inherited a site or these changes are out of your control you'll be able to have a better idea of their impact.
How Screen Reader users use headings
Here are some examples (for those that haven't had the opportunity to use a screen reader like JAWS):
By pressing "H" on the keyboard, the user can cycle through headings. JAWS will announce the status of each heading as it appears in the cycle e.g. "heading level 1 company name", so in this way, the user gets an indication of the order of the headings as they appear on the page and what heading level they have been given (we'll come back to that in a minute).
Another way is by bringing up the heading list dialogue (insert + f6 in JAWS), which displays a list of all the headings on the page. The user can cycle through the headings using the up and down keys, the level of each heading is also announced in this dialogue. The dialogue has controls so that the user can sort headings by alphabetical order or tab order and also only to list headings at each level. I've personally never seen these dialogues used, but different users will have different methods, and I don't spend as much time with these guys as I would like.
So in terms of what the user expects to see as a H1 or H2 is highly dependent on whether they've visited the site before as each site has a slightly different approach to how headings are used (I doubt that this will ever change) so I think the most important thing is consistency.
Consistency is the key
If you're using H1 for your site logo, article heading or navigation heading, then you need to keep using that on every page of the site. If you find yourself in the position where you don't have a logical H3 for the page, but you've consistently implemented H4 for your section headings then in my view (and I'm sure others will disagree) you should keep on using the H4. Don't feel inclined to change it to a H3 just for that page just because you don't want to skip a heading level or to pass through some automated accessibility testing robot.
This is important because if you happen to have a lot of headings on the page and typically the user is looking for a certain H4, they could assume that this new page doesn't have the information they are looking for because it has been changed to H3.
There is a counter-argument to this because if you have a H2 and no H3, you may assume that the user won't look for a H4. But this is a weak hypothesis, because if the user is using the "H" key as described above, they will happen across the next headings whether it be a H3 or a H4. If they are using the headings dialogue, the same is true. If they are using the dialogue to list the H3s only and find nothing, this is also fine, because they will be looking for the H3 equivalent of what they found on another page. If there is not one, then it is logical that none are present.
I think the debate is useful and interesting in that a consensus will bring greater consistency across the web, but developers shouldn't mistake this as being a critical issue, the key (in my opinion) is to use lots of headings (as long as they are relevant) and use them consistently across all pages. And I'm aware that what I've stated may not quite be in accordance with W3C specifications (I'm not sure), but works best from a practical perspective.
I hope someone finds some of this useful.
If you're a screen reader user, I'd love to hear from you.