How it works, and why it's safe
Shadeflip is small enough to read in one sitting. This page is for anyone who wants to know exactly what it does before trusting it.
At a glance
- Tiny. Under 20 KB in total, icons included. Plain JavaScript and CSS, no libraries, no build step. What you install is the source code as written.
- Offline. It never contacts a server. No analytics, no ads, no update checks of its own, no code loaded from anywhere.
- Untrackable. It keeps no history and leaves no fixed marker a website could use to spot it or follow you.
- Open. Every line is on GitHub under the BSD 3-Clause License.
What happens when you flip a site
- You click the toolbar button or press Alt+Shift+D.
- Shadeflip checks the page's background at a few points on screen to tell whether it already looks dark or light. This runs on your device and looks only at colors, never at text.
- If the page should change, the browser inverts its colors with a single CSS filter, then turns photos, video and embeds back so they keep their real colors. The page's own code and styles are left untouched.
- Your choice is saved for that exact address, such as example.com, and applied the next time it loads, before the page is shown. Other sites, including mail.example.com, are not affected.
If you ask for dark and the site is already dark, Shadeflip does nothing. If a site switches its own theme later, Shadeflip notices and adjusts.
What it stores
Only the sites you've set, each with dark, light or off, plus your default for all sites. For those sites it also notes whether the page looked dark or light last time, so the right color shows while it loads. Sites you merely visit are never written down.
Settings live in your browser's extension storage. If you use your browser's own sync, the browser may copy them to your other devices; Shadeflip itself never sends them anywhere. In private windows, a site you flip stays flipped until you close the tab and nothing is saved.
Why websites can't track you through it
To flip a page, Shadeflip marks it with an attribute. Its name is random, made up fresh on every page load and never stored, and the flip rules are added only to pages you've flipped. A site can't look for a known Shadeflip name, and nothing Shadeflip adds is the same on two sites or two visits, so it can't be used to link your visits together.
What each permission is for
- Access to all websites. To apply your choice as a page loads, before you see it, on any site you pick, without asking for permission site by site. Shadeflip reads only a page's address and background colors.
- Storage. To save your settings.
- Active tab and scripting. To flip a tab that was already open when you installed Shadeflip, and to add the flip rules to a page you've flipped.
- Context menus. To put a Shadeflip settings item on the toolbar button's right-click menu.
It doesn't ask for your history, tabs list, downloads, cookies or network traffic.
Check it yourself
The whole extension is six small files: manifest.json, content.js, background.js, flip.css, options.html and options.js. Read them on GitHub, or compare them with the files your browser installed. Found a problem? Open an issue. See also the privacy policy.