diff --git a/api/funkwhale_api/common/middleware.py b/api/funkwhale_api/common/middleware.py
index cc897bf771867c440983b20b7878d316d8f5050c..b8f313f70013d0c096849ef0d117dd19bd1a08d4 100644
--- a/api/funkwhale_api/common/middleware.py
+++ b/api/funkwhale_api/common/middleware.py
@@ -130,6 +130,7 @@ def get_spa_file(spa_url, name):
         utils.join_url(spa_url, name),
     )
     response.raise_for_status()
+    response.encoding = "utf-8"
     content = response.text
     caches["local"].set(cache_key, content, settings.FUNKWHALE_SPA_HTML_CACHE_DURATION)
     return content
diff --git a/changes/changelog.d/index-html-encoding.bugfix b/changes/changelog.d/index-html-encoding.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..6f63d232fc090db505884a5bb75fa53263c7b55c
--- /dev/null
+++ b/changes/changelog.d/index-html-encoding.bugfix
@@ -0,0 +1 @@
+Ensure index.html files get loaded with UTF-8 encoding
\ No newline at end of file