Form field elements
Each form field can include:Label
Required. Describes what to enter.“Email address”
Instruction
Optional. Additional context about the field.“We’ll send order updates here”
Placeholder
Use sparingly. Example format.“name@example.com”
Helper text
Optional. Ongoing guidance or validation.“Must include @ symbol”
Labels
Labels are the most critical element. Every field needs a clear, visible label.Format
Use clear noun phrases that describe the input:- Good labels
- Avoid
- Email address
- Phone number
- Company name
- Street address
- Date of birth
- Password
Label best practices
Keep labels visible
Don’t hide labels inside placeholder text. Placeholders disappear when users start typing.
Instructions
Instructions provide context about why you need information or how to format it.When to use instructions
Add instructions when:- The purpose isn’t obvious (“We’ll use this to verify your identity”)
- Format is specific (“Use international format: +1-555-555-5555”)
- There are constraints (“Must be a PDF under 5MB”)
Format
Start with a verb and explain why or how:Example: Email address
Example: Email address
Label: Email addressInstruction: “We’ll send order confirmations here”Why it works: Explains the purpose so users know which email to use (personal vs work).
Example: Phone number
Example: Phone number
Label: Phone numberInstruction: “Include country code for international numbers”Why it works: Explains format requirements without being demanding.
Example: Password
Example: Password
Label: PasswordInstruction: “Use at least 8 characters with letters and numbers”Why it works: Sets expectations upfront instead of showing error after submission.
Placeholders
When to use placeholders
Only use placeholders to show:- Standard format examples (“name@example.com”)
- Expected data type (“MM/DD/YYYY”)
Placeholder guidelines
Never use placeholders as labels
Keep examples realistic (not “john@email.com”)
Use placeholder text that’s clearly not real data
Ensure sufficient color contrast (WCAG AA: 4.5:1)
Examples
| Field | Placeholder | Why it works |
|---|---|---|
| Email address | name@example.com | Shows format without seeming like real data |
| Phone | (555) 555-5555 | Demonstrates format clearly |
| Search | Search projects… | Clarifies scope of search |
| URL | https://example.com | Shows required protocol |
Helper text
Helper text provides ongoing guidance, validation feedback, or additional context.Types of helper text
- Static
- Dynamic
- Validation
Always visible, provides consistent guidance.Example: Below a password field:“Must be at least 8 characters”When to use: For requirements that apply to all users.
Required vs optional fields
Mark required fields
Use an asterisk (*) or “required” label:Explain requirements upfront
At the start of forms, explain what’s required: ”* Required fields” Or: “Only fields marked ‘optional’ can be skipped.”Common patterns
Password (create)
Phone
Credit card
Date of birth
Before and after examples
Example 1: Email field
❌ Before
❌ Before
Placeholder only: “Enter your email address”Problems:
- No visible label
- Placeholder disappears when typing
- Fails accessibility requirements
✅ After
✅ After
Label: Email addressInstruction: We’ll send order updates herePlaceholder: name@example.comWhy it works:
- Clear, visible label
- Explains purpose
- Shows format example
Example 2: Password requirements
❌ Before
❌ Before
Label: PasswordError after submit: “Password must contain at least 8 characters including uppercase letters, lowercase letters, numbers and special characters.”Problems:
- Requirements hidden until error
- Error message too long (17 words)
- User has to remember or re-read
✅ After
✅ After
Label: Create passwordInstruction: Use at least 8 characters with letters and numbersDynamic helper: Password strength: Weak → StrongWhy it works:
- Requirements visible upfront
- Real-time feedback
- Clear, scannable format
Accessibility
Every field has a visible label (not just placeholder)
Labels are programmatically associated with inputs
Required fields are clearly marked
Error messages are associated with their fields
Instructions appear before the field, not after
Placeholder text has sufficient contrast (4.5:1)
Quick checklist
For every form field:- Has a clear, visible label (noun phrase)
- Uses sentence case
- Marks required fields with * or (required)
- Includes instructions if purpose isn’t obvious
- Uses placeholders only for format examples
- Shows validation errors near the field
- Works with screen readers