Detect whether a terminal supports color
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.editorconfig Meta tweaks May 21, 2017
.gitattributes Meta tweaks Aug 20, 2018
.gitignore Meta tweaks Aug 20, 2018
.npmrc ignore package locks Jul 7, 2017
.travis.yml Meta tweaks Aug 20, 2018
browser.js Update the browser implementation Nov 28, 2017
index.js Add support for VT220 (#83) Aug 20, 2018
license Meta tweaks Jun 20, 2017
package.json 5.5.0 Aug 20, 2018 Add Tidelift mention in the readme Sep 29, 2018
test.js Calculate proper `level` when forcing color (#72) Feb 11, 2018

supports-color Build Status

Detect whether a terminal supports color

Get professional support for this package with a Tidelift subscription
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.


$ npm install supports-color


const supportsColor = require('supports-color');

if (supportsColor.stdout) {
	console.log('Terminal stdout supports color');

if (supportsColor.stdout.has256) {
	console.log('Terminal stdout supports 256 colors');

if (supportsColor.stderr.has16m) {
	console.log('Terminal stderr supports 16 million colors (truecolor)');


Returns an Object with a stdout and stderr property for testing either streams. Each property is an Object, or false if color is not supported.

The stdout/stderr objects specifies a level of support for color through a .level property and a corresponding flag:

  • .level = 1 and .hasBasic = true: Basic color support (16 colors)
  • .level = 2 and .has256 = true: 256 color support
  • .level = 3 and .has16m = true: Truecolor support (16 million colors)


It obeys the --color and --no-color CLI flags.

Can be overridden by the user with the flags --color and --no-color. For situations where using --color is not possible, add the environment variable FORCE_COLOR=1 to forcefully enable color or FORCE_COLOR=0 to forcefully disable. The use of FORCE_COLOR overrides all other color support checks.

Explicit 256/Truecolor mode can be enabled using the --color=256 and --color=16m flags, respectively.