Photosensitive Epilepsy Risk
High-frequency animation and strobing content can trigger seizures in susceptible users. Current upload systems have no preemptive protection mechanism.
People keep asking X for GIF banners and quick sound reactions. Fast flashing can cause seizures, and sound can be used to harass. This is the safety layer to ship them with: specified with numbers, built as a working prototype, and testable today.
A sound reaction should add tone without demanding attention.
Mm-hmmSound reaction · 2 s 2 Sound reaction, silent until you tap ▶If X introduces dynamic profile headers and sound reactions, the creative upside is obvious. So are the new risks in accessibility, abuse prevention and regulatory exposure that static images do not carry. This proposal is written for the product and engineering teams who would own that launch; X has announced no such feature, and nothing here claims otherwise.
This is not about restricting creative features. It is about building the minimum safety and compliance infrastructure the platform will eventually need — before it becomes expensive or harmful to users.
This framework establishes a practical governance layer to allow dynamic headers to ship responsibly. It prioritizes three core objectives:
What you get, if you are the team that would build this
Static profile headers carry relatively low operational and regulatory risk. Dynamic and interactive media fundamentally change the risk profile in three material ways:
High-frequency animation and strobing content can trigger seizures in susceptible users. Current upload systems have no preemptive protection mechanism.
High-velocity, unverified media uploads create new attack surfaces for harassment, impersonation, and coordinated abuse campaigns.
EU DSA obligations already apply to Very Large Online Platforms like X, and the EU AI Act adds transparency rules for AI-generated audio and video (Article 50).
A layered governance approach designed to balance creator velocity with user safety and regulatory compliance.
Mandatory Photosensitive Epilepsy Analysis (PEA) before any dynamic media is published.
Hard constraints on file size, frame rate, duration, and playback behavior.
Strictly opt-in biometric anchoring with a clear, proportionate enforcement model.
All dynamic media must pass a Photosensitive Epilepsy Analysis (PEA) before publication. This is a hard blocking control.
The scan is a simplified screen based on WCAG 2.3.1’s general and red flash thresholds, not a certified photosensitive epilepsy analysis. A PASS means the clip stayed under these limits in this check; it is not a safety guarantee.
All uploads are transcoded server-side from GIF to WebM/VP9. We expect this to cut file size by roughly 60–80% (an estimate from typical GIF-to-VP9 results, not a measured benchmark) and to improve playback on lower-end Android devices.
Dynamic media carries meaningfully higher abuse risk than static images. This framework uses a strictly opt-in identity anchor through an ID-verification vendor such as AU10TIX; whether X already uses one for this purpose is not assumed here. Users who decline verification retain full access to static headers and all non-dynamic profile features.
Warning + temporary restriction on dynamic uploads
12-hour suspension of dynamic media upload capability
Permanent suspension reserved exclusively for verified malicious patterns (automated probing, coordinated attacks). Standard users receive a 7-day suspension + mandatory compliance review.
Limited 30-day rollout. Monitor CPU/GPU load, false positive rate, and user complaints.
30-day gateExpanded rollout with strict A/B testing. Gate: complaint volume below 0.5%.
<0.5% complaintsFull platform rollout with automatic low-power mode and reduced bitrate for limited-data users.
Full availabilityThis framework is intentionally scoped. The following limitations are acknowledged:
This framework governs upload-time controls. Malicious client-side injection after scanning requires platform-level sandboxing.
Automated PEA scanning has known technical limitations against hidden triggers. Behavioral signals provide a secondary detection layer.
Scoped exclusively to dynamic media uploads. Static headers remain unaffected. Existing 30-day retention policies apply.
The provisional publish model was specifically designed to protect legitimate creators from overly aggressive automated blocking.
Used as the accessibility benchmark, including the general and red flash thresholds. ADA Title II covers state and local governments, so it is not cited as binding on X.
BenchmarkArticles 16, 17 and 20 (notice and action, statements of reasons, internal complaints) mapped to header moderation; Articles 34 and 35 to systemic risk assessment and mitigation.
Art. 16 · 17 · 20 · 34 · 35Article 50 transparency rules applied to AI-generated or AI-altered media. The Article 14 human-oversight rules cover high-risk systems, not content moderation, so human review here is a design choice, not a legal requirement.
Art. 50Govern, Control, and Communicate functions mapped to dynamic media workflows.
Govern · Control · CommunicateA browser-only concept prototype of the two features this framework covers. A dynamic GIF profile header that must pass the photosensitivity scan and guardrails before it goes live, and short sound reactions that never autoplay, carry captions and pass a preflight check.
The banner on the right is a real GIF playing straight from GIPHY, the way X serves GIFs. The prototype fetches it and runs the flash scan in your browser before it is allowed to play; an earlier pass on the owner’s copy found 14 fps on a 1.3-second loop, 0.5 MB and 1 general flash per second, under the limit of 3. Two more real GIFs play from Tenor on other profiles; one runs at 20 fps and is drawn at the 15 fps cap. Open a profile, tap Edit profile and scan the other samples or a GIF or video of your own (it never leaves your browser) to see which are blocked, rejected or published with a warning. Tap any name in the feed to see that person’s banner, then try sound reactions. All other accounts are fictional; the abuse and copyright checks are labeled as simulated.
Open Sound ReactionsNot affiliated with X. Source code is in the sound-reactions-src folder of this repository.