diff --git a/public_html/gmap.html b/public_html/gmap.html
index 54e2825..155d5fd 100644
--- a/public_html/gmap.html
+++ b/public_html/gmap.html
@@ -17,6 +17,7 @@
 	<body onload="initialize()">
           <div id="loader" class="hidden">
             <img src="spinny.gif" id="spinny">
+            <progress id="loader_progress"></progress>
           </div>
 
 		<div id="map_container">
diff --git a/public_html/script.js b/public_html/script.js
index 176c38a..82243ff 100644
--- a/public_html/script.js
+++ b/public_html/script.js
@@ -165,6 +165,8 @@ function initialize() {
                 // disable ticking on the receiver clock, we will update it ourselves
                 ReceiverClock.tick = (function(){})
         }
+
+        $("#loader").removeClass("hidden");
         
         // Get receiver metadata, reconfigure using it, then continue
         // with initialization
@@ -192,8 +194,8 @@ var CurrentHistoryFetch = null;
 var PositionHistoryBuffer = []
 function start_load_history() {
         if (PositionHistorySize > 0) {
-                console.log("Starting to load history");
-                $("#loader").removeClass("hidden");
+                $("#loader_progress").attr('max',PositionHistorySize);
+                console.log("Starting to load history (" + PositionHistorySize + " items)");
                 load_history_item(0);
         } else {
                 endLoadHistory();
@@ -207,6 +209,7 @@ function load_history_item(i) {
         }
 
         console.log("Loading history #" + i);
+        $("#loader_progress").attr('value',i);
 
         $.ajax({ url: 'data/history_' + i + '.json',
                  timeout: 5000,
diff --git a/public_html/style.css b/public_html/style.css
index 2b215b0..1991f2a 100644
--- a/public_html/style.css
+++ b/public_html/style.css
@@ -17,6 +17,7 @@ div#update_error { position: absolute; bottom: 25px; left: 25px; border: 2px sol
 
 div#loader { z-index: 99; position: absolute; left: 0; top: 0; bottom: 0; right: 0; background: #000; opacity: 0.8; filter: alpha(opacity=80); }
 #spinny { width: 128px; height: 128px; position: absolute; top: 50%; left: 50%; margin: -64px 0 0 -64px; }
+#loader_progress { width: 250px; height: 20px; position: absolute; top: 50%; left: 50%; margin: 128px 0 0 -125px; }
 
 #tableinfo, #sudo_buttons { font-size: x-small; font-family: monospace; }