2.3.2 Three Flashes

Updated on October 10, 2025

Goal

Completely eliminate all flashing content, regardless of frequency or intensity — ensuring no visual content flashes at all, to protect users with photosensitive epilepsy and other neurological conditions.

Key Points

  • No part of your site or app should flash or blink, even within safe thresholds.
  • Applies to animations, videos, SVGs, banners, and background effects.
  • Unlike 2.3.1 (which allows limited flashing), this guideline forbids any flashing whatsoever.
  • Safer alternatives:
    • Subtle transitions (fade, scale, color shift)
    • Static alerts or motion reduced by user preference (prefers-reduced-motion)

Short Summary

Avoid all flashing visuals — no exceptions. Use calm, gradual animations instead of sudden blinking or flickering to ensure universal safety.

Example Issue and Fix

Fail
<div x-data="timingControl" class="flex w-full flex-col justify-center items-center gap-4 p-8 text-center">
  <p class="font-medium text-gray-700 !m-0 inline-flex">Flashing alert (unsafe):</p>
  <div class="animate-flash w-full rounded bg-red-600 p-4 text-center font-bold text-white">EMERGENCY ALERT!</div>

  <style>
    @keyframes flash {
      0%, 100% { opacity: 1; }
      50% { opacity: 0; }
    }
    .animate-flash {
      animation: flash 0.3s infinite; /* ❌ 6 flashes per second */
    }
  </style>
</div>

Flashing alert (unsafe):

EMERGENCY ALERT!
Pass
<div x-data="timingControl" class="flex w-full flex-col items-center justify-center gap-4 p-8 text-center">
  <p class="!m-0 font-medium text-gray-700">Accessible alert (no flashing):</p>
  <div class="w-full rounded bg-red-600 p-4 text-center font-bold text-white transition duration-700 hover:bg-red-700 focus:bg-red-700 focus:ring-2 focus:ring-red-400 focus:outline-none">EMERGENCY ALERT!</div>
</div>

Accessible alert (no flashing):

EMERGENCY ALERT!

Quick Checklist

  • No flashing, blinking, or strobing effects anywhere
  • Replace flashing with fades, slides, or color transitions
  • Respect prefers-reduced-motion media query
  • Ensure contrast and visibility without motion
  • No autoplay videos or GIFs with flashing scenes
  • Use CSP-compliant animation patterns (CSS or Alpine transitions only)

Short Summary

Any animations caused by user interaction must have a reduced-motion fallback. If motion is not critical, simplify or remove it when the user opts out.

Next

Leave a Reply

Your email address will not be published. Required fields are marked *