Most people dont understand, and dont really care to understand (as it doesnt affect them) the difference between a KiB and a kB. To them its all a kilobyte.

you might of heard that a kilobyte is 1000 bytes and sometimes you might of heard that its 1024 bytes? so which one is it? The correct answer is 1000 bytes as its an SI unit. The kebibyte would be the 1024 byte one. There are 2 different set of units to describe storage capacity, and they are very close to each other. So think of like metric units (kilometers) and imperial units (Miles) where they describe the same thing but in a different “language”

First off IEC stands for International Engineering Consortium. These are in base 1024 (which is just base 2 to the 10th power as 2 ^ 10 = 1024). This gives birth to the units like Kibibyte (which is 1024 bytes).

NOTE: IEC is base 1024, but sometimes people will call it base 2, and thats fine, you can call it base 2 or 1024, the numbers work out (you just have to change the powers) but you can still convert between all units (see math tricks below). Likewise Metric units are base 1000 but can also be called base 10.

SI stands for International System of Units, these are like your basic units you might of used in your Physics and Math classes (or if your on the road in Britain or canada) You get the Kilogram (gram is the actual SI unit, which is 1000 grams) and Kilometer (meter is the actual SI unit, which is 1000 meters). But you also get the Kilobyte (which is 1000 bytes). SI units are of base 10 (with storage we say base 1000, which is the same as base 10 but to the 3rd power as 10 ^ 3 = 1000)

Here is the difference between SI and IEC with respect to the units of data / information:


You can see the difference between all units of information right on wikipedia. This is where you can get a perfect oversight of the differences.

But in the end a KiB is 1024 bytes, where as a kB is 1000 bytes.

There are two types of Storage units: SI units (1000 base) and IEC units (1024 base)

Drive manufacturers and most people communicate with SI units: kilobytes, megabytes, etc.. In short hand that is kB, MB, GB, TB.

Computers however use IEC units: kibibytes, Mebibyte, etc… in short hand that is KiB, MiB, GiB, TiB (notice the little “i” for IEC)

These suttle difference can cost storage space, and money $.

For example: You can buy a 3 TB (3 terabyte drive) but when you plug it in to your PC, your PC will say its 2.7 TiB (windows might actually use the incorrect shorthand of 2.7 TB, missing the little “i”). So every 3 TB you buy, you lose 300 GBs (or at least it feels like you do). In reality you dont lose anything. You simply bought 3 TB, or 3000,000,000,000 bytes of storage. Your getting all 3000,000,000,000 bytes of storage. It can just be interpretted in various units. 3000,000,000,000 bytes is the same as 3000,000,000 kilobytes of storage or 3000,000 megabytes of storage, or 3000 gigabytes of storage, or 3 terabytes of storage – we simply divide by 1000 to get to the next unit. Computers dont divide by 1000, as they use base 1024 (which is just base 2 to the 10th power), so we need to divide by 1024 to step thru the units. So 3000,000,000,000 bytes of storage is 3000,000,000,000 bytes / 1024 = 2929,687,500 kibibytes, or 2861,023 mebibytes, or 2793 gibibytes, or 2.72 tebibytes.

3000,000,000,000 bytes = 3000,000,000 kB = 3000,000 MB = 3000 GB = 3 GB

= above equals below =

3000,000,000,000 bytes = 2929,687,500 KiB = 2861,1022 MiB = 2793 GiB = 2.7 TiB

Notice all of these are equal to each other.

So when you plug in your 3 TB drive and your expecting to see 3 TB, and instead you see 2.7 TB dont be mad. Your not missing any space. Microsoft is simply forgetting the “i” between the TB. Your getting all of your space.

Personally I think all should switch to 1024 as that is what computers use.

In the end both units describe the same thing & can be converted to and from.

We can easily convert by realizing that both set of units share the same common unit, the “byte” (aka 8 bits yay!) So there you go. To go from any unit first get to the byte, then get to the other unit.

To convert from one unit to the other you have to do a series of multiplications or divisions by 1000 or 1024 until you get to the common byte unit, and then switch to the other operation and other conversation factory (1000 or 1024).

So to go from TiB to TB. You would multiply by 1024 until you reach bytes, then you would divide by 1000 until you reach TB.

Of course if you simply know the conversion factory from TiB to TB you can just multiply by that.

x TiB * conversion factor from TiB to TB = y TB

x TiB * ((1024*1024*1024*1024) / (1000 * 1000 * 1000 * 1000)) = y TB

x TiB * 1.09951162778 = y TB  

So there is a visible 10% increase in the magnitude of the number (there is no increase in the actual number of bytes of storage, so you still have the same space).

Using the above method you can make your own conversion factors. Also you can invert currently known conversion factors to get the opposite.

conversion factory from TB to TiB = ((1000 * 1000 * 1000 * 1000) / (1024*1024*1024*1024)) = 1 / 1.09951162778 = 0.90949470177

Math tricks

Converting between different types of units (metric to iec or iec to metric). First convert everything to bytes, then convert to the other unit. When staying within iec or metric you can simply multiply or divide by 1024 (iec) or 1000 (metric).

B is the number of bytes. x is the new unit

B = x they are just in different units

Ex: Just like 100 cm = 1 meter, therefore 2048 bytes = 2 KiB

Math Trick – going from Bytes to any IEC unit (base 2 units or 1024 units)

With base 2:

Remember this 10 -> 1024 (KiB), 20 -> MiB, 30 -> GiB, 40 -> TiB (start at 10, and add 10 to go to next unit)

Given bytes divide by 2^10 will give you KiB, formula: B/2^10=x [KiB]

Given bytes divide by 2^20 will give you MiB, formula: B/2^20=x [MiB]

Given bytes divide by 2^30 will give you GiB, formula: B/2^30=x [GiB]

Given bytes divide by 2^40 will give you TiB, formula: B/2^40=x [TiB]

or you can do it with 1024:

Remember this 1 -> 1024 (KiB), 2 -> MiB, 3 -> GiB, 4 -> TiB (start at 1, and add 1 to go to next unit)

Given bytes divide by 1024^1 will give you KiB, formula: B/1024^1=x [KiB]

Given bytes divide by 1024^2 will give you MiB, formula: B/1024^2=x [MiB]

Given bytes divide by 1024^3 will give you GiB, formula: B/1024^3=x [GiB]

Given bytes divide by 1024^4 will give you TiB, formula: B/1024^4=x [TiB]

Math Trick – going from Bytes to any Metric unit (base 10 unit)

With a base of 10:

Remember this 3 -> 1000 (KB), 6 -> MB, 9 -> GB, 12 -> TB (start at 3, and add 3 to go to next unit)

Given bytes divide by 10^3 will give you KB, formula: B/10^3=x [KB]

Given bytes divide by 10^6 will give you MB, formula: B/10^6=x [MB]

Given bytes divide by 10^9 will give you GB, formula: B/10^9=x [GB]

Given bytes divide by 10^12 will give you TB, formula: B/10^12=x [TB]

or you can do it with 1000:

Remember this 1 -> 1000 (KiB), 2 -> MiB, 3 -> GiB, 4 -> TiB (start at 1, and add 1 to go to next unit)

Given bytes divide by 1000^1 will give you KB, formula: B/1000^1=x [KB]

Given bytes divide by 1000^2 will give you MB, formula: B/1000^2=x [MB]

Given bytes divide by 1000^3 will give you GB, formula: B/1000^3=x [GB]

Given bytes divide by 1000^4 will give you TB, formula: B/1000^4=x [TB]

Going the other way – going to Bytes

IEC (base 2 or 1024):

base 2:

Given KiB multiply by 2^10 will give you bytes, formula: x [KiB] * 2^10 = B

Given MiB multiply by 2^20 will give you bytes, formula: x [MiB] * 2^20 = B

Given GiB multiply by 2^30 will give you bytes, formula: x [GiB] * 2^30 = B

Given TiB multiply by 2^40 will give you bytes, formula: x [TiB] * 2^40 = B

base 1024:

Given KiB multiply by 1024^1 will give you bytes, formula: x [KiB] * 1024^1 = B

Given MiB multiply by 1024^2 will give you bytes, formula: x [MiB] * 1024^2 = B

Given GiB multiply by 1024^3 will give you bytes, formula: x [GiB] * 1024^3 = B

Given TiB multiply by 1024^4 will give you bytes, formula: x [TiB] * 1024^4 = B

Metric (base 10 or 1000):

base 10:

Given KB multiply by 10^3 will give you bytes, formula: x [KB] * 10^3 = B

Given MB multiply by 10^6 will give you bytes, formula: x [MB] * 10^6 = B

Given GB multiply by 10^9 will give you bytes, formula: x [GB] * 10^9 = B

Given TB multiply by 10^12 will give you bytes, formula: x [TB] * 10^12 = B

base 1000:

Given KB multiply by 1000^1 will give you bytes, formula: x [KB] * 1000^1 = B

Given MB multiply by 1000^2 will give you bytes, formula: x [MB] * 1000^2 = B

Given GB multiply by 1000^3 will give you bytes, formula: x [GB] * 1000^3 = B

Given TB multiply by 1000^4 will give you bytes, formula: x [TB] * 1000^4 = B

Math Tricks Patterns

I feel like the Metric units are pretty easy to convert from and to. Most people have troubles with the IEC units.

With IEC (base 2 or 1024) Going from bytes to a bigger unit (thus your value will be smaller so you need to divide): The trick is to remember 2^10 (will take you from bytes to KiB if you divide), then add 10 if you want to go to next unit (2^20 will take you from bytes to MiB if you divide), add another 10 to go to next unit (2^30 will take you from bytes to GiB if you divide), and so on. Look above for the rest of memory helping tricks. Or you can just remember the base 1024 trick where the numbers are easier you start with a power of 1 and just add 1 to go to next unit: dividing by 1024^1 will take you to KiB from bytes, 1024^2 will take you to MiB, 1024^3 will take you to GiB.

With IEC (base 2 or 1024) Going from a bigger unit to bytes. You just need to see the unit your at and find the power for that number and multiply by that. So for example lets say I have 1.734 TiB and I want to know how many Bytes that is. I see that TiB is 1024^4 or 2^40. So I can take 1.734 and multiply by 1024^4 or 2^40. If you dont remember that its 4 or 40. You can just be remember that 2^10 gives you KiB and adding ten to the power takes you to 2^20 which is MiB, add tenagain we get GiB, add ten again we get TiB and 2^40.  Like wise you can just remember that 1024^1 gives you KiB, then add one to the power get 1024^2 gives you MiB, then add another one to get GiB, and one final to get TiB, so you get 1024^3.

One thought on “Units of Information, Data Storage – SI vs IEC – 1000 base vs 1024 base

  1. “Microsoft is simply forgetting the “i” between the TB. Your getting all of your space.”
    Um, no. Microsoft is NOT forgetting the silly “i” but is actually using the CORRECT label.

    “Personally I think all should switch to 1024 as that is what computers use.”
    Actually this has always been the case UP UNTIL this stupid push for the new labels (KiB, MiB, GiB etc), as KB, MB, GB etc are and have always been base-2.

    This awful kiB, miB stuff has just added unnecessary confusion.
    There were no such labels as kibibytes (KiB) or gibibytes (GiB) etc UNTIL the late 90s by which time KB, MB, GB etc (all base 2 as that is the way computers work) were firmly established for computer file sizes (since the beginning of computing).

    As a long time user of computers (since the late 70s) I absolutely refuse to acknowledge the validity of labels such as mib, gib etc – to me these ARE just incorrectly spelled MB, GB etc

    It makes no sense to attempt to replace an existing label with a new label whilst then attributing a different meaning to the original label. The end result is exactly what we have today, unnecessary confusion.

    Windows is the only current OS to show files as their correct size and designation.
    I take my hat off to Microsoft (this one time !) for sticking to tradition and, as far as I am concerned, the correct way to label file sizes.

    All I really want is to be able to show base 2 KB,MB,GB etc instead of the silly kib,mib,gib etc in Linux.

Leave a Reply

Your email address will not be published. Required fields are marked *