# chalk > Terminal string styling done right [![Build Status](https://travis-ci.org/sindresorhus/chalk.svg?branch=master)](https://travis-ci.org/sindresorhus/chalk) ![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg) [colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. **Chalk is a clean and focused alternative.** ![screenshot](https://github.com/sindresorhus/ansi-styles/raw/master/screenshot.png) ## Why - Highly performant - Doesn't extend String.prototype - Expressive API - Ability to nest styles - Clean and focused - Auto-detects color support - Actively maintained - [Used by 1000+ modules](https://npmjs.org/browse/depended/chalk) ## Install ```sh $ npm install --save chalk ``` ## Usage Chalk comes with an easy to use composable API where you just chain and nest the styles you want. ```js var chalk = require('chalk'); // style a string console.log( chalk.blue('Hello world!') ); // combine styled and normal strings console.log( chalk.blue('Hello'), 'World' + chalk.red('!') ); // compose multiple styles using the chainable API console.log( chalk.blue.bgRed.bold('Hello world!') ); // pass in multiple arguments console.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') ); // nest styles console.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') ); // nest styles of the same type even (color, underline, background) console.log( chalk.green('I am a green line ' + chalk.blue('with a blue substring') + ' that becomes green again!') ); ``` Easily define your own themes. ```js var chalk = require('chalk'); var error = chalk.bold.red; console.log(error('Error!')); ``` Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data). ```js var name = 'Sindre'; console.log(chalk.green('Hello %s'), name); //=> Hello Sindre ``` ## API ### chalk.`