‘Visible Controls’ requires websites to give users a way to identify controls without mouse hover or keyboard focus.


Users with cognitive impairments, visual disabilities, mobility or motor issues may have difficulty using components if they are hidden until hovered over by a mouse pointer or focused on through keyboard navigation.

Controls that are hidden or displayed on focus but then disappear can be difficult for users to find, remember or use. Similarly, users who rely on speech to navigate can often only use a component if they can speak its name.

By making controls visible, or by allowing users to make controls visible, these issues can be avoided.

How to Pass ‘Visible Controls’

Ensure that the information needed to identify controls and components is available when the controls are needed. Note: This doesn’t mean that controls must be visible all the time. 

Alternatively, make controls available through an entry point that is always visible – for example a menu button.

You can also pass by enabling users to make the information persistently visible. For example, a control at the top of a page could toggle all components to ‘visible’ status.

Exceptions to ‘Visible Controls’

If the information is available through an equivalent component on the same page or previous step in a process, you don’t need to make every matching component visible without mouse or keyboard interaction.

If the component is specifically for enhancing keyboard navigation, for example, a ‘Skip to Content’ link.

If it’s essential to hide the identifying information, for example in a game.

See Also

The target size minimum for pointer inputs is at least 24 by 24 CSS pixels.


Users with mobility impairments may have difficulty using elements if their target area is small. These users may have trouble with aiming or being able to keep a pointer steady. Larger target areas help these users interact with controls and elements.

How to Pass ‘Target Size (Minimum)’

Ensure that the target areas for all pointer inputs are at least 24 by 24 CSS pixels.


  • When there is at least 24 CSS pixels distance to any adjacent target.
  • When the target is a sentence or block of inline text.
  • When the presentation of a target that doesn’t meet the requirements is essential.

‘Target Size (Minimum) Tips

Making the spacing of targets at least 44 by 44 CSS pixels will pass 2.5.5 – Target Size at Level AAA.

Remember that pointers include both mouse control and touch control.

Although there is a minimum size, the larger the control the easier it is for everyone to use.

Consider making frequently used or important controls larger.

Be careful not to place controls near the edge of a screen as this may be more difficult to reach for some users.

See Also

Functionality that uses dragging movements can be achieved with a single pointer without dragging.


Some users with mobility impairments may have difficulty using a dragging action precisely, either by mouse pointer or touch. Others may use an accessibly input mechanism, such as eye control, that makes dragging even more difficult or even impossible. 

These users need an alternative that enables them to complete the same input as dragging.

How to Pass ‘Dragging Movements’

Where a control uses dragging, provide an alternative.


Where dragging is essential. For example, creating art or playing a game where dragging is a design feature.

‘Dragging Movements’ Tips

A dragging movement is one where only the start and end points matter, the direction between them is not considered. 

A common example of a dragging control is one where the user drags elements into a certain order. This can also be achieved by a clickable up/down navigation or by typing numbered values next to elements.

See Also

‘Focus Appearance (Minimum)’ requires that focus indicators are clearly distinguishable when active.


Focus indicators help users see which element on a page currently has focus, they are especially useful for people with low-vision, memory or mobility impairments. 

Where a focus indicator is used to show an element has current focus, it must be clearly visible and distinguishable. This goes beyond earlier guidance to ensure indicators are visible and have contrast between focused and unfocused states.

How to Pass ‘Focus Appearance (Minimum)’

When a component receives keyboard focus:

  • The focus indicator has a contrast ratio of at least 3:1 between focused and unfocused states;
  • The focus indicator has a contrast ratio of at least 3:1 against adjacent colours;
  • The element within focus isn’t hidden; and
  • The focus indicator area:
    • Has an outline that’s at least 1 CSS pixel thick; or
    • Has a shape that’s at least the area of a 4 CSS pixel-thick line;

‘Focus Appearance (Minimum)’ Tips

It may sound basic, but a thick black border around an element when it receives focus will often do the trick (unless your website has a very dark background colour of course).

You could also change the background colour of the whole element on focus.

If you’re worrying about pixel sizes, your indicator probably isn’t clear enough – keep it simple.

See Also

When hover or focus triggers content to appear, it is dismissible, hoverable and persistent.


Additional content triggered by keyboard focus or mouse hover can cause accessibility issues for users with visual or cognitive impairments. Additional content can surprise users, prevent them completing a task or obscure content.

To overcome these issues, users must be able to understand when additional content appears and dismiss it.

How to Pass ‘Content on Hover or Focus’

Where keyboard focus or mouse hover triggers additional content to appear, the content must be:

  • Dismissible by the user without moving keyboard focus or mouse hover (for example by pressing the ‘escape’ key or closing on click);
  • Hoverable by the mouse pointer so the pointer can be moved over the content; and
  • Persistent until the user changes keyboard focus or mouse hover, dismisses the content or the content is no longer valid.


  • Where the content communicates an input error
  • Where the content doesn’t obscure other content
  • Where the additional content is controlled by the user, for example tooltips or sub-menus that appear on mouse hover which are controlled by web browser settings

‘Content on Hover or Focus’ Tips

Try not to use this type of content if you can avoid it – add your additional content to the page. 

See Also

Content and function retain meaning when users change elements of text spacing.


Users with visual or cognitive impairments may wish to amend the default spacing around text content to make it easier for them to read and understand. When they do so, the content should remain visible in full.

How to Pass ‘Text Spacing’

Content and function remain intact when a user changes:

  • Line height to at least 1.5 times the font size;
  • Paragraph spacing to at least 2 times the font size;
  • Letter spacing to at least 0.12 times the font size; and
  • Word spacing to at least 0.16 times the font size.


  • Video captions
  • Image of text

‘Text Spacing’ Tips

For the most part, a website written in good HTML and CSS will comply, the key here is not having anything that prevents the user from making the changes to spacing. 

See Also

The contrast between user interface components, graphics and adjacent colours is at least 3:1.


All users benefit from a good contrast between the components on your website and the colour around them.

Some users with visual impairments need a stronger contrast than others to fully distinguish and use components such as input fields, buttons and controls, so getting your colour choice right is essential.

How to Pass ‘Non-Text Contrast’

  • Ensure user controls have a contrast of at least 3:1 to the colour around them;
  • Where controls change colour on focus or use, ensure the colours used have a contrast of at least 3:1; and
  • Ensure all graphics (for example icons, graphs and charts) have a contrast of at least 3:1 to the colour around them.


  • Where a user interface component is visible but inactive (for example, a disabled button)
  • A graphic is not required for understanding (for example, a chart where labels give the same information as the coloured lines or a decorative graphic)
  • Brand logos
  • Representations of other things, such as a screenshot of a website or a heat map

‘Non-Text Contrast’ Tips

Remember the different states a component may have and ensure they all comply.

Where form fields use an indicator (for example for missing information), use a colour that meets the contrast criteria.

Where fields or controls use a border, ensure the border meets the criteria. 

For graphs, ensure each line or bar has a 3:1 contrast with both the background and the other lines or bars.

For pie charts, ensure each segment as a 3:1 contrast with both the background and the segment either side of it.

See Also

For ‘Reflow’, you must ensure all content retains meaning and function without scrolling in two dimensions. 


Some users with visual impairments need to resize text to read it comfortably. 

When users enlarge content up to 400% of the default size, they should not have to scroll in their browser in more than one direction – horizontally and vertically.

How to Pass ‘Reflow’

  • Ensure vertical content doesn’t require a horizontal scroll at a width of 320 CSS pixels
  • ensure horizontal content doesn’t require a vertical scroll at a height of 256 CSS pixels


  • Where multi-directional scrolling is essential for meaning or function (for example images, maps, diagrams, games and components that require toolbars remain in view)
  • Complex data tables

‘Reflow’ Tips

Responsive web design, where content reflows to fit the user’s viewport, may already mean your website complies with this guideline.

It’s best not to use horizontal scrolling when writing in most languages, as we are accustomed to reading columns of text vertically. Reflow your content into a single vertical column when enlarged.

320 CSS pixels is the same as a default viewport of 1280 pixels enlarged 400%.

256 CSS pixels is the same is a default viewport of 1024 pixels enlarged 400%.

See Also

‘Identify Input Purpose’ requires the purpose of input fields to be programmatically determinable.


All users, but particularly those with cognitive impairments, benefit from programmatically determinable input fields. These allow assistive technologies to understand the purpose of fields and present them in a preferred format to the user.

In addition, users with motor impairments benefit from autocomplete on forms by reducing the need for fine motor movement.

How to Pass ‘Identify Input Purpose’

  • Specify the intention of each input field with “input type=”type”
  • Use specific autocomplete values to allow the user’s browser to prefill fields where it already has the data

‘Identify Input Purpose’ Tips

There’s a full list of input purposes that need to be covered at www.w3.org/TR/WCAG22/#input-purposes

Use the most specific label for each field, for example “bday” rather than “date” if you want a user’s date of birth. While the field does want a date, its purpose is to collect the birthday. 

See Also

‘Orientation’ requires your website to adapt to portrait and landscape views.


Some users have a preferred alignment (portrait or landscape) or physical requirements and need content to adapt to their preference. Others have visual impairments and may find one way round easier to use.

Most websites pass this guideline as they are responsive and adapt to the user’s chosen positioning.

How to Pass ‘Orientation’

  • All content retains meaning in either position.
  • All content retains function in either position.

‘Orientation’ Exceptions

When a single alignment is essential, for example:

  • A landscape image that would be too small to see in portrait mode
  • Where the width or height of one mode is necessary for its function 

See Also

Understanding Succession Criterion 1.3.3 (W3C)