How to get dark mode in Google Sheets
Google Sheets on the web has no true built-in dark mode. This page explains what the available options actually do, why most of them leave the grid white, and what it takes to darken the sheet itself.
The short answer
| Approach | Darkens the interface | Darkens the grid | Keeps your cell colours |
|---|---|---|---|
| Google Sheets mobile app dark theme | Yes | Yes | Yes |
| Browser or OS dark mode | No | No | — |
| Chrome’s “Force Dark Mode” flag | Partly | Usually not | Often no |
| Generic dark-mode extensions | Usually | Usually not | Often no |
| A canvas-aware extension such as Darkkle | Yes | Yes | Yes |
The mobile apps for Android and iOS do have a dark theme. The web app does not.
Why the grid stays white
Most of a web page is built from HTML elements that carry ordinary CSS. A dark-mode extension can restyle those elements, and the page turns dark.
The Google Sheets grid is different. It is painted onto an HTML <canvas> element, the same technology used for browser games and charts. A canvas is a single rectangle of pixels. From the outside, there are no cells, no rows, no columns, and no text to restyle — only an image that the page draws and redraws as you scroll.
This is why so many people report the same result: the menus, toolbar, and sidebars go dark, and the spreadsheet itself remains a bright white block in the middle. The extension restyled everything it could see. It could not see the grid.
Why “Force Dark Mode” is not a fix
Chromium browsers have had an experimental #enable-force-dark flag. It applies an automatic inversion across pages.
It has real drawbacks for spreadsheet work:
- It applies to every site, not just the one you want.
- Automatic inversion does not distinguish a neutral background from a colour you chose deliberately, so cell fills, conditional formatting, and charts can come out wrong.
- It does not reliably reach canvas-rendered content.
- Being an experimental flag, it can change or disappear between browser versions.
For a spreadsheet, colour carries meaning. A red cell usually means something. Blanket inversion destroys that meaning.
What actually works on the web
To darken the grid, software has to intervene at the point the canvas is drawn rather than styling the page afterwards.
That is the approach Darkkle takes. It runs a small script early in the page, before the spreadsheet creates its canvases, and wraps selected drawing operations. When the sheet paints a neutral interface colour, Darkkle substitutes a dark equivalent. When it paints a colour you chose yourself, it leaves it alone.
That distinction is the important part. The goal is not to invert the sheet. It is to flip the greys and leave your data’s colours intact.
Row and column headers are the hard part
Selecting cells makes the spreadsheet highlight the matching row numbers and column letters. On a dark background, that highlight can easily paint over the label and make it unreadable, or leave a stranded bar at the edge of the screen after you scroll.
This is the single most fragile area of any canvas-based theming approach, and it is where most of the engineering effort in Darkkle 2.3.0 went. See Features for what the current release handles.
What to expect
Some honesty about the limits:
- The spreadsheet’s canvas behaviour is private and undocumented. Google can change it at any time, and a change can break theming until someone fixes it.
- Darkkle targets Chromium-based browsers and declares a minimum of Chrome 111. That covers Chrome and Edge. Firefox compatibility has not been established and is not claimed.
- Darkkle is maintained by volunteers. No response time, fix, or compatibility guarantee is offered.
Try it
Darkkle is free and open source under the Mozilla Public License 2.0. It requests only the storage permission, has no analytics or advertising, and sends nothing to any server operated by the project.
Darkkle is not affiliated with, endorsed by, or sponsored by Google. Google Sheets is a trademark of Google LLC and is referenced only to describe compatibility.