Utility component for nicely formatted file sizes

Installs: 8 340

Dependents: 5

Stars: 11

Watchers: 1

Forks: 1

v1.0.0 2014-04-04 18:06 UTC


Latest Version on Packagist Software License Build Status Quality Score Total Downloads

ByteSize is a utility component for formatting file sizes in various formats.


  • PHP 5.3+
  • BCMath extension


Via Composer

$ composer require rych/bytesize


Basic usage is very simple. Create an instance of Rych\ByteSize\ByteSize and call its format() method.


// Default formatter is metric (kilobyte = 1000 bytes)
$bytesize = new \Rych\ByteSize\ByteSize;

// Outputs 1.44MB
echo $bytesize->format(1440000);

The default formatter may be customized as well, using either the \Rych\ByteSize\Formatter\Metric or \Rych\ByteSize\Formatter\Binary classes. The metric formatter is based on a 1000-byte kilobyte and uses standard SI suffixes (kB, MB, GB, TB, etc). The binary formatter is based on a 1024-byte kilobyte and uses the standard binary suffixes (KiB, MiB, GiB, TiB, etc). Both formatters use a default precision of 2 significant digits in the formatted output, but that can be changed to any number in the range 0-10 inclusive.


// Use the binary formatter with a default precision of 1
$formatter = new \Rych\ByteSize\Formatter\Binary;
$bytesize = new \Rych\ByteSize\ByteSize($formatter);

// Outputs 1.4MiB
echo $bytesize->format(1509949);

Precision can also be set at call time via the second argument to the format() methods.

If you don't care for all this OO stuff, the core \Rych\ByteSize class also provides two static methods: formatMetric() and formatBinary(). The method signatures are the same as the standard format() methods.


use \Rych\ByteSize\ByteSize;

// Static methods also work in a pinch
echo ByteSize::formatMetric(1440000); // 1.44MB
echo ByteSize::formatBinary(1509949); // 1.44MiB


$ vendor/bin/phpunit -c phpunit.dist.xml


The MIT License (MIT). Please see License File for more information.