Color your terminal using pure idiomatic JavaScript.

colorette, terminal, styles, color, ansi, colors
npm install colorette@1.1.0


Colorette CI

Color your terminal using pure idiomatic JavaScript.

Colorette is a Node.js library for embellishing your CLI tools with colors and styles using ANSI escape codes.

  • Up to ~10x faster than the alternatives (run the benchmarks).
  • No wonky prototype-based method chains.
  • Automatic color support detection.
  • ~80 LOC and no dependencies.
  • NO_COLOR friendly.


npm i colorette

Load the styles you need. Here's the list of the styles you can use.

const { red, blue, bold } = require("colorette")

Wrap your strings in one or more styles to produce the finish you're looking for.


Or mix it with template literals to interpolate variables, expressions and create multi-line strings easily.

  Beets are ${red("red")},
  Plums are ${blue("blue")},

Using console.log's string substitution can be useful too!

console.log(bold("Total: $%f"), 1.99)

You can even nest styles without breaking existing escape codes.

console.log(red(`Red Shirt ${blue("Blue Shirt")} Red Shirt`))

Feeling adventurous? Try the pipeline operator.

console.log("Make it so!" |> bold |> blue)

Supported styles

Colorette supports the standard and bright color variations out-of-the-box. For true color support see this issue.

Colors Background Colors Bright Colors Bright Background Colors Modifiers
black bgBlack blackBright bgBlackBright dim
red bgRed redBright bgRedBright bold
green bgGreen greenBright bgGreenBright hidden
yellow bgYellow yellowBright bgYellowBright italic
blue bgBlue blueBright bgBlueBright underline
magenta bgMagenta magentaBright bgMagentaBright strikethrough
cyan bgCyan cyanBright bgCyanBright reset
white bgWhite whiteBright bgWhiteBright



Returns a string wrapped in the corresponding ANSI escape code.

red("Red Alert") //=> \u001b[31mRed Alert\u001b[39m


Colorette is enabled if your terminal supports color, FORCE_COLOR=1 or if NO_COLOR isn't in the environment, but you can always override it when you need to.

const { options } = require("colorette")

options.enabled = false

Run the benchmarks

npm i -C bench && node bench
# Using Styles
chalk × 14,468 ops/sec
colorette × 901,148 ops/sec

# Combining Styles
chalk × 44,067 ops/sec
colorette × 2,566,778 ops/sec

# Nesting Styles
chalk × 40,165 ops/sec
colorette × 506,494 ops/sec