Detect dark mode
Read the prefers-color-scheme media feature.
function isDarkMode() { return window.matchMedia?.('(prefers-color-scheme: dark)').matches ?? false; }
Usage
// With the system appearance set to dark:
isDarkMode(); // → true
Know the limits
- The preference can change while the page is open: listen for the change event on the MediaQueryList.
- For styling alone, the CSS media query or light-dark() needs no JavaScript.
The function above is the code the usage lines run. It does not validate its arguments; add checks where it receives untrusted input.
Source & maintenance
Based on Detect dark mode from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
A function instead of a value read once at load. Executed in Chromium with dark mode emulated. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Convert Celsius to Fahrenheit — Apply the temperature conversion without rounding the result.
- Convert hex to RGB — Expand #rgb if needed and read the red, green and blue channels.
- Convert URL parameters to object — Read a query string into an object; repeated keys become arrays.