NewEngine update: HDR & 10-bit video support is live — now validating against WCAG, Trace24 & Ofcom 2017 in parallel.
8 min read

How to Test a Website for WCAG 2.3.1 Photosensitive Seizure Hazards

Key Highlights
  • Spot triggers: Identify flashing UI components, animated GIFs, auto-play videos, or rapid re-rendering states.
  • Interact actively: Trigger hover effects, focus states, and scroll actions while recording your browser window.
  • Upload capture: Drag the screen recording into the Video Audit WCAG compliance analyzer.
  • Locate violations: Use the waveform warnings and grid overlays to find the exact coordinates of failures.

Web accessibility goes beyond contrast ratios and keyboard navigation. Under the Web Content Accessibility Guidelines (WCAG) 2.2 Success Criterion 2.3.1 (Three Flashes or Below Threshold), websites must be free of flashing animations and video content that could trigger photosensitive seizures.

Because web content is dynamic, interactive, and scroll-dependent, testing it requires a systematic approach. This guide outlines how to create screen recordings of potentially hazardous web animations and process them using the free Video Audit tool.

Visual representation of interactive web-specific seizure triggers including auto-play media, hover states, scroll animations, and re-rendering components. Figure 2: Common interactive triggers that bypass traditional static video safety checks.


#Why Web Content Needs Testing

Traditional video files are static, but modern websites are highly interactive. Common web-specific elements that frequently trigger seizure safety violations include:

Auto-playing Video Banners and GIFs

Large header videos, background loops, or animated GIFs that contain high-contrast cuts, light leaks, or strobe lighting. GIFs are particularly risky because they loop indefinitely and lack built-in pause controls.

Strobing Loading Indicators

Fast-pulsing wait states, spinner wheels, or rapid progress bars that flash more than three times per second.

Content Re-rendering Flashes

Flashing skeleton loaders, fast data reloading cycles, layout shifts, or search result blocks that flicker during updates.

Scroll-Triggered Parallax Effects

Large sections that translate at different speeds when scrolling, causing high-contrast stripes, text grids, or background images to slide past each other quickly.

Hover and Focus State Strobing

Buttons, card borders, or links that cycle rapidly between high-contrast colors (such as dark black and bright white) when hovered over or focused with a keyboard.

#Spotting Potentially Hazardous Animations

When scanning a website for compliance candidates, look for high-contrast changes occurring in large regions. A tiny blinking cursor is safe, but a large element toggling back and forth between very light and very dark values (relative luminance change of 10% or more) can easily breach spatial limits if it covers more than 25% of a 341×256341 \times 256 pixel block (WCAG visual field).

Since these states are only triggered during active browsing, you must capture them as a video stream before analyzing them.


#Common web violation examples

To see how these rules apply, consider two common failure scenarios:

#Example 1: The high-contrast flash button

Imagine a large call-to-action button where the background toggles instantly between plain black and plain white without a transition fade when hovered or focused.

  • The trigger: If a user hovers the cursor on and off the button, or moves keyboard focus quickly back and forth, the button background strobes.
  • The failure: Because the button is large, it occupies more than 25% of the 341×256341 \times 256 reference window. Hovering or focusing the button more than three times within a single second causes six opposing luminance transitions, immediately triggering a WCAG violation.
Caution: This video contains flashing lights that may trigger seizures.

#Example 2: The hero background video

Many modern homepages feature a large, auto-playing background video running behind headings.

  • The trigger: The video contains rapid cuts between bright outdoor scenes and dark indoor shots, or uses light leaks and strobe effects to create a dynamic look.
  • The failure: Since the background video covers a large percentage of the screen, any flashing or high-contrast transition is guaranteed to cover more than 25% of the 341×256341 \times 256 visual field. If these high-contrast cuts occur more than three times in any one-second window, the page fails compliance.
Caution: This video contains flashing lights that may trigger seizures.

#Step 1: Record the Website Content

To test a web page, you must create a screen recording of the suspect elements or user flows.

#Tips for High-Quality Capture:

  1. Choose your recording area: You can record either a specific area where you suspect a hazard or the whole screen. However, remember that the WCAG standard is based on a 10-degree visual field (mapped to a 341×256341 \times 256 pixel subarea at standard viewing distance), not the size of the whole screen or crop. Recording the entire browser window provides the most accurate spatial results.
  2. Use Native Framerates: Set your recording software to record at least 30 fps30\ \text{fps}. Recording at low framerates (like 15 fps15\ \text{fps}) can miss high-frequency flashes, yielding a false-pass result.
  3. Choose High Quality: Avoid heavy video compression or low bitrates. Compression artifacts can smooth out sharp contrast changes, skewing the mathematical relative luminance calculations.
  4. Capture the Interaction:
    • For Auto-play Videos and GIFs: Let the video run for at least 5 to 10 seconds to capture its full loop. Make sure to capture any flashing GIFs on the page.
    • For Hover and Focus Effects: Move your cursor on and off the interactive element repeatedly to simulate rapid hovering. Use keyboard tab keys to focus and defocus elements to verify their focus states.
    • For Re-rendering States: Trigger data reloads, search filters, or skeleton states to capture any flickering during layout updates.
    • For Parallax/Scroll Animations: Scroll up and down the page at typical and fast speeds, testing how scroll triggers behave under fast movement.

#Step 2: Upload and Analyze the Video

Open the free Video Audit tool after saving your screen recording.

  1. Select the File: Drag the screen recording file into the upload zone.
  2. Apply WCAG 2.2 Standard: Ensure the standard is set to WCAG (which checks for Criterion 2.3.1 compliance).
  3. Run the Scanner: Click Analyze Video. The engine decodes the frames locally inside your browser, mapping the exact coordinates of every pixel over time.

#Step 3: Interpret Web Violations

If the analyzer detects a violation, use the results screen to pinpoint the failing element on the page.

Flash Zone Highlights. A screenshot of the tool highlighting a violating hover animation on a button. Figure 3: Using Flash Zone overlays to isolate the flashing UI element.

#1. Identify the Failing Timecode

Scroll to the warning indicators on the timeline chart. Look at whether the failure is a Luminance Flash (overall brightness shifts) or a Saturated Red Flash (high-contrast red transitions).

#2. Locate the Element using Flash Zones

The video preview displays red bounding boxes (Flash Zones) directly over the offending region. Since you recorded your browser window, these boxes will align exactly with the button, loader, or banner that caused the failure.

#3. Verify the Spatial Size

Compare the hazard area size in the log. If a scroll-triggered parallax block is large (occupying more than 25% of a 341×256341 \times 256 CSS pixel area), it will trigger a spatial failure.


#How to Fix Website Violations

If your website fails compliance, web content teams and developers can resolve the issue without removing animation entirely. Apply these general design adjustments:

  • Lower the Contrast: Avoid elements that snap between extreme light and dark states. Soften the contrast changes or add a brief transition fade (easing) to eliminate the sudden edge of the flash.
  • Slow Down the Pace: Keep loading indicators, progress skeletons, and transition animations slow and steady. A smooth, continuous rotation is always safer than a fast pulse.
  • Add Play/Pause Controls: Give users a way to stop any auto-playing media, slide carousels, or animated GIFs.
  • Respect Motion Preferences: Implement checks to disable large scroll animations, parallax effects, or auto-playing background headers when users have set their system preferences to request reduced motion.

#Conclusion: Continuous Accessibility Auditing

Manual compliance checking is a great start for single landing pages. However, for web applications with hundreds of pages and constant updates, automated regression testing is critical.

Integrating photosensitive safety scanning into your build process using our upcoming Enterprise API will allow you to automatically verify recordings of headless browser tests, ensuring your site remains safe and WCAG-compliant with every deployment.


#Frequently Asked Questions

For macOS, QuickTime Player provides high-quality screen recording. For Windows, OBS Studio or the built-in Snipping Tool screen recorder are recommended. Ensure the recording framerate is set to at least 30fps to match standard display refresh rates.