Overview
Per-site dark mode that only overrides genuinely light elements, leaving already-dark UI and images untouched.
Selective Dark Mode A dark mode extension that behaves like a design decision, not a filter. Instead of inverting every color on a page, it looks at each element's actual background and only changes the ones that are genuinely light — leaving anything already dark, and every image, completely alone. WHY THIS EXISTS Popular dark mode extensions are excellent, but they typically require standing permission to read and modify every page you visit, from a company whose full data practices you can't easily verify. Selective Dark Mode takes a different approach: it has no access to any website until you explicitly turn it on for that specific site, and it's small enough — plain JavaScript, no dependencies, no build step — to actually read yourself. The full source is public. HOW IT WORKS Rather than a blanket CSS invert (which wrecks anything already dark and destroys photos), the extension walks each page's elements and inspects their real computed background color: - Genuinely light backgrounds are replaced with a dark color you control with a slider (black to dark gray). - Elements that are already dark — a site's own dark navigation bar, a dark card on an otherwise light page — are left completely untouched, background and text both. - Text is only recolored where it was originally dark (meant to sit on a light background). The replacement color runs from white to sepia to a warm orange, also on a slider. - Images, video, canvas, and SVG are never touched. No inversion, no filters, no exceptions. It also handles a handful of real-world edge cases: CSS gradients used in headers/navs (analyzed the same way as a solid color), "active state" pill highlights painted via ::before/::after pseudo-elements, form fields whose typed text isn't a normal DOM text node, decorative aria-hidden icon glyphs, and native scrollbar/form-control theming. PERMISSIONS AND PRIVACY The extension requests no access to any site by default. The first time you enable it on a new domain, Chrome will show its native permission prompt for that one site — turning a site off revokes that access again rather than just hiding the effect. It makes no network requests, collects no data, and has no analytics of any kind. Your enabled sites and slider preferences are stored locally on your device only. Privacy policy: https://github.com/benjifriedman/selective-dark-mode/blob/main/PRIVACY.md Source code: https://github.com/benjifriedman/selective-dark-mode LIMITATIONS This is a set of heuristics, not a hand-tuned theme engine. A few things it doesn't (yet) handle: scrollbars a site has custom-styled itself (only native ones are overridden), content inside Shadow DOM, and the occasional very dynamic page that needs a manual toggle-off/on after a slow client-side render. Issues and pull requests are welcome.
0 out of 5No ratings
Details
- Version1.1
- UpdatedAugust 9, 2026
- Size31.89KiB
- LanguagesEnglish (United States)
- DeveloperWebsite
Email
benjifriedman@gmail.com - Non-traderThis developer has not identified itself as a trader. For consumers in the European Union, please note that consumer rights do not apply to contracts between you and this developer.
Privacy
Selective Dark Mode has disclosed the following information regarding the collection and usage of your data. More detailed information can be found in the developer's privacy policy.
Selective Dark Mode handles the following:
This developer declares that your data is
- Not being sold to third parties, outside of the approved use cases
- Not being used or transferred for purposes that are unrelated to the item's core functionality
- Not being used or transferred to determine creditworthiness or for lending purposes
Support
For help with questions, suggestions, or problems, please open this page on your desktop browser