HSL to HEX Converter - Online Hue Saturation Lightness to Hex
Convert HSL and HSLA color specifications back to standard HEX codes. Useful when extracting colors from CSS preprocessors. Instant client-side conversion.
UD5 Toolkit
Simulate Windows High Contrast Mode & preview how your UI components render under forced-colors: active.
No system settings change required — compare normal vs. forced-colors side-by-side.
forced-color-adjust: none preserves specific elements •
Links get a distinct forced color (often yellow/blue) • Disabled elements use GrayText
forced-colors is a CSS media feature that detects when the user has enabled a forced color scheme on their operating system — most commonly Windows High Contrast Mode. When forced-colors: active, the browser aggressively overrides author-defined colors with system-defined colors (like Canvas, CanvasText, LinkText, etc.) to ensure readability for users with visual impairments. This affects background colors, text colors, borders, box-shadows, and even SVG fills.
<button>, <input>, and <a> automatically receive appropriate system colors, but custom-styled <div>-based buttons may not adapt correctly.
Canvas (page background), CanvasText (page text), LinkText (unvisited links), ButtonFace (button backgrounds), ButtonText (button text), Field (input backgrounds), Highlight (selection background), GrayText (disabled text), and Mark (highlighted text background). Using these keywords in your CSS helps your site adapt gracefully to forced-colors mode without extra effort. View the reference table above for a complete mapping.
forced-color-adjust: none tells the browser not to override colors on a specific element (or its subtree). Use it sparingly — only for elements that must retain their original colors to be functional, such as: brand logos, color-coded data visualizations, product swatches, or photo galleries. .brand-logo { forced-color-adjust: none; } — this preserves your logo's exact brand color even in high contrast mode. The default value is auto, which allows the browser to adjust colors. There's also preserve-parent-color for inheriting the parent's forced-color adjustment state.
prefers-contrast detects the user's contrast preference (high, low, or no-preference) and can be used to proactively enhance contrast. forced-colors detects when the OS is forcefully overriding all colors. They often overlap — if forced-colors: active is true, prefers-contrast: high is also typically true. However, prefers-contrast: high can be set independently (e.g., on macOS via Accessibility settings) without forced-colors being active. Use prefers-contrast to voluntarily increase contrast; use forced-colors to detect when the OS takes full control.
forced-colors: active. color, background-color, border-color, outline-color, text-decoration-color, text-shadow, box-shadow, caret-color, column-rule-color, and scrollbar-color (in Firefox). Background images are also removed. SVG fill and stroke may be adjusted. Properties like opacity, transform, display, position, and layout-related properties remain unaffected.
<div> or <span> elements with custom CSS (instead of semantic <button> elements), the browser may not recognize them as buttons and won't apply ButtonFace/ButtonText system colors. Always use semantic HTML: <button>, <a>, <input>, <select>. If you must use a <div>, add role="button" and ensure proper system color keywords are used in your CSS.
forced-colors media queries only apply to screen rendering when the OS-level high contrast setting is active. Print stylesheets use the @media print query and are unaffected by forced-colors mode. However, if your print styles rely on the same system color keywords, they will render with the printer's default color handling (which is typically not high contrast).
prefers-color-scheme: dark) is a user preference for a dark color scheme that still respects author styles. Forced-colors mode is an accessibility override where the OS takes full control of colors, replacing them with a strict limited palette (usually black/white + 1 accent color). Dark mode still allows rich color palettes; forced-colors flattens everything to maximum contrast.
Use <button> not <div> for clickable elements. Semantic elements automatically receive correct system colors in forced-colors mode.
Since box-shadows vanish in forced-colors, rely on borders or outlines for visual separation between components.
Use currentColor for SVG fills/strokes — it automatically maps to CanvasText in forced-colors mode.
Convert HSL and HSLA color specifications back to standard HEX codes. Useful when extracting colors from CSS preprocessors. Instant client-side conversion.
Translate HEX colors to HSL values and adjust lightness and saturation visually. Great for creating color variations in CSS design systems.
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.