contentinfo
The site-wide footer landmark — copyright, contact, legal links. The top-level <footer> element carries this role automatically. Only one contentinfo per page.
When to use
Use <footer> as a direct child of <body>. When <footer> is at the top level, the browser exposes it as a contentinfo landmark automatically. When nested inside <article>, <section>, <main>, or <aside>, it is just a generic group, not a landmark.
role="contentinfo" on a <div> is appropriate only when you cannot use <footer> (legacy CMS).
There must be no more than one contentinfo per page. If individual articles have their own footers (byline, share buttons), use plain <footer> nested inside <article> — they are not landmarks, which is the correct outcome.
When to label
A single contentinfo does not need a label — screen readers announce it as “content information”. If a label seems necessary, that’s usually a sign that you have two contentinfos and one of them shouldn’t be a top-level footer.
Common failures
- Two
<footer>elements at the top level. Two contentinfo landmarks; screen-reader users can’t tell which is the real one. role="contentinfo"on a<footer>nested inside<article>or<main>. The role overrides the default-non-landmark behaviour and adds clutter.- Putting “secondary nav” links in
<footer>as a flat list. Wrap them in<nav aria-label="Footer">so they appear as a navigation landmark. - Site-wide cookie banner placed inside
<footer>— it’s a dialog or a region, not part of contentinfo. - Empty
<footer>left in the DOM as a layout placeholder — the contentinfo landmark exists with no content.
Example
<body>
<header>…</header>
<main>…</main>
<footer>
<nav aria-label="Footer">
<a href="/about">About</a>
<a href="/privacy">Privacy</a>
<a href="/contact">Contact</a>
</nav>
<p>© 2026 Disability World</p>
</footer>
</body>