diff --git a/pygitweb/static/readme-render.js b/pygitweb/static/readme-render.js
index 9d87401..f50fb59 100644
--- a/pygitweb/static/readme-render.js
+++ b/pygitweb/static/readme-render.js
@@ -138,6 +138,12 @@
     window.addEventListener("scroll", onScroll, { passive: true });
     updateActive();
   }
+  function b64ToUtf8(b64) {
+    var binary = atob(b64);
+    var bytes = new Uint8Array(binary.length);
+    for (var i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
+    return new TextDecoder().decode(bytes);
+  }
   function render() {
     var container = document.getElementById("readme-container");
     var enc = container && container.getAttribute("data-readme-b64");
@@ -145,7 +151,7 @@
     var blobDir = container && container.getAttribute("data-blob-dir") || "";
     if (!container || !enc || typeof showdown === "undefined") return;
     try {
-      var raw = atob(enc);
+      var raw = b64ToUtf8(enc);
       var conv = new showdown.Converter({ ghCompatibleHeaderId: true });
       container.innerHTML = conv.makeHtml(raw);
       ensureHeadingIds(container);
