# Built-in Themes in Zed

Zed comes with a number of built-in themes, with more themes available as extensions.

See what themes are installed and preview them via the Theme Selector, which you can open from the command palette with the `theme selector: toggle` (bound to `ctrl-k ctrl-t`) action.

Navigating through the theme list by moving up and down will change the theme in real time and hitting enter will save the selected one to your settings file.

You can find hundreds of different theme options in Zed's extensions store, which you can access via the command palette with `zed: extensions` or the [Zed website](/content/extensions?filter=themes/index.html).

Many popular themes have been ported to Zed, and if you're struggling to choose one, visit [zed-themes.com](https://zed-themes.com/), a third-party gallery with visible previews for many of them.

You can use [Zed's Theme Builder](/content/theme-builder/index.html) to design your own custom theme based on an existing one.

This tool lets you fine-tune and preview how every surface in the Zed app will look. You can then export the JSON for [local use](/content/docs/themes.html#local-themes/index.html) or for [publishing in Zed's extension store](/content/docs/extensions/themes.html).

Your selected theme is stored in your settings file. You can open your settings file from the command palette with `zed: open settings file` (bound to `ctrl-alt-,`).

By default, Zed maintains two themes: one for light mode and one for dark mode. You can set the mode to `"dark"` or `"light"` to ignore the current system mode.

```json
{
  "theme": {
    "mode": "system",
    "light": "One Light",
    "dark": "One Dark"
  }
}
```

Use `ctrl-k ctrl-shift-t` to switch the current theme mode between light and dark.

If your settings currently use a static theme value, like:

```json
{
  "theme": "Any Theme"
}
```

the first toggle converts it to dynamic theme selection with default themes:

```json
{
  "theme": {
    "mode": "system",
    "light": "One Light",
    "dark": "One Dark"
  }
}
```

You are required to set both `light` and `dark` themes manually after the first toggle.

After that, toggling updates only `theme.mode`. If `light` and `dark` are the same theme, the first toggle may not produce a visible UI change until you set different values for `light` and `dark`.

To override specific attributes of a theme, use the `theme_overrides` setting. This setting can be used to configure theme-specific overrides.

For example, add the following to your `settings.json` if you wish to override the background color of the editor and display comments and doc comments as italics:

```json
{
  "theme_overrides": {
    "One Dark": {
      "editor.background": "#333",
      "syntax": {
        "comment": {
          "font_style": "italic"
        },
        "comment.doc": {
          "font_style": "italic"
        }
      },
      "accents": [
        "#ff0000",
        "#ff7f00",
        "#ffff00",
        "#00ff00",
        "#0000ff",
        "#8b00ff"
      ]
    }
  }
}
```

To see a comprehensive list of captures (like `comment` and `comment.doc`) see [Language Extensions: Syntax highlighting](/content/docs/extensions/languages.html#syntax-highlighting/index.html).

To see a list of available theme attributes look at the JSON file for your theme. For example, [assets/themes/one/one.json](https://github.com/zed-industries/zed/blob/main/assets/themes/one/one.json) for the default One Dark and One Light themes.

Store new themes locally by placing them in the `~/.config/zed/themes` directory (macOS and Linux) or `%USERPROFILE%\AppData\Roaming\Zed\themes\` (Windows).

For example, to create a new theme called `my-cool-theme`, create a file called `my-cool-theme.json` in that directory. It will be available in the theme selector the next time Zed loads.
