diff --git a/assets/darkmode.js b/assets/darkmode.js
index 93bf6da..d95a281 100644
--- a/assets/darkmode.js
+++ b/assets/darkmode.js
@@ -1,14 +1,8 @@
-// Darkmode toggle
-const toggleSwitch = document.querySelector('#darkmode-toggle')
-
 const userPref = window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'
 const currentTheme = localStorage.getItem('theme') ?? userPref
 
 if (currentTheme) {
   document.documentElement.setAttribute('saved-theme', currentTheme);
-  if (currentTheme === 'dark') {
-    toggleSwitch.checked = true
-  }
 }
 
 const switchTheme = (e) => {
@@ -22,5 +16,14 @@ const switchTheme = (e) => {
   }
 }
 
-// listen for toggle
-toggleSwitch.addEventListener('change', switchTheme, false)
\ No newline at end of file
+window.addEventListener('DOMContentLoaded', () => {
+  // Darkmode toggle
+  const toggleSwitch = document.querySelector('#darkmode-toggle')
+
+  // listen for toggle
+  toggleSwitch.addEventListener('change', switchTheme, false)
+
+  if (currentTheme === 'dark') {
+    toggleSwitch.checked = true
+  }
+})
diff --git a/layouts/404.html b/layouts/404.html
index 8494910..deec3eb 100644
--- a/layouts/404.html
+++ b/layouts/404.html
@@ -11,12 +11,6 @@
         <a href="/">↳ Let's get you home.</a>
     </div>
 </div>
-
-{{- with resources.Get "darkmode.js" | minify -}}
-<script>
-  {{.Content | safeJS }}
-</script>
-{{- end -}}
 </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/layouts/_default/single.html b/layouts/_default/single.html
index 14a3b05..9e647ff 100644
--- a/layouts/_default/single.html
+++ b/layouts/_default/single.html
@@ -18,13 +18,6 @@
     </article>
     {{partial "footer.html" .}}
 </div>
-
-{{- with resources.Get "darkmode.js" | minify -}}
-<script>
-  {{.Content | safeJS }}
-</script>
-{{- end -}}
-
 </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/layouts/index.html b/layouts/index.html
index 83f6fb8..fdc03b1 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -13,10 +13,4 @@
         {{partial "footer.html" .}}
     </div>
 </div>
-
-{{- with resources.Get "darkmode.js" | minify -}}
-<script>
-  {{.Content | safeJS }}
-</script>
-{{- end -}}
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index e53ebe1..3810078 100644
--- a/layouts/partials/head.html
+++ b/layouts/partials/head.html
@@ -17,5 +17,11 @@
     </style>
     {{end}}
     {{end}}
+
+    {{- with resources.Get "darkmode.js" | minify -}}
+    <script>
+      {{.Content | safeJS }}
+    </script>
+    {{- end -}}
 </head>
-{{ template "_internal/google_analytics.html" . }}
\ No newline at end of file
+{{ template "_internal/google_analytics.html" . }}