diff --git a/km3io/offline.py b/km3io/offline.py
index 6fd13b2d2bb6159dc03eba50c3770e1e50cd71d8..25d7f181d7804f6a1e81336ab2a72fd56ff0b886 100644
--- a/km3io/offline.py
+++ b/km3io/offline.py
@@ -146,3 +146,12 @@ class Header:
 
     def __getitem__(self, key):
         return self._data[key]
+
+    def keys(self):
+        return self._data.keys()
+
+    def items(self):
+        return self._data.items()
+
+    def values(self):
+        return self._data.values()
diff --git a/tests/test_offline.py b/tests/test_offline.py
index 2f59f05a795cf429cd1b14d88d413d50b6afcc24..5762bf3174be4f2d26994bb0b26c58884f51f1fb 100644
--- a/tests/test_offline.py
+++ b/tests/test_offline.py
@@ -123,6 +123,20 @@ class TestHeader(unittest.TestCase):
         assert 7 == header["d"]
         assert "bar" == header["e+f"]
 
+    def test_header_behaves_like_a_dict(self):
+        head = {
+            "a": "1 2 3",
+            "b+c": "4 5 6",
+            "c": "foo",
+            "d": "7",
+            "e+f": "bar",
+        }
+
+        header = Header(head)
+        self.assertListEqual(list(head.keys()), list(header.keys()))
+        assert 5 == len(header.values())
+        assert 5 == len(header.items())
+
     def test_reading_header_from_sample_file(self):
         head = OFFLINE_NUMUCC.header