The 2025 TestParty Guide to WCAG 2.3.1 – Three Flashes or Below Threshold (Level A)
Why did the developer remove the strobe effect from their hero banner? Because they wanted their site to be a hit—not trigger one.
WCAG 2.3.1 Three Flashes or Below Threshold is one of the most critical accessibility requirements: it prevents content from flashing in ways that can trigger seizures in people with photosensitive epilepsy. If your site contains anything that flashes more than three times per second, you're not just failing WCAG Level A—you're creating a genuine health hazard.
Table of Contents
- What WCAG 2.3.1 Requires
- Why This Matters
- Quick Implementation Guide
- Common Mistakes to Avoid
- How to Test for WCAG 2.3.1
- How TestParty Helps
- FAQs
What WCAG 2.3.1 Requires
WCAG 2.3.1 requires that web pages do not contain content that flashes more than three times in any one-second period. If flashing content is present, it must fall below the general flash threshold and red flash threshold defined in the WCAG guidelines.
Key requirements:
- No more than three flashes per second: Content that blinks, flashes, or strobes must not exceed this frequency
- Small flashing areas may be exempt: If the flashing area is sufficiently small (less than 25% of 10 degrees of visual field), it may be acceptable
- Below threshold exemption: Flashing that falls below both the general flash and red flash thresholds is permitted
- Universal application: This criterion applies to ALL content on the page, even content not intended to meet other success criteria (Conformance Requirement 5: Non-Interference)
What's affected:
- Animated GIFs and image sequences
- Video content with strobe effects
- CSS animations and transitions
- JavaScript-driven visual effects
- Canvas and WebGL animations
- Advertising content and third-party embeds
Why This Matters
Photosensitive epilepsy affects approximately 1 in 4,000 people. Flashing content can trigger seizures, loss of consciousness, and other serious medical events. This isn't a minor usability issue—it's a safety imperative.
From a legal standpoint, WCAG 2.3.1 is a Level A requirement, making it mandatory for ADA Title II and III compliance, Section 508 conformance, EN 301 549 adherence, and European Accessibility Act compliance. Courts have ruled that inaccessible websites constitute discrimination under the ADA, and seizure-triggering content represents one of the most clear-cut violations.
The business case is equally compelling. Beyond avoiding litigation, preventing seizure-triggering content protects your brand reputation and demonstrates genuine commitment to user safety. One viral incident involving flashing content can cause lasting reputational damage and erode user trust across your entire customer base.
Quick Implementation Guide
1. Audit all animated content
Review every animation, video, GIF, and dynamic effect on your site. Identify anything that flashes, blinks, or rapidly changes between contrasting states.
2. Measure flash frequency
Count flashes per second for any suspect content. If it exceeds three flashes per second, it fails WCAG 2.3.1 unless it meets the small area or below-threshold exemptions.
3. Remove or redesign problematic content
For most teams, the safest approach is to eliminate rapid flashing entirely. Replace strobe effects with smooth transitions, fade effects, or static alternatives.
4. Implement safe animation patterns
Use CSS animations with controlled timing:
/* Safe: Smooth fade, no rapid flashing */
.notification {
animation: gentle-pulse 2s ease-in-out infinite;
}
@keyframes gentle-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
/* Unsafe: Rapid blinking */
.alert-bad {
animation: rapid-blink 0.3s linear infinite; /* 3.3 flashes/sec - FAILS */
}
@keyframes rapid-blink {
0%, 49% { opacity: 1; }
50%, 100% { opacity: 0; }
}5. Control third-party content
Ads, embedded videos, and social media widgets can introduce flashing content you don't control. Use iframe sandboxing, content security policies, and vendor agreements to manage risk.
Key techniques:
- G19: Ensure no component flashes more than three times per second
- G176: Keep any flashing area small enough to meet the exemption
- G15: Use specialized tools to measure flash thresholds scientifically
Common Mistakes to Avoid
Assuming "it looks fine to me" is sufficient testing
Photosensitive epilepsy triggers aren't always obvious to neurotypical viewers. Content that seems like a "cool effect" to you might be dangerous to others. Always measure objectively.
Forgetting about video content
Uploaded videos, especially user-generated content or stock footage, can contain flashing sequences. Review all video assets, not just animations you've coded yourself.
Ignoring third-party content
Ad networks, analytics scripts, and embedded widgets can inject flashing content dynamically. You're still responsible for WCAG compliance even if the violation comes from a third party.
Relying on autoplay policies alone
While preventing autoplay helps, users can still click to play problematic content. You need to either remove the flashing or provide advance warning (though prevention is always better than warning).
How to Test for WCAG 2.3.1
Automated scanning:
- Use tools like the Photosensitive Epilepsy Analysis Tool (PEAT) to analyze video content
- TestParty's automated scanning detects CSS animations and JavaScript effects with rapid timing
- Browser DevTools can slow down animations for frame-by-frame inspection
Manual review checklist:
- Count flashes: Play all animated content at normal speed and count flashes per second
- Measure flash area: If content flashes 3+ times per second, calculate whether the flashing area is small enough for exemption
- Check contrast ratios: High-contrast flashing (especially red) is more dangerous than low-contrast
- Test all states: Hover effects, loading spinners, error states, and notification badges can all introduce flashing
What automated tools catch:
Automated tools can detect CSS animations with rapid timing, JavaScript setInterval/setTimeout patterns that create flashing, and some obvious GIF-based violations.
What requires human judgment:
Determining whether flashing falls below the general flash threshold requires specialized measurement tools and expertise. Assessing the combined effect of multiple flashing elements on a page needs human review. Video content analysis requires frame-by-frame inspection or specialized software like PEAT.
How TestParty Helps
TestParty's accessibility platform provides comprehensive detection and prevention of WCAG 2.3.1 violations across your entire digital presence.
What TestParty detects:
TestParty's automated scanning analyzes your site's DOM and source code to identify:
- CSS animations and transitions with timing functions that create rapid flashing (keyframes with < 0.33s cycles)
- JavaScript-based animations using setInterval, setTimeout, or requestAnimationFrame with dangerous frequencies
- Animated GIFs with frame rates exceeding three flashes per second
- Canvas and WebGL rendering loops that produce rapid visual changes
- Video elements that may contain flashing sequences (flagged for manual review)
- Third-party scripts and iframes that inject dynamic content with potential flash risks
TestParty's engine calculates animation frequency, measures flash area as a percentage of viewport, and flags any content that exceeds the three-flash-per-second threshold without meeting exemption criteria.
How TestParty suggests fixes:
When TestParty identifies a potential WCAG 2.3.1 violation, it generates specific remediation guidance:
- CSS animation fixes: Auto-suggested timing adjustments to slow animations below the threshold (e.g., changing
animation-duration: 0.2stoanimation-duration: 0.5s) - JavaScript remediation: Code diffs showing how to modify setInterval/setTimeout calls to safe frequencies
- Alternative effects: Recommendations for smooth transitions, fade effects, or static alternatives that achieve similar visual goals without flashing
- Video content guidance: Flagging videos for manual review with PEAT or similar tools, with embedded instructions on how to conduct the analysis
All suggested fixes are reviewed by your development team or TestParty accessibility specialists before implementation, ensuring changes preserve intended functionality while eliminating seizure risks.
Developer workflow integration:
TestParty integrates directly into your development lifecycle to prevent WCAG 2.3.1 violations before they reach production:
- CI/CD gates: Pull requests containing animations that exceed the flash threshold are automatically flagged with line-level annotations showing the problematic code
- Pre-commit hooks: Developers receive real-time feedback in their IDE when adding CSS animations or JavaScript effects with dangerous timing
- Regression prevention: TestParty monitors animation timing across deployments, alerting teams if code changes introduce new flashing content
- Template-level fixes: For sites built on Shopify, WordPress, or other CMS platforms, TestParty works at the theme level so animation fixes cascade across all pages using that template
This shift-left approach catches violations during code review, not after launch, dramatically reducing the risk of shipping seizure-triggering content.
Ongoing monitoring:
TestParty continuously scans your site for WCAG 2.3.1 compliance:
- Dynamic content tracking: Monitors for new animations introduced through CMS updates, A/B tests, or third-party scripts
- Video asset auditing: Flags newly uploaded video content for manual flash analysis
- Compliance dashboards: Real-time visibility into animation timing across your entire site, with drill-down to specific components
- Audit-ready reports: Documentation showing your organization's proactive approach to preventing seizure-triggering content, valuable for legal defense and procurement requirements
Because TestParty has performed tens of thousands of accessibility audits across sites responsible for billions in ecommerce revenue, the platform recognizes common patterns of WCAG 2.3.1 violations and prioritizes the most critical risks for your team.
FAQs About WCAG 2.3.1
What is WCAG 2.3.1 in plain language?
WCAG 2.3.1 requires that nothing on your website flashes more than three times per second. Flashing content can trigger seizures in people with photosensitive epilepsy, making this a critical safety requirement, not just an accessibility guideline.
Is WCAG 2.3.1 required for ADA compliance?
Yes. WCAG 2.3.1 is a Level A success criterion, which means it's part of the baseline requirements for ADA compliance. Courts have consistently held that websites must meet at least WCAG 2.0 Level AA (which includes all Level A criteria), and WCAG 2.1/2.2 are increasingly becoming the standard.
Does this apply to video content I embed from YouTube or Vimeo?
Yes. You're responsible for all content on your site, including embedded videos. If a video contains flashing sequences that violate WCAG 2.3.1, your site fails compliance even if you didn't create the video. Review all embedded content or provide alternative versions without flashing.
What if my flashing content is really small—does that count?
Small flashing areas may be exempt if they're less than 25% of 10 degrees of visual field (roughly a 341 x 256 pixel rectangle at typical viewing distance). However, calculating this correctly requires technical expertise, and the safer approach is to eliminate rapid flashing entirely rather than rely on the small-area exemption.
Can I just add a warning that my site contains flashing content?
Warnings don't satisfy WCAG 2.3.1. The criterion requires that you either eliminate the flashing or ensure it falls below the defined thresholds. A warning might reduce legal liability slightly, but it doesn't make your site compliant or safe for users with photosensitive epilepsy.
Some TestParty features described in this article are currently under development. Visit TestParty.ai to learn more about our current capabilities and roadmap, or book a demo at TestParty.ai/book-a-demo to see TestParty in action.
Disclaimer: Some of this article was generated with Large Language Models (LLMs) and Artificial Intelligence (AI). There may be some errors and we advise you to consult with human professionals for detailed questions.
Stay informed
Accessibility insights delivered
straight to your inbox.


Automate the software work for accessibility compliance, end-to-end.
Empowering businesses with seamless digital accessibility solutions—simple, inclusive, effective.
Book a Demo