diff --git a/hswaw/checkinator/at/templates/main.html b/hswaw/checkinator/at/templates/main.html
index 6012b21..36ab1cd 100644
--- a/hswaw/checkinator/at/templates/main.html
+++ b/hswaw/checkinator/at/templates/main.html
@@ -9,7 +9,7 @@
   {% for user, timestamp in users %}
     <li>
       <a href="{{ user | wikiurl }}">
-      {{ user }} ({{ timestamp|strfts() }})
+          {{ user }} (<span class="timestamp" data-datetime="{{ timestamp|utcisoformat }}">{{ timestamp|strfts() }} UTC</span>)
       </a>
     </li>
   {% endfor %}
@@ -31,4 +31,19 @@
   {% endtrans %}
   <hr>
   <a href="claim">Claim this device!</a>
+  <script>
+    function formatDate(d) {
+      function pad(n) {return n<10 ? '0'+n : n};
+      return d.getFullYear()+'-'
+       + pad(d.getMonth()+1)+'-'
+       + pad(d.getDate())+' '
+       + pad(d.getHours())+':'
+       + pad(d.getMinutes());
+    }
+
+    for (const tstamp of document.getElementsByClassName('timestamp')) {
+      const dt = new Date(tstamp.getAttribute("data-datetime"));
+      tstamp.innerHTML = formatDate(dt);
+    }
+  </script>
 {% endblock %}
diff --git a/hswaw/checkinator/at/tracker.py b/hswaw/checkinator/at/tracker.py
index 18a139e..4ca71fb 100644
--- a/hswaw/checkinator/at/tracker.py
+++ b/hswaw/checkinator/at/tracker.py
@@ -7,7 +7,7 @@
 import subprocess
 import logging
 from concurrent import futures
-from datetime import datetime
+from datetime import datetime, timezone
 
 from .tracker_pb2 import DhcpClient, DhcpClients, HwAddrResponse
 from .tracker_pb2_grpc import DhcpTrackerServicer, add_DhcpTrackerServicer_to_server
@@ -22,7 +22,8 @@
 def lease_to_client(lease: DhcpLease) -> DhcpClient:
     return DhcpClient(
         hw_address = bytes.fromhex(lease.hwaddr.replace(':', '')),
-        last_seen = datetime.utcfromtimestamp(lease.atime).isoformat(),
+        last_seen = datetime.utcfromtimestamp(lease.atime).replace(
+            tzinfo=timezone.utc).isoformat(),
         client_hostname = lease.name,
         ip_address = lease.ip
     )
diff --git a/hswaw/checkinator/at/web.py b/hswaw/checkinator/at/web.py
index 9eb5e6a..f85aa25 100644
--- a/hswaw/checkinator/at/web.py
+++ b/hswaw/checkinator/at/web.py
@@ -1,7 +1,7 @@
 import json
 import sqlite3
 from pathlib import Path
-from datetime import datetime
+from datetime import datetime, timezone
 from typing import NamedTuple, Iterable, Iterator, List
 from functools import wraps
 from flask import Flask, render_template, abort, g, \
@@ -112,8 +112,13 @@
     
     
     @app.template_filter('strfts')
-    def strfts(ts, format='%d/%m/%Y %H:%M'):
-        return datetime.fromtimestamp(ts).strftime(format)
+    def strfts(ts, format='%Y-%m-%d %H:%M'):
+        return datetime.utcfromtimestamp(ts).strftime(format)
+
+    @app.template_filter('utcisoformat')
+    def utcisoformat(ts):
+        return datetime.utcfromtimestamp(ts).replace(
+            tzinfo=timezone.utc).isoformat()
     
     
     @app.template_filter('wikiurl')
