Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Color Picker UniversalNew to Visual Studio Code? Get it now.
Color Picker Universal

Color Picker Universal

Jeronimo Ekerdt

|
7,133 installs
| (10) | Free
Any color format in any file. Color picker and translator
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

🌌 Color Picker Universal 🌌

🌐 Links

🔧 Core Dependency

🛜 Website

Visual Studio Marketplace

Open VSX Registry

Github Repository

✅ Features

Pick and translate between multiple color formats, in any file.

Formats supported: rgb/a, a98, hex/a, hsl/a, hwb/a, cmyk/a, hex 0x, lab, lch, oklab, oklch and named colors.

Some variations of these might be possible with the correct settings. For example XAML a/Hex

This extension can be used through its color pickers, commands, or context menu options.

Demo

⚙ Settings

To see settings press CTRL + , OR ⌘ + ,

To see some advanced examples see here

Id Description Default Available values Example
color-picker-universal.disable Disables the extension false true false true
color-picker-universal.ignoreVariableName If enabled, ignores colors in variables names true true false false
color-picker-universal.preferLegacy If enabled, colors are displayed in legacy mode when possible false true false true
color-picker-universal.languages Enabled language identifiers. Use "!" to exclude languages ["*"] Default identifiers ["*", "!css", "!less", "!sass", "!scss"]
color-picker-universal.formatsFrom Enabled formats to translate from. Use "!" to exclude formats ["*"] "*" "device-cmyk" "hex" "hsl" "hwb" "named" "rgb" "hex0x" "lab" "lch" "oklab" "oklch" "a98" ["*", "!hex_0x", "!named"]
color-picker-universal.formatsTo Enabled formats to translate into. Use "!" to exclude formats ["*"] "*" "cmyk" "hex" "hsl" "hwb" "named" "rgb" "hex0x" "lab" "lch" "oklab" "oklch" "a98" ["*", "!hex_0x", "!cmyk", "!hwb"]
color-picker-universal.maxDigits Max number of decimal digits 2 5
color-picker-universal.customOutputs Add custom outputs for given formats per file languageId {} See Custom Outputs { "oklch":[{ "values": { "l":{ "to": 100, "suffix": "%" } } }],}
color-picker-universal.customRegexes Add custom input regexes for given formats {} See Custom Regexes { "a98": ["my-a98\\((\\d+(?:\\.\\d+)?) \\$ (\\d+(?:\\.\\d+)?) \\$ (\\d+(?:\\.\\d+)?)(?: \\$ (\\d+(?:\\.\\d+)?))?\\)",]}
color-picker-universal.avoidDuplicate If enabled, duplicate color pickers will be avoided. Note: On these built-in color pickers, the extension's formats and configurations won't apply false true false true

✍ Commands

To see commands press F1 and type Color Picker Universal

Name Command
Translate colors to another format color-picker-universal.translateColors

🗨 Editor's context menu options

To see the editor's context menu options press right click inside a file content's editor

Name Command
Translate colors to another format color-picker-universal.translateColors

🖌️ Custom Outputs

This setting allows the user to create custom output presentations for the given formats.

This takes an object with the following schema:

{
  "FORMAT_1": [
    {
      // "files" field works like the "languages" setting
      "files"?: ["*", "!css"],
      "values"?: {
        // the properties are the letters of the color format (e.g., "r", "g" and "b")
        // except in hex and a98 where the properties are still "r", "g" and "b"
        // alpha property is always "alpha" in every color format
        "PROPERTY_1": {
          "from"?: number, // default 0
          "to"?: number, // default 1 OR 100 if suffix === '%'
          "suffix"?: string, // default ""
          "maxDigits"?: number // default 2. In hex it's the amount of chars (1 OR 2)
        }
      },
      "template"?: string, // "rgb({{r}}, {{g}}, {{b}})" OR "#{{r}}{{g}}{{b}}"
      "templateAlpha"?: string, // "rgb({{a}}% / {{r}}, {{g}}, {{b}})" OR "#{{a}}{{r}}{{g}}{{b}}"
    }
  ]
}

Keep in mind that this could give outputs that are not compatible as inputs for the extension itself. In these cases, a possible solution is adding a Custom Regex for the given format in the given file languages.

🔧 Custom Regexes

This setting allows the user to create custom input regexes for the given formats.

This takes an object with the following schema:

{
  "FORMAT_1": [
    "REGEX_1",
    // Language conditional regex:
    {
      "regex": "REGEX_2",
      // "languages" field works like the "languages" setting
      "languages": ["LANGUAGE_1", "LANGUAGE_2"],
      // "remap" is used for when the order of the properties is shuffled in the regex (e.g., "alpha" is the first captured value)
      "remap": [3,0,1,2]
    }
  ],
  "FORMAT_2": ["REGEX_3"]
}

Values

<FORMAT>:

Is one of "formatsTo" ("cmyk", "hex", "hsl", "hwb", "named", "rgb", "hex0x", "lab", "lch", "oklab", "oklch", "a98")

<REGEX>:

Is an escaped regex expression that matches the values of the color, and an optional alpha value (3 to 5 values, depending on the format). The values MUST be in the same format as in the standard presentation (can't pass a percentage value into a property that would typically only accept decimals, otherwise there could be unexpected outcomes).

  • Recommendation: test the standard presentations to check the allowed color properties of presentations

Here is a table with the standard presentations of each color format property (this follows closely the W3C standards)

Color Formats Properties Presentations Examples
ALL FORMATS alpha (default = 1) 0...1 / Percentage '0.5', '50%'
RGB r, g, b 0...255 / Percentage '123', '50%'
A98 r, g, b 0...1 '0.5'
HSL, HWB, LCH, OKLCH h 0...360 / Percentage / Grad / Rad / Turn '180', '50%', '200grad', '3.14rad', '0.5turn'
HSL s, l 0...1 / Percentage '0.5', '50%'
HWB w, b 0...1 / Percentage '0.5', '50%'
LAB, LCH l 0...100 / Percentage '50', '50%'
LAB a, b -125...125 / Percentage -100%...100% '-62.5', '-50%'
LCH c 0...150 / Percentage '75', '50%'
OKLAB, OKLCH l 0...1 / Percentage '0.5', '50%'
OKLAB a, b -0.4...0.4 / Percentage -100%...100% '-0.2', '-50%'
OKLCH c 0...0.4 / Percentage '0.2', '50%'
CMYK c, m, y, k 0...1 / Percentage '0.5', '50%'

Here is a rgb regex example where we match r, g, and b values, and an optional alpha. Note that it's missing percentage support.

"my-rgb\\((\\d+(?:\\.\\d+)?) \\$ (\\d+(?:\\.\\d+)?) \\$ (\\d+(?:\\.\\d+)?)(?: \\$ (\\d+(?:\\.\\d+)?))?\\)"

Regex Tips:

  • Double quotes (") and backslashes (\) are escaped with a backslash (\).
  • The regex capture groups must only capture the required values, and the optional one (alpha) if desired
  • https://regexper.com/ This website is a great way to visualize and tweak regexes. Here is the regex above visualized there. Note that escape backslashes (\) MUST be removed when entering the regex there

Duplication Issue

#68 When working with css, less, sass, and scss files, the color picker is duplicated due to the default built-in Vscode color picker. To avoid this, you can set the color-picker-universal.avoidDuplicate setting to true (see Settings). Note that by doing this, on these default built-in color pickers, the extension's formats and configurations won't apply

Duplicated picker in css file

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft