fabiospampinato/fast-string-width

A fast function for calculating the visual width of a string once printed to the terminal.

43

stars

90

commits

TypeScript

primary language

Sep 30, 2025

updated

cli
fast
string
terminal
width
Browse cluster: CLI string width and terminal formatting β†’

README

Fast String Width

A fast function for calculating the visual width of a string once printed to the terminal.

See fast-string-truncated-width for a lower-level version of this.

Install

npm install fast-string-width

Usage

import fastStringWidth from 'fast-string-width';

// The width of various classes of characters is configurable

const options = {
  controlWidth: 0,
  tabWidth: 8,
  emojiWidth: 2,
  regularWidth: 1,
  wideWidth: 2
};

// Calculating the visual width of some strings

fastStringWidth ( 'hello', options ); // => 5
fastStringWidth ( '\x1b[31mhello', options ); // => 5
fastStringWidth ( 'πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦', options ); // => 2
fastStringWidth ( 'helloπŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦', options ); // => 7

// Calculating the visual width while tweaking the width of emojis

fastStringWidth ( 'πŸ‘ΆπŸ‘ΆπŸ½', { ...options, emojiWidth: 1.5 } ); // => 3

License

MIT Β© Fabio Spampinato

Contributors

sindresorhus

43 commits

fabiospampinato

28 commits

fisker

6 commits

coreyfarrell

2 commits

fabiospampinato/fast-string-width

A fast function for calculating the visual width of a string once printed to the terminal.

43

stars

90

commits

TypeScript

primary language

Sep 30, 2025

updated

cli
fast
string
terminal
width
Browse cluster: CLI string width and terminal formatting β†’

README

Fast String Width

A fast function for calculating the visual width of a string once printed to the terminal.

See fast-string-truncated-width for a lower-level version of this.

Install

npm install fast-string-width

Usage

import fastStringWidth from 'fast-string-width';

// The width of various classes of characters is configurable

const options = {
  controlWidth: 0,
  tabWidth: 8,
  emojiWidth: 2,
  regularWidth: 1,
  wideWidth: 2
};

// Calculating the visual width of some strings

fastStringWidth ( 'hello', options ); // => 5
fastStringWidth ( '\x1b[31mhello', options ); // => 5
fastStringWidth ( 'πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦', options ); // => 2
fastStringWidth ( 'helloπŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦', options ); // => 7

// Calculating the visual width while tweaking the width of emojis

fastStringWidth ( 'πŸ‘ΆπŸ‘ΆπŸ½', { ...options, emojiWidth: 1.5 } ); // => 3

License

MIT Β© Fabio Spampinato

Contributors

sindresorhus

43 commits

fabiospampinato

28 commits

fisker

6 commits

coreyfarrell

2 commits

Languages

TypeScript

52.1%

JavaScript

47.9%