Overview
Real-time photosensitivity protection for the web.
NeuroShield detects and blocks flashing, strobing, and dangerous visual patterns across ALL websites — not just YouTube. Protecting people with epilepsy, migraines, and visual snow syndrome.
3% of people with epilepsy have photosensitive seizures triggered by visual stimuli. Over 1 billion people live with migraines. Visual Snow Syndrome affects 2-3% of the population. Every existing flash detection tool only works on YouTube. The rest of the web — social feeds, news sites, ads, games — is unguarded. NeuroShield works everywhere.
HOW IT WORKS
NeuroShield samples video frames at 15 fps, downscaled to 32x32 pixels for performance. Each frame is analyzed using sRGB linearization (IEC 61966-2-1) and ITU-R BT.709 relative luminance — the same math the WCAG spec mandates.
A sliding 1-second window counts opposing luminance transitions. If the delta exceeds 0.1 and the darker state is below 0.80 relative luminance, it counts as a flash. Three or more flashes per second (at default sensitivity) triggers a protective overlay.
Region-based spatial analysis divides each frame into a 4x4 grid, checking 16 independent zones. This catches localized strobes — like a flashing ad in one corner — that whole-frame averaging would miss.
Cross-origin videos where pixel analysis is blocked by browser security get an opt-in protective CSS filter instead.
SENSITIVITY LEVELS
Low — only extreme strobing (5+ flashes/sec)
Medium — WCAG 2.3.1 standard (3+ flashes/sec) [default]
High — for migraine and VSS sufferers (2+ flashes/sec)
Maximum — full protection, any significant flash (1+ flash/sec)
FEATURES
- Real-time flash detection using WCAG 2.3.1 luminance thresholds with sRGB linearization
- Works on every website — not just YouTube
- Region-based spatial analysis catches localized flashes
- Red flash detection per WCAG 2.3.2 (high seizure risk)
- Warning overlay with Dim, Pause, and Continue controls
- Protective CSS filter fallback for cross-origin videos
- Accessible overlay: ARIA roles, keyboard navigation (Escape to dismiss), screen reader support
- Starts at document_start — protects before any content renders
- Resilient: survives extension updates and service worker restarts
- Sensitivity from WCAG standard (3 Hz) down to maximum protection (1 Hz)
WHEN A FLASH IS DETECTED
A dark overlay immediately blocks the dangerous content. You get three options:
Dim — reduces brightness to 30%, keeps video playing
Pause — stops the video entirely
Continue — dismisses the warning if you choose to proceed
The overlay supports keyboard navigation and screen readers. Press Escape to dismiss.
PRIVACY
NeuroShield runs entirely on your device. Period.
- Zero data collection
- Zero network requests
- Zero analytics or tracking
- Zero accounts required
- Only stores your sensitivity preference locally using Chrome storage
All visual analysis happens in memory and is never saved, logged, or transmitted anywhere.
Full privacy policy: https://github.com/OMARVII/Neuroshield/blob/main/PRIVACY.md
TECHNICAL DETAILS
- Chrome Extension Manifest V3
- WCAG 2.3.1 (Level A) and 2.3.2 (Level AAA) compliant
- ITU-R BT.709 relative luminance calculation
- IEC 61966-2-1 sRGB linearization
- 84 unit tests, zero external dependencies
- Open source: https://github.com/OMARVII/Neuroshield
- MIT License
PERMISSIONS EXPLAINED
Storage: saves your sensitivity preference locally on your device.
Content script access (all URLs): required to inject the flash detection engine into webpages — it only analyzes visual luminance of media elements, never reads page content, form data, cookies, or personal information.
WHO THIS IS FOR
- People with photosensitive epilepsy
- Migraine sufferers sensitive to visual stimuli
- People with Visual Snow Syndrome (VSS)
- Parents protecting children from flashing content
- Anyone who finds strobing content uncomfortable
- Accessibility professionals testing web content
Made by Omar Khaled
https://www.omar-khaled.com
Tags
Privacy Practices
🔐 Security Analysis
This extension hasn't been security-scanned yet.