diff --git a/package/gluon-status-page/src/js/lib/gui/statistics.js b/package/gluon-status-page/src/js/lib/gui/statistics.js
index 7f09323c6c1c1799c651fa6f0c64cf7a011a435b..3dcf5a522f7ff55ca3b1c438050694f76fbc9ed6 100644
--- a/package/gluon-status-page/src/js/lib/gui/statistics.js
+++ b/package/gluon-status-page/src/js/lib/gui/statistics.js
@@ -171,7 +171,7 @@ define(["lib/helper"], function (Helper) {
   }
 
   function prettyPackets(d) {
-    var v = new Intl.NumberFormat("de-DE", {maximumFractionDigits: 0}).format(d)
+    var v = Helper.formatNumberFixed(d, 0)
     return v + " Pakete/s"
   }
 
@@ -183,7 +183,7 @@ define(["lib/helper"], function (Helper) {
       prefix++
     }
 
-    d = new Intl.NumberFormat("de-DE", {maximumSignificantDigits: 3}).format(d)
+    d = Helper.formatNumber(d, 3)
     return d + " " + prefixes[prefix]
   }
 
@@ -220,11 +220,11 @@ define(["lib/helper"], function (Helper) {
   }
 
   function prettyNVRAM(usage) {
-    return new Intl.NumberFormat("de-DE", {maximumSignificantDigits: 3}).format(usage * 100) + "% belegt"
+    return Helper.formatNumber(usage * 100, 3) + "% belegt"
   }
 
   function prettyLoad(load) {
-    return new Intl.NumberFormat("de-DE", {maximumSignificantDigits: 3}).format(load)
+    return Helper.formatNumberFixed(load, 2)
   }
 
   function prettyRAM(memory) {
diff --git a/package/gluon-status-page/src/js/lib/helper.js b/package/gluon-status-page/src/js/lib/helper.js
index 6b39bc0a188baffd5c5625378380c8b1ec2cf24c..c0c0ce2fba2286a9f24306b17b41818e0751dc0d 100644
--- a/package/gluon-status-page/src/js/lib/helper.js
+++ b/package/gluon-status-page/src/js/lib/helper.js
@@ -51,6 +51,25 @@ define([ "bacon" ], function (Bacon) {
     return dictGet(dict[k], key)
   }
 
+  function localizeNumber(d) {
+    var sep = ','
+    return d.replace('.', sep)
+  }
+
+  function formatNumberFixed(d, digits) {
+    return localizeNumber(d.toFixed(digits))
+  }
+
+  function formatNumber(d, digits) {
+    digits--
+
+    for (var v = d; v >= 10 && digits > 0; v /= 10)
+      digits--
+
+    // avoid toPrecision as it might produce strings in exponential notation
+    return formatNumberFixed(d, digits)
+  }
+
   function haversine() {
     var radians = Array.prototype.map.call(arguments, function(deg) { return deg / 180.0 * Math.PI })
     var lat1 = radians[0], lon1 = radians[1], lat2 = radians[2], lon2 = radians[3]
@@ -66,6 +85,8 @@ define([ "bacon" ], function (Bacon) {
          , request: request
          , getJSON: getJSON
          , dictGet: dictGet
+         , formatNumber: formatNumber
+         , formatNumberFixed: formatNumberFixed
          , haversine: haversine
          }
 })