diff --git a/.changeset/proud-seas-study.md b/.changeset/proud-seas-study.md
new file mode 100644
index 0000000000..ec12b7232a
--- /dev/null
+++ b/.changeset/proud-seas-study.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: always case insensitive event handlers during ssr
diff --git a/packages/svelte/src/internal/server/index.js b/packages/svelte/src/internal/server/index.js
index 70f1f6dab8..34d0133a31 100644
--- a/packages/svelte/src/internal/server/index.js
+++ b/packages/svelte/src/internal/server/index.js
@@ -154,13 +154,12 @@ export function attributes(attrs, css_hash, classes, styles, flags = 0) {
if (INVALID_ATTR_NAME_CHAR_REGEX.test(name)) continue;
var value = attrs[name];
+ var lower = name.toLowerCase();
- if (lowercase) {
- name = name.toLowerCase();
- }
+ if (lowercase) name = lower;
// omit event handler attributes
- if (name.length > 2 && name.startsWith('on')) continue;
+ if (lower.length > 2 && lower.startsWith('on')) continue;
if (is_input) {
if (name === 'defaultvalue' || name === 'defaultchecked') {
diff --git a/packages/svelte/tests/server-side-rendering/samples/attribute-strip-svg-mathml-ce/_expected.html b/packages/svelte/tests/server-side-rendering/samples/attribute-strip-svg-mathml-ce/_expected.html
new file mode 100644
index 0000000000..e737f44c56
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/attribute-strip-svg-mathml-ce/_expected.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/tests/server-side-rendering/samples/attribute-strip-svg-mathml-ce/main.svelte b/packages/svelte/tests/server-side-rendering/samples/attribute-strip-svg-mathml-ce/main.svelte
new file mode 100644
index 0000000000..df15de54de
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/attribute-strip-svg-mathml-ce/main.svelte
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file