Color Contrast Ratio Tester - Online WCAG AA/AAA Check
Enter foreground and background colors to instantly see the contrast ratio and pass/fail for AA and AAA. Simple and fast.
UD5 Toolkit
Detect your system's motion preference and preview how animations behave under
prefers-reduced-motion: reduce
Your system reports no-preference — full animations are applied.
no-preferencewindow.matchMedia('(prefers-reduced-motion: reduce)') to detect your OS-level accessibility setting. Changes are monitored in real-time.
These elements animate with standard motion. Toggle the Simulate Reduced switch above to preview the accessible alternative.
/* Standard animations */
.my-element {
animation: slideIn 0.5s ease;
}
@media (prefers-reduced-motion: reduce) {
.my-element {
animation: none;
transition: opacity 0.3s ease;
opacity: 1;
}
}
const mq = window.matchMedia(
'(prefers-reduced-motion: reduce)'
);
if (mq.matches) {
// Disable animations
disableAnimations();
}
// Listen for changes
mq.addEventListener('change', (e) => {
if (e.matches) {
disableAnimations();
} else {
enableAnimations();
}
});
reduce, it signals that the user prefers minimal or no animation. This is critical for accessibility — users with vestibular disorders, motion sensitivity, or cognitive conditions can experience dizziness, nausea, or disorientation from excessive animations. Respecting this preference is part of WCAG 2.2 Success Criterion 2.3.3 (Animation from Interactions) and demonstrates inclusive design practices.
@media (prefers-reduced-motion: reduce) media query to override animations. For example, set animation: none and transition: none (or use subtle opacity transitions). You can also reduce animation duration, disable parallax effects, and replace motion-heavy interactions with simple fades. A best practice is to define all animations inside a media query for no-preference so that reduced motion is the safer default.
window.matchMedia('(prefers-reduced-motion: reduce)'). Check the .matches property for the current state, and attach a change event listener to respond dynamically when the user toggles the setting. This is useful for JavaScript-driven animations, libraries like GSAP or Framer Motion, and for programmatically disabling video autoplay or carousels.
prefers-reduced-motion: reduce can be a signal to skip heavy animation workloads, reduce GPU usage, and serve lighter experiences. However, don't rely on it as the sole performance optimization — many users who would benefit from reduced motion (e.g., on low-power devices) may not have the setting enabled. Combine it with device memory APIs, battery status, or network conditions for a comprehensive adaptive loading strategy.
motion-reduce and motion-safe utility classes out of the box. Framer Motion (React) has a useReducedMotion() hook. GSAP allows checking the media query before creating tweens. Bootstrap 5 uses prefers-reduced-motion in its core to conditionally disable transitions. Most modern animation libraries now include built-in support — always check the docs for accessibility options before implementing custom animation solutions.
Enter foreground and background colors to instantly see the contrast ratio and pass/fail for AA and AAA. Simple and fast.
Generate a pop signal to determine if speakers are wired in phase. Quick stereo test.
Display striped patterns that can cause visual distortion. Learn about visual stress. Switch colors.
Display an astigmatism dial and instructions for self-assessment. Educational, not a medical diagnosis.
Hear a word spoken by browser TTS and type the spelling. Choose difficulty or paste your own list. Great for kids. Local only.
Override your browser's geolocation to any coordinates and test how your app responds. For development and privacy testing.
Send HEAD requests to popular websites and measure the round‑trip time. Quick network health check. Client‑side.
Hear text spoken word by word with boundary events. See the exact index and character. Advanced TTS dev tool.
Load a video and visually check if audio aligns with lips. Use frame‑by‑frame stepping. Debug playback issues.
Toggle a screen wake lock to prevent the device from dimming or sleeping. See the lock state and learn the API.
Check if your page triggers the beforeinstallprompt event. Simulate the install flow. Debug PWA installability.
Measure your visual and auditory reaction speed. Average and best times shown. No data collected. Pure Javascript timing.
Paste your Accept‑Language header and see which languages your site should serve based on quality values. Internationalization helper.
Test how your page loads under slow, 3G, or offline conditions by intercepting fetch and applying delays. No DevTools needed.
Override your browser's geolocation to any coordinates and test how your app responds. For development and privacy testing.
Check current screen orientation and test the lock API. Useful for mobile web apps. Demo with code.
Test the Fullscreen API: request fullscreen on a colored div, detect changes, and copy the JavaScript boilerplate.
Test the Web Share API by sharing text, links, and files directly from the browser. Check compatibility and see example code.
Check if your browser and display support the wider DCI‑P3 color space. See the difference with a simple test pattern.
Enter any phrase and instantly see if it's a palindrome, ignoring spaces and punctuation. Fun for word nerds.
Generate random, formatted ID numbers that match pattern rules for various countries. For testing input validation. No real data.
Pick a method, URL, headers, and body, then send an HTTP request directly from your browser. Debug APIs easily.
Quickly test if your webcam, microphone, and speakers work correctly. See live video and audio meter. No data sent.
Generate random but realistic‑looking data arrays (users, products, orders) with typos and missing fields. For test robustness.
Simple interactive eye dominance test: hold up a virtual dot and see which eye stays aligned. Educational.
Build an iframe with different sandbox flags and see live which features are blocked. For secure embedding.
Simulate random mouse moves, clicks, or keystrokes to test idle‑timeout logic. Stops when you move the mouse. Dev test.
Paste a test card number to verify Luhn algorithm, identify issuer (Visa, MC), and check length. No real data.
Play left‑only, right‑only, and frequency sweeps to test your speakers or headphones. Quick audio check.
See a live VU meter of your microphone's input level. Test if your mic is working and adjust gain. Privacy‑friendly.