diff --git a/components/status/StatusAttachment.vue b/components/status/StatusAttachment.vue
index 836d4ae5..c678fdf4 100644
--- a/components/status/StatusAttachment.vue
+++ b/components/status/StatusAttachment.vue
@@ -71,6 +71,7 @@ const isVideo = computed(() => attachment.type === 'video')
const isGif = computed(() => attachment.type === 'gifv')
const enableAutoplay = usePreferences('enableAutoplay')
+const unmuteVideos = usePreferences('unmuteVideos')
useIntersectionObserver(video, (entries) => {
const ready = video.value?.dataset.ready === 'true'
@@ -132,7 +133,7 @@ watch(shouldLoadAttachment, () => {
ref="video"
preload="none"
:poster="videoThumbnail"
- muted
+ :muted="!unmuteVideos"
loop
playsinline
:controls="shouldLoadAttachment"
@@ -172,7 +173,7 @@ watch(shouldLoadAttachment, () => {
ref="video"
preload="none"
:poster="videoThumbnail"
- muted
+ :muted="!unmuteVideos"
loop
playsinline
rounded-lg
diff --git a/composables/settings/definition.ts b/composables/settings/definition.ts
index 98f3c337..fec14b7c 100644
--- a/composables/settings/definition.ts
+++ b/composables/settings/definition.ts
@@ -23,6 +23,7 @@ export interface PreferencesSettings {
hideNews: boolean
grayscaleMode: boolean
enableAutoplay: boolean
+ unmuteVideos: boolean
optimizeForLowPerformanceDevice: boolean
enableDataSaving: boolean
enablePinchToZoom: boolean
@@ -79,6 +80,7 @@ export const DEFAULT__PREFERENCES_SETTINGS: PreferencesSettings = {
hideNews: false,
grayscaleMode: false,
enableAutoplay: true,
+ unmuteVideos: false,
optimizeForLowPerformanceDevice: false,
enableDataSaving: false,
enablePinchToZoom: false,
diff --git a/locales/en.json b/locales/en.json
index b7ac956e..f0e23f4a 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -561,6 +561,7 @@
"label": "Preferences",
"optimize_for_low_performance_device": "Optimize for low performance device",
"title": "Experimental Features",
+ "unmute_videos": "Unmute videos by default",
"use_star_favorite_icon": "Use star favorite icon",
"user_picker": "User Picker",
"user_picker_description": "Displays all avatars of logged accounts in the bottom-left so you can switch quickly between them.",
diff --git a/pages/settings/preferences/index.vue b/pages/settings/preferences/index.vue
index c0d7be72..97385b6c 100644
--- a/pages/settings/preferences/index.vue
+++ b/pages/settings/preferences/index.vue
@@ -51,6 +51,12 @@ const userSettings = useUserSettings()
>
{{ $t('settings.preferences.enable_autoplay') }}
+
+ {{ $t('settings.preferences.unmute_videos') }}
+