Web accessibility (often shortened to a11y) ensures people with visual, motor, auditory, or cognitive disabilities can read, navigate, and interact with your website effortlessly. Most accessibility wins start directly in clean HTML before you write a single line of ARIA or JavaScript.
button for actions and a href for navigation so keyboard Tab, Enter, and Space keys work automatically.input, select, and textarea with an explicit label for="..." element.alt, and set alt="" on purely decorative icons.h1 followed sequentially by h2 and h3 headings without skipping levels.lang="en" (or your page's language code) on the root html tag so screen readers choose the right pronunciation engine.<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Accessible Form & Navigation</title>
<style>
.skip-link { position: absolute; left: -9999px; }
.skip-link:focus { position: static; background: #1e293b; color: #fff; padding: 8px 12px; display: inline-block; }
button:focus-visible, a:focus-visible { outline: 3px solid #2563eb; outline-offset: 2px; }
</style>
</head>
<body>
<a href="#main-content" class="skip-link">Skip to main content</a>
<main id="main-content">
<h1>Account Settings</h1>
<form>
<label for="display-name">Display Name</label>
<input id="display-name" name="display_name" type="text" required aria-describedby="name-hint">
<p id="name-hint">Shown publicly on your profile card.</p>
<button type="submit">Save Changes</button>
</form>
</main>
</body>
</html>
ARIA attributes like aria-label, aria-expanded, and aria-live="polite" enhance custom widgets such as modal dialogs or accordions. However, the first rule of ARIA is never to use ARIA when a native HTML element already does the job natively.
outline: none in CSS without a replacement focus style: Removing the focus ring leaves keyboard-only users unable to see which button is selected. Use :focus-visible instead.aria-label: A close button containing only an SVG X needs aria-label="Close dialog" so screen readers announce its purpose.It is a link placed at the top of body that becomes visible on keyboard Tab focus, letting users bypass long navigation bars straight to main.
Unplug your mouse and navigate your entire page using only Tab, Shift+Tab, Enter, and Space, then run Lighthouse Accessibility in browser DevTools.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.