diff --git a/src/test-equation.vala b/src/test-equation.vala
index 48044ca..55561ae 100644
--- a/src/test-equation.vala
+++ b/src/test-equation.vala
@@ -157,6 +157,23 @@ private void test_conversions ()
     test ("100degC in degF", "212", 0);
     test ("0degC in degF", "32", 0);
     test ("0 K in degC", "−273.15", 0);
+
+    /* Digital Storage */
+    test ("1000 bits in Bytes", "125", 0);
+    test ("1000 Bytes in Kilobytes", "1", 0);
+    test ("1 kB in bits", "8000", 0);
+    test ("10 kB in B", "10000", 0);
+    test ("1 GB in MB", "1000", 0);
+    test ("100 MB in Kilobytes", "100000", 0);
+    test ("10000 MB in GB", "10", 0);
+    test ("1000 GB in Petabytes", "0.001", 0);
+    test ("1 GB in MiB", "953.674", 0);
+    test ("1 Mebibit in B", "131072", 0);
+    test ("10 Kibibytes in b", "81920", 0);
+    test ("1000 GiB in Tebibytes", "0.976562", 0);
+    test ("100 MiB in Gib", "0.78125", 0);
+    test ("10 TiB in MiB", "10485760", 0);
+    test ("10 Pebibytes in TiB", "10240", 0);
 }
 
 private void test_equations ()
diff --git a/src/unit.vala b/src/unit.vala
index c6eb866..a4291a4 100644
--- a/src/unit.vala
+++ b/src/unit.vala
@@ -33,6 +33,7 @@ public class UnitManager : Object
         var weight_category = default_unit_manager.add_category ("weight", _("Weight"));
         var duration_category = default_unit_manager.add_category ("duration", _("Duration"));
         var temperature_category = default_unit_manager.add_category ("temperature", _("Temperature"));
+        var digitalstorage_category = default_unit_manager.add_category ("digitalstorage", _("Digital Storage"));
 
         /* FIXME: Approximations of 1/(units in a circle), therefore, 360 deg != 400 grads */
         angle_category.add_unit (new Unit ("degree", _("Degrees"), dpgettext2 (null, "unit-format", "%s degrees"), "π*x/180", "180x/π", dpgettext2 (null, "unit-symbols", "degree,degrees,deg")));
@@ -82,6 +83,28 @@ public class UnitManager : Object
         temperature_category.add_unit (new Unit ("degree-farenheit", _("Fahrenheit"), dpgettext2 (null, "unit-format", "%s ˚F"), "(x+459.67)*5/9", "x*9/5-459.67", dpgettext2 (null, "unit-symbols", "degF,˚F")));
         temperature_category.add_unit (new Unit ("degree-kelvin", _("Kelvin"), dpgettext2 (null, "unit-format", "%s K"), "x", "x", dpgettext2 (null, "unit-symbols", "K")));
         temperature_category.add_unit (new Unit ("degree-rankine", _("Rankine"), dpgettext2 (null, "unit-format", "%s ˚R"), "x*5/9", "x*9/5", dpgettext2 (null, "unit-symbols", "degR,˚R,˚Ra")));
+        digitalstorage_category.add_unit (new Unit ("bit", _("Bits"), dpgettext2 (null, "unit-format", "%s b"), "x/8", "8x", dpgettext2 (null, "unit-symbols", "bit,bits,b")));
+        digitalstorage_category.add_unit (new Unit ("byte", _("Bytes"), dpgettext2 (null, "unit-format", "%s B"), "x", "x", dpgettext2 (null, "unit-symbols", "Byte,Bytes,B")));
+        digitalstorage_category.add_unit (new Unit ("kilobit", _("Kilobits"), dpgettext2 (null, "unit-format", "%s kb"), "1000x/8", "8x/1000", dpgettext2 (null, "unit-symbols", "Kilobit,Kilobits,kb")));
+        digitalstorage_category.add_unit (new Unit ("kilobyte", _("Kilobytes"), dpgettext2 (null, "unit-format", "%s kB"), "1000x", "x/1000", dpgettext2 (null, "unit-symbols", "Kilobyte,Kilobytes,kB")));
+        digitalstorage_category.add_unit (new Unit ("kibibit", _("Kibibits"), dpgettext2 (null, "unit-format", "%s Kib"), "1024x/8", "8x/1024", dpgettext2 (null, "unit-symbols", "Kibibit,Kibibits,Kib")));
+        digitalstorage_category.add_unit (new Unit ("kibibyte", _("Kibibytes"), dpgettext2 (null, "unit-format", "%s KiB"), "1024x", "x/1024", dpgettext2 (null, "unit-symbols", "Kibibyte,Kibibytes,KiB")));
+        digitalstorage_category.add_unit (new Unit ("megabit", _("Megabits"), dpgettext2 (null, "unit-format", "%s Mb"), "1000000x/8", "8x/1000000", dpgettext2 (null, "unit-symbols", "Megabit,Megabits,Mb")));
+        digitalstorage_category.add_unit (new Unit ("megabyte", _("Megabytes"), dpgettext2 (null, "unit-format", "%s MB"), "1000000x", "x/1000000", dpgettext2 (null, "unit-symbols", "Megabyte,Megabytes,MB")));
+        digitalstorage_category.add_unit (new Unit ("mebibit", _("Mebibits"), dpgettext2 (null, "unit-format", "%s Mib"), "1048576x/8", "8x/1048576", dpgettext2 (null, "unit-symbols", "Mebibit,Mebibits,Mib")));
+        digitalstorage_category.add_unit (new Unit ("mebibyte", _("Mebibytes"), dpgettext2 (null, "unit-format", "%s MiB"), "1048576x", "x/1048576", dpgettext2 (null, "unit-symbols", "Mebibyte,Mebibytes,MiB")));
+        digitalstorage_category.add_unit (new Unit ("gigabit", _("Gigabits"), dpgettext2 (null, "unit-format", "%s Gb"), "1000000000x/8", "8x/1000000000", dpgettext2 (null, "unit-symbols", "Gigabit,Gigabits,Gb")));
+        digitalstorage_category.add_unit (new Unit ("gigabyte", _("Gigabytes"), dpgettext2 (null, "unit-format", "%s GB"), "1000000000x", "x/1000000000", dpgettext2 (null, "unit-symbols", "Gigabyte,Gigabytes,GB")));
+        digitalstorage_category.add_unit (new Unit ("gibibit", _("Gibibits"), dpgettext2 (null, "unit-format", "%s Gib"), "1073741824x/8", "8x/1073741824", dpgettext2 (null, "unit-symbols", "Gibibit,Gibibits,Gib")));
+        digitalstorage_category.add_unit (new Unit ("gibibyte", _("Gibibytes"), dpgettext2 (null, "unit-format", "%s GiB"), "1073741824x", "x/1073741824", dpgettext2 (null, "unit-symbols", "Gibibyte,Gibibytes,GiB")));
+        digitalstorage_category.add_unit (new Unit ("terabit", _("Terabits"), dpgettext2 (null, "unit-format", "%s Tb"), "1000000000000x/8", "8x/1000000000000", dpgettext2 (null, "unit-symbols", "Terabit,Terabits,Tb")));
+        digitalstorage_category.add_unit (new Unit ("terabyte", _("Terabytes"), dpgettext2 (null, "unit-format", "%s TB"), "1000000000000x", "x/1000000000000", dpgettext2 (null, "unit-symbols", "Terabyte,Terabytes,TB")));
+        digitalstorage_category.add_unit (new Unit ("tebibit", _("Tebibits"), dpgettext2 (null, "unit-format", "%s Tib"), "1099511627776x/8", "8x/1099511627776", dpgettext2 (null, "unit-symbols", "Tebibit,Tebibits,Tib")));
+        digitalstorage_category.add_unit (new Unit ("tebibyte", _("Tebibytes"), dpgettext2 (null, "unit-format", "%s TiB"), "1099511627776x", "x/1099511627776", dpgettext2 (null, "unit-symbols", "Tebibyte,Tebibytes,TiB")));
+        digitalstorage_category.add_unit (new Unit ("petabit", _("Petabits"), dpgettext2 (null, "unit-format", "%s Pb"), "1000000000000000x/8", "8x/1000000000000000", dpgettext2 (null, "unit-symbols", "Petabit,Petabits,Pb")));
+        digitalstorage_category.add_unit (new Unit ("petabyte", _("Petabytes"), dpgettext2 (null, "unit-format", "%s PB"), "1000000000000000x", "x/1000000000000000", dpgettext2 (null, "unit-symbols", "Petabyte,Petabytes,PB")));
+        digitalstorage_category.add_unit (new Unit ("pebibit", _("Pebibits"), dpgettext2 (null, "unit-format", "%s Pib"), "1125899906842624x/8", "8x/1125899906842624", dpgettext2 (null, "unit-symbols", "Pebibit,Pebibits,Pib")));
+        digitalstorage_category.add_unit (new Unit ("pebibyte", _("Pebibytes"), dpgettext2 (null, "unit-format", "%s PiB"), "1125899906842624x", "x/1125899906842624", dpgettext2 (null, "unit-symbols", "Pebibyte,Pebibytes,PiB")));
 
         var currency_category = default_unit_manager.add_category ("currency", _("Currency"));
         var currencies = CurrencyManager.get_default ().get_currencies ();
