Skip to content
easeweb
Search topics

Vague form labels that don't say what to enter

A gift card form labels its fields Name, Email and Date, one word each, so people can't tell whether it wants their details or the recipient's, or which date it means.

WCAG 2.2
SC 2.4.6AA
Required by
Section 508 · EN 301 549 (EU)
Broken <label for="name">Name</label>
The accessibility problem illustrated: Cognitive:Whose name goes here?
01

The problem

People can't tell what to type into a field whose label is one generic word, so they enter their own details where the recipient's belong, or the wrong date.

02

Try it

Fill in the gift card form as if you were buying a card for a friend.

Before you type, decide whose name and email each field wants, and which date. The card preview shows what the shop does with each answer. Tab through the fields and compare the label on screen with what a screen reader hears, especially in Broken 2.

Broken Can you fix this?

Larkspur $50 Gift card for …

Emailed to …, on ….

Send a gift card

Screen reader says:

(Tab to a field)

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Write the missing words into each visible label, or put short labels under a legend that says whose they are.

  1. 1Every visible label, read with its group's legend, says what to enter.
  2. 2Two fields never share a label unless a legend tells them apart.
  3. 3The words that say what to enter are on screen, not only in the code.
Before

One-word labels, as drawn

<form>  <label for="name">Name</label>  <input id="name" name="recipient-name" type="text">   <label for="email">Email</label>  <input id="email" name="recipient-email" type="email">   <label for="date">Date</label>  <input id="date" name="send-date" type="date">   <label for="message">Message</label>  <textarea id="message" name="message"></textarea>   <button type="submit">Buy gift card</button></form>
After

The missing words in each label

<form>  <label for="name">Recipient's name</label>  <input id="name" name="recipient-name" type="text">   <label for="email">Recipient's email</label>  <input id="email" name="recipient-email" type="email">   <label for="date">Date to send</label>  <input id="date" name="send-date" type="date">   <label for="message">Message</label>  <textarea id="message" name="message"></textarea>   <button type="submit">Buy gift card</button></form>

Fixing this with an AI coding assistant? Get this guide as Markdown, or get every guide in your coding agent.

04

Design ideas

A label can be friendly, or short, as long as it says what to enter.

Four more ways to label the gift card form’s fields. Read each label as if it were the only thing on screen, and say what you would type: two tell you, and two leave you guessing.

In the design file

  • Write each label as it will appear on the site, “Recipient’s name”, because the developer copies what is drawn.
  • Next to each field, note what goes in it and whose it is, “the recipient’s name, printed on the card”. Reviewers and translators need it.
  • Draw the longest label on a 390-pixel phone screen, so the layout fits the real words.
  • When a form asks about two people, draw a heading over each person’s fields as part of the form.
  • Reuse the label’s words in the error message, “Enter the recipient’s email”.

Passes

  • Labels written as questions “Who is the card for?” reads like the shop talking and names whose details it wants, so people don’t type their own. Set in the ink, #1f2d2b at 14.30:1, at the size of a small heading; keep each question to one line at phone width.
  • Date to send

    For example, 14 3 2027

    One heading over day, month and year The heading says which date, “Date to send”, a line in #5b6764 (5.88:1) gives an example, and each box is labelled with its part. The boxes can be as narrow as the numbers they hold, because the heading carries the meaning.

Fails

  • Date
    Only the format as the labelWCAG 2.4.6 DD, MM and YYYY over three neat boxes look precise, and say how to write a date but not which one: the day to send the card, the friend’s birthday and the buyer’s own date of birth all fit.
  • Labels cut short to fit the gridWCAG 2.4.6 A tidy grid gives every label the same narrow column and ends the long ones with an ellipsis, so “Recipient’s name” and “Recipient’s email” show as “Recipient’s n…” and “Recipient’s e…”: the word that told them apart is gone. Draw the column for the longest label, or put the labels above the boxes.
05

Verify the fix

4 checks, no mouse.

Test with: Screen reader

0 of 4 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat when fields are added or relabelled, and when the form is translated.

Limits

This is a starting pattern, not a guarantee for every application. It covers the words a label uses, not whether the label exists or is tied to its field (form fields with missing or mismatched labels), how required fields are marked (required fields marked only by colour), or the hints and formats a field may need beyond its label. Whether a label is clear depends on the people who use the form and what they already know, so test it with them, in every language the form ships in.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

Keep this fixed as your code changes.

Turn guides like this into rules your coding agents and CI follow, then have the result retested with a keyboard and screen readers.

How retests work