Skip to content

Colors ​

The Colors section sets the surfaces of a Chrome theme: frame, toolbar, tabs, New Tab page and links. Reach for it when a preset is close but a surface needs its own value, or when a contrast badge turns red.

Quick start ​

  1. Open the editor at themes.extension.dev/chromium and click Colors on the dock.
  2. Under Toolbar, set Background to #0f172a. The toolbar repaints and the badge under Text reads "Low contrast".
  3. Scroll to the contrast checks and click Fix. The text color moves to the nearest passing value and the badge reads "Meets contrast".

How it works ​

Five groups. The section is split into Frame, Toolbar, Tabs, New Tab Page and Elements. Toolbar holds an Omnibox subgroup for the address bar text and the suggestions dropdown. Each field names the manifest key it writes in its tooltip.

Auto values. Some fields start empty and show their derived value as "(auto)". Chrome computes those colors from the surfaces you set, and the preview already paints them. Type a value to override, or click the reset control to hand the field back to Chrome.

What Chrome will not let you set. The omnibox field background always derives from the toolbar color, so there is no field for it. The active tab surface always uses the toolbar color. Window control buttons paint only on Windows frames.

RGB arrays. The editor stores hex colors and writes each one to the manifest as an RGB array, so #0f172a exports as [15, 23, 42]. The imported alpha of a color is dropped, because transparency is not modeled.

Recent Colors. Every color you commit joins a Recent Colors row. The row keeps the twelve most recent values in this browser's storage, newest first.

Pointer mode. Click the pointer button on the dock, then click a part of the Chrome window on the canvas. A small input appears beside the selection and accepts any CSS color, such as #aabbcc or red. The sidebar stays usable while the pointer is armed. Esc clears the selection, and a second Esc leaves pointer mode. Picking a color also leaves pointer mode.

Contrast checks. Five text pairs are checked against WCAG 4.5:1 as you edit, and each failing pair shows its ratio and a Fix button. Fix nudges that text color to the nearest passing value and changes nothing else. The panel is headed "WCAG advice (optional)": real Chrome installs your colors as they are, so the checks are readability advice, not requirements.

What Chrome derives. Under the checks, the panel lists the values Chrome computes after install: the omnibox field, blended from the toolbar until it reaches 1.3:1 contrast, the omnibox field text, the toolbar top separator, and whether the NTP logo renders white or colored.

Reference ​

GroupFieldManifest key
FrameActive frameframe
FrameInactive frameframe_inactive
ToolbarBackgroundtoolbar
ToolbarTextbookmark_text
ToolbarToolbar texttoolbar_text
ToolbarToolbar iconstoolbar_button_icon
ToolbarWindow control buttonsbutton_background
OmniboxOmnibox textomnibox_text
OmniboxSuggestions backgroundomnibox_background
TabsActive tab texttab_text
TabsInactive tab texttab_background_text
TabsInactive tab text, inactive windowtab_background_text_inactive
New Tab PageBackgroundntp_background
New Tab PageTextntp_text
New Tab PageGoogle logoproperties.ntp_logo_alternate
ElementsNTP linkntp_link

toolbar_text, toolbar_button_icon, omnibox_text, omnibox_background and ntp_link are written only when you set them. The other ten color keys are always written.

Contrast checkTextSurfaceFix changes
Active tab text on toolbartab_texttoolbartab_text
Inactive tab text on frametab_background_textframetab_background_text
Inactive tab text on inactive frametab_background_text_inactiveframe_inactivetab_background_text_inactive
Toolbar textbookmark_texttoolbarbookmark_text
New tab page textntp_textntp_backgroundntp_text
LimitValue
Passing contrast ratio4.5:1
Recent Colors kept12
Omnibox field blend target1.3:1 against the toolbar

When it fails ​

  • The inactive frame field is missing. Turn on Inactive window in the preview states strip. The field appears only in that state.
  • A color field shows "(auto)" after an import. The imported manifest did not carry that key. Chrome derives it, and the preview shows the derived value.
  • The pointer input ignores what you typed. The value is not a CSS color. Type a hex value such as #3b82f6 or a named color such as red.
  • The preview shows a gray window and no color changes. Incognito mode is on. Chrome ignores themes in incognito windows, so turn it off.
  • Fix changed a different field than you expected. Fix always moves the text color of the failing pair, never the surface under it.

Next ​