Missing or insufficient page title
document-title
- WCAG success criterion
- 2.4.2 (level A)
- Outcome class
- Automatic. An automated check that can report a confirmed violation.
- Area
- Accessibility, Navigation & Operation
- Default severity
- high
- axe-core rule
document-title
Why we flag this
Screen reader users cannot identify the page.
Empty or generic <title> tag.
What the rule checks
Scope. Top-level HTML documents whose title element has non-empty text.
Expectation. Fails when the whole title, trimmed and compared case-insensitively, is an authoring-tool or placeholder default that identifies no content (F25: "Untitled Document", "New Page", "Untitled"). A descriptive title that merely contains such a word ("Index of tool specifications – ...") passes. A missing or empty title is not applicable (document/title-missing, document/title-empty). Only the top-level document's title counts; a default title inside an embedded frame document does not make the host page fail. A title written by script before the audit counts. One finding at the head element.
Source. WCAG 2.2 SC 2.4.2 Page Titled; failure F25 (title that does not identify the contents); G88
Detection: page; needs dom.
Failing example
The check reports a violation here. Corpus case structure_title_untitled, element head. The page may contain further findings for other rules.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title> UNTITLED DOCUMENT </title>
<style>
body { font: 16px/1.5 sans-serif; margin: 0 16px; }
a { display: inline-block; min-width: 44px; min-height: 44px; line-height: 44px; }
input, button { min-width: 44px; min-height: 44px; }
</style>
</head>
<body>
<!-- An editor's default title left in place (#783, WCAG F25): the title
exists and is not empty, but it says nothing about the page. Case and
surrounding whitespace do not change that. -->
<a href="#main" class="skip-link">Skip to content</a>
<header>
<p>Acme Hardware</p>
</header>
<nav aria-label="Main">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/returns/">Returns</a></li>
</ul>
</nav>
<main id="main">
<h1>Returns and refunds</h1>
<p>You can return unused items within 30 days.</p>
</main>
<footer>
<p>Acme Hardware, Berlin</p>
</footer>
</body>
</html>Passing example
The check passes here and reports nothing. Corpus case structure_modal_dynamic. The page may contain further findings for other rules.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<style>
body { font: 16px/1.5 sans-serif; margin: 0 16px; }
button { min-width: 44px; min-height: 44px; }
</style>
</head>
<body>
<!-- A consent wall (#783): the application has not rendered yet, and a
script sets the page language and the document title and opens a modal
dialog after load.
While the dialog is open, the page's headings and main landmark are
missing for the moment of measurement, not necessarily for the page. -->
<div id="app"></div>
<dialog id="consent" aria-label="Cookie settings">
<p>We use cookies to remember your shopping basket.</p>
<form method="dialog">
<button value="accept">Accept</button>
<button value="reject">Reject</button>
</form>
</dialog>
<script>
document.documentElement.lang = 'en';
document.title = 'Cookie settings – Acme Hardware';
document.getElementById('consent').showModal();
</script>
</body>
</html>This page is generated from the rule catalogue and the rule contracts; see therule overview for how the outcome classes are derived.