Convert bytes to a human readable string: 1337 → 1.34 kB
npm install pretty-bytes> Convert bytes to a human readable string: 1337 → 1.34 kB
Useful for displaying file sizes for humans.
*Note that it uses base-10 (e.g. kilobyte).
Read about the difference between kilobyte and kibibyte.*
``sh`
npm install pretty-bytes
`js
import prettyBytes from 'pretty-bytes';
prettyBytes(1337);
//=> '1.34 kB'
prettyBytes(100);
//=> '100 B'
// Display with units of bits
prettyBytes(1337, {bits: true});
//=> '1.34 kbit'
// Display file size differences
prettyBytes(42, {signed: true});
//=> '+42 B'
// Localized output using German locale
prettyBytes(1337, {locale: 'de'});
//=> '1,34 kB'
// Fixed width for alignment (useful for progress bars and tables)
prettyBytes(1337, {fixedWidth: 8});
//=> ' 1.34 kB'
`
#### number
Type: number | bigint
The number to format.
#### options
Type: object
##### signed
Type: boolean\false
Default:
Include plus sign for positive numbers. If the difference is exactly zero a space character will be prepended instead for better alignment.
##### bits
Type: boolean\false
Default:
Format the number as bits instead of bytes. This can be useful when, for example, referring to bit rate.
`js
import prettyBytes from 'pretty-bytes';
prettyBytes(1337, {bits: true});
//=> '1.34 kbit'
`
##### binary
Type: boolean\false
Default:
Format the number using the Binary Prefix instead of the SI Prefix. This can be useful for presenting memory amounts. However, this should not be used for presenting file sizes.
`js
import prettyBytes from 'pretty-bytes';
prettyBytes(1000, {binary: true});
//=> '1000 B'
prettyBytes(1024, {binary: true});
//=> '1 KiB'
`
##### locale
Type: boolean | string | string[]\false
Default:
- If false: Output won't be localized.true
- If : Localize the output using the system/browser locale.string
- If : Expects a BCP 47 language tag (For example: en, de, …)string[]
- If : Expects a list of BCP 47 language tags (For example: en, de, …)
> [!IMPORTANT]
> Only the number and decimal separator are localized. The unit title is not and will not be localized.
##### minimumFractionDigits
Type: number\undefined
Default:
The minimum number of fraction digits to display.
If neither minimumFractionDigits nor maximumFractionDigits is set, the default behavior is to round to 3 significant digits.
> [!NOTE]
> When minimumFractionDigits or maximumFractionDigits is specified, values are truncated instead of rounded to provide more intuitive results for file sizes.
`js
import prettyBytes from 'pretty-bytes';
// Show the number with at least 3 fractional digits
prettyBytes(1900, {minimumFractionDigits: 3});
//=> '1.900 kB'
prettyBytes(1900);
//=> '1.9 kB'
`
##### maximumFractionDigits
Type: number\undefined
Default:
The maximum number of fraction digits to display.
If neither minimumFractionDigits nor maximumFractionDigits is set, the default behavior is to round to 3 significant digits.
> [!NOTE]
> When minimumFractionDigits or maximumFractionDigits is specified, values are truncated instead of rounded to provide more intuitive results for file sizes.
`js
import prettyBytes from 'pretty-bytes';
// Show the number with at most 1 fractional digit
prettyBytes(1920, {maximumFractionDigits: 1});
//=> '1.9 kB'
prettyBytes(1920);
//=> '1.92 kB'
`
##### space
Type: boolean\true
Default:
Put a space between the number and unit.
`js
import prettyBytes from 'pretty-bytes';
prettyBytes(1920, {space: false});
//=> '1.92kB'
prettyBytes(1920);
//=> '1.92 kB'
`
##### nonBreakingSpace
Type: boolean\false
Default:
Use a non-breaking space instead of a regular space to prevent the unit from wrapping to a new line.
Has no effect when space is false.
##### fixedWidth
Type: number\undefined
Default:
Pad the output to a fixed width by right-aligning it.
Useful for creating aligned columns in tables or progress bars.
If the output is longer than the specified width, no padding is applied.
Must be a non-negative integer. Throws a TypeError for invalid values.
`js
import prettyBytes from 'pretty-bytes';
prettyBytes(1337, {fixedWidth: 10});
//=> ' 1.34 kB'
prettyBytes(100_000, {fixedWidth: 10});
//=> ' 100 kB'
// Useful for progress bars and tables
[1000, 10_000, 100_000].map(bytes => prettyBytes(bytes, {fixedWidth: 8}));
//=> [' 1 kB', ' 10 kB', ' 100 kB']
`
k` is the standardized SI prefix for kilo.
- pretty-bytes-cli - CLI for this module
- pretty-ms - Convert milliseconds to a human readable string