diff --git a/lib/rules/template-require-media-caption.js b/lib/rules/template-require-media-caption.js
index 45ac9d705e..8b93ded7d4 100644
--- a/lib/rules/template-require-media-caption.js
+++ b/lib/rules/template-require-media-caption.js
@@ -74,7 +74,7 @@ module.exports = {
}
if (kindAttr.value?.type === 'GlimmerTextNode') {
- return kindAttr.value.chars === 'captions';
+ return kindAttr.value.chars.toLowerCase() === 'captions';
}
return false;
diff --git a/tests/lib/rules/template-require-media-caption.js b/tests/lib/rules/template-require-media-caption.js
index c7d9f25b8e..db24697482 100644
--- a/tests/lib/rules/template-require-media-caption.js
+++ b/tests/lib/rules/template-require-media-caption.js
@@ -31,6 +31,10 @@ ruleTester.run('template-require-media-caption', rule, {
`,
'',
+ // HTML enumerated attribute values are case-insensitive, so "Captions" is
+ // the same as "captions" for the track element. Matches jsx-a11y/vue-a11y.
+ '',
+ '',
'',
'',
'',