Paletmin

ChromeFree, MIT licenseNo network requests

Light or dark, one tab at a time.

Paletmin switches the website in the current tab between its light and dark palette with one click. The tab keeps your choice until you close it, and the rest of Chrome stays as it is. No popup, no settings page, no account, and no data collection.

min.toolson GitHub Coming to the Chrome Web Store

Chrome 118 or later on macOS, Windows, Linux, or ChromeOS. Free and open source.

One job

Click once. The site switches.

Paletmin changes which palette a website thinks you prefer, the same signal your operating system sends. The site applies the light or dark design it already has, and Paletmin adds nothing of its own.

Three modes, one click

Auto follows Chrome's own light or dark setting. Dark and Light force the website's palette. Each click moves the tab to its next mode, and the first click always changes the page.

One tab at a time

Each tab keeps its mode until you close it. Read one site dark while the rest of Chrome stays light, or the other way round.

The website's own dark theme

If a site has a dark palette, you get the real one, designed by its makers. If it has none, or ignores the preference, nothing changes.

Rewrites the site's rules

Stylesheet rules, media attributes, and nested groups that mention prefers-color-scheme are swapped inside the tab, and put back when you return to Auto.

Scripts see it too

matchMedia() answers for the chosen palette and fires change events, so themes driven by JavaScript switch along with the stylesheets.

Form controls follow

Pages that declare color-scheme: light dark get it forced too, which drives light-dark() colors, scrollbars, and form controls.

Every frame, every navigation

The mode applies in every frame of the tab and again after each navigation, until you close the tab.

An icon that matches Chrome

The toolbar icon shows the tab's mode and is drawn for Chrome's light or dark toolbar, so it reads well in either.

Nothing leaves the tab

No network requests, no account, no analytics, and no server. The only things stored are each forced tab's mode and whether Chrome is light or dark.

How it works

Flip the signal, not the page.

A website with a dark theme asks the browser one question: does this person prefer dark or light? Paletmin changes the answer inside the tab, so the site applies the design it already has.

  • In stylesheets

    Every @media and @import rule that mentions prefers-color-scheme is rewritten to name the other scheme, including rules nested in @supports and @layer.

  • In markup

    media attributes on link, style, source, and meta elements are swapped the same way, so alternate stylesheets and picture sources follow.

  • In scripts

    A script that runs before the page's own makes matchMedia() report the chosen palette and sends change events, as a real switch would.

Three modes

Auto, Dark, Light. Then back.

Click the toolbar icon to cycle. The order depends on Chrome's own setting, so the first click always shows the other palette.

  • Auto

    The tab follows Chrome's light or dark setting. Every tab starts here, and nothing is stored for it.

  • Dark

    The website shows its dark palette, whatever Chrome is set to.

  • Light

    The website shows its light palette, whatever Chrome is set to.

  • Keyboard

    Assign a shortcut at chrome://extensions/shortcuts to cycle without reaching for the mouse.

Private by design

Nothing leaves the tab.

Paletmin reads and rewrites the page's stylesheets inside the tab and makes no network requests at all. There is no Paletmin account, no analytics, and no server.

  • Why Chrome warns about all websites

    Running a script on a page is what Chrome calls reading and changing your data. Paletmin needs that to swap the page's rules, and does nothing else with the access.

  • Two small things stored

    Each forced tab's mode, in session storage that Chrome clears when it quits, and whether Chrome is light or dark, so the toolbar icon is right after a restart.

  • No usage tracking

    No account, no analytics, no advertising, and no record of the pages you visit. The source is public, so you can read exactly what runs.

The details

Small things, done carefully.

Requirements

Google Chrome 118 or later on macOS, Windows, Linux, or ChromeOS. Nothing else to install, and no account.

Nothing to set up

No popup, no settings page, no setup assistant. Install it, and the icon is ready in the toolbar.

Local files

Turn on Allow access to file URLs on the extension's details page to switch pages opened from disk.

When a site does not change

If a website has no dark theme, or ignores the preference, nothing happens. Rules in stylesheets from other sites and styles in shadow roots are left as they are.

Clean updates

After an update, the new scripts tell the previous ones in open tabs to restore the page and step aside, so a forced tab is not left with stale changes.

Chrome's own pages

chrome:// pages and the Chrome Web Store do not allow extensions to run, so they stay on Auto.

Open source

The complete source is on GitHub under the MIT License, with a test suite that drives the extension in headless Chromium.

Easy to remove

Remove it at chrome://extensions. Chrome deletes the extension together with the little it stored.

Support and policies

Help, privacy, and terms.

Find help and read the extension's privacy policy and terms.

Coming to the Chrome Web Store.

Paletmin is a Chrome extension. Follow the project for launch updates, load it unpacked from the repository today, or visit Support for help.