Placeholder Text

Visual Example

The placeholder is text that appears inside a form control by default. In the below examples it’s the word “Search” and dashes.

Compliant Example:

Non-Compliant Example:

Acceptance Criteria

The placeholder attribute does not take the place of a <label>.

In this case you would need to add either a visible or an invisible form label for screen reader users.

One issue with the placeholder is that it disappears once information has been entered into the field, making it more difficult for users to make corrections.

Don’t place important form instructions in the placeholder.

Ensure that important form instructions are available even when the user fills the data.

The placeholder attribute is announced by most screen reader and browser combinations.

Don’t place characters, such as dashes (-------) in the placeholder. It will be announced by screen readers as “dash, dash, dash, dash”.

As a screen reader user I should:

  • be provided with a form label

  • be able to explicitly associate the text label with the form control

When the form field has keyboard focus: 

  • the screen reader should announce the form label and then the text in the placeholder

  • if the text in the placeholder is the same as the form label the placeholder will not be announced by the screen reader

Markup and Code


<form id="sfgov-search-form" role="search" novalidate="novalidate" method="post"> <div> <label for="search-input">Search</label> <input id="serch-input" type="text" placeholder="Search" /> </div> </form>

View markup on github