:invalid

Targets form inputs that contain data that doesn't follow the rules set by attributes like 'required', 'pattern', or 'type'.

Quick example

input:invalid {
  /* Shows a red border when the user types something wrong */
  border-color: #ef4444;
  background-color: #fef2f2;
}

:invalid Browser Support

Widely available Since 2015 96% global usage

This feature is well established and works across many devices and browser versions. It has been available across browsers since 2015.

Safe to use without fallbacks.

10+
4+
5+
12+
ESC