Skip to content

Create a custom theme extension

A Turbo skin is a Chromium theme extension: it only changes window colors and background images. It has no scripts and requests no permissions. The format matches Chrome / Edge themes. You can load a folder for testing or pack a .crx to share.

To change colors without making an extension, use Appearance on the title bar, or Themes to open the Edge theme store. See One-click themes.

What you need

  • Turbo installed (Windows or macOS)
  • A text editor for manifest.json
  • PNG images as needed (frame, toolbar, new-tab background)

Create a folder such as my-turbo-theme/:

my-turbo-theme/
  manifest.json
  images/
    frame.png
    toolbar.png
    ntp.png

Images are optional. Missing images fall back to the solid colors in colors.

Write manifest.json

The "theme" key is required. Do not add background, content_scripts, or permissions used by regular extensions.

Copy this Manifest V3 example and edit it:

json
{
  "manifest_version": 3,
  "name": "My Turbo theme",
  "version": "1.0.0",
  "description": "Custom frame, toolbar, and new-tab colors",
  "theme": {
    "images": {
      "theme_frame": "images/frame.png",
      "theme_toolbar": "images/toolbar.png",
      "theme_ntp_background": "images/ntp.png"
    },
    "colors": {
      "frame": [37, 99, 235],
      "frame_inactive": [100, 116, 139],
      "toolbar": [241, 245, 249],
      "tab_text": [15, 23, 42],
      "tab_background_text": [71, 85, 105],
      "bookmark_text": [30, 41, 59],
      "ntp_background": [248, 250, 252],
      "ntp_text": [15, 23, 42],
      "omnibox_background": [255, 255, 255],
      "omnibox_text": [15, 23, 42],
      "toolbar_button_icon": [51, 65, 85]
    },
    "properties": {
      "ntp_background_alignment": "center",
      "ntp_background_repeat": "no-repeat"
    }
  }
}

Colors are RGB arrays (0255). Older store themes often use Manifest V2; Turbo can load those as well.

Common fields

Images theme.images

Paths are relative to the extension root. PNG is recommended.

KeyRole
theme_frameTitle bar / window frame (often tiled horizontally)
theme_toolbarToolbar, bookmark bar, and active tab area
theme_tab_backgroundInactive tab background
theme_ntp_backgroundNew-tab background image
theme_ntp_attributionOptional small credit image on the new tab

Other image keys (for example incognito frames) can be omitted.

Colors theme.colors

KeyRole
frame / frame_inactiveActive / inactive window frame
toolbarToolbar fill and the active tab fill — the selected tab joins the toolbar. Turbo also matches the address bar to this color
tab_textText on the active tab
tab_background_textText on inactive tabs
bookmark_textBookmark bar text
ntp_background / ntp_textNew-tab fill and text
omnibox_background / omnibox_textAddress bar fill and text
toolbar_button_iconToolbar icon tint

Add frame_incognito and related keys if you need a distinct incognito look.

Properties theme.properties

KeyTypical values
ntp_background_alignmentcenter, top, bottom, left, right
ntp_background_repeatno-repeat, repeat, repeat-x, repeat-y
ntp_logo_alternate0 or 1 for the default NTP logo treatment

Tints theme.tints (optional)

Three HSL numbers (01) to tint buttons or the frame. You can skip this and still ship a complete theme with colors and images.

Load and preview in Turbo

  1. Open chrome://extensions (or Menu → Extensions → Manage extensions).
  2. Turn on Developer mode.
  3. Click Load unpacked and choose the my-turbo-theme folder.
  4. The look applies immediately. After you edit files, click Reload on that extension.

TIP

Theme extensions appear in the list but have no toolbar icon. Remove or disable the extension to restore the previous look.

See Extension development for the rest of the developer tools.

Pack a .crx

When you are happy with the result, click Pack extension on the Extensions page and select the theme folder. You get:

  • .crx — install by dragging into a Turbo window, or share the file
  • .pem — keep this private key; you need it to update the same theme later

Installing a .crx is the same as for other extensions. See Extensions.

Tips

  • Pick toolbar first. It is both the toolbar and the active-tab fill, and it drives the address bar. Keep image hues close to that RGB and keep tab_text readable. Inactive tabs use theme_tab_background / tab_background_text.
  • Make theme_frame wide and tile-friendly. Seams show on wide windows if the edges do not match.
  • Keep NTP images modest. A huge PNG slows the new tab page.
  • Themes do not follow system dark mode. A light skin on a dark OS can look harsh.
  • Use images you have rights to.

FAQ

Nothing changed after loading?
Put manifest.json at the folder root, check JSON syntax, and keep the "theme" key. Fix any error shown on the Extensions page, then reload.

Colors only, no images?
Delete the images object and keep colors.

How do I remove a custom theme?
Remove or disable it on chrome://extensions, or restore default colors under Settings → Appearance.

Can I publish to the Chrome Web Store?
Yes, if you follow store rules. For local use, a folder or .crx is enough. The title-bar Themes entry opens the Edge theme store for ready-made themes.

See also