diff --git a/osu.Game.Tests/Visual/Online/TestSceneDirectDownloadButton.cs b/osu.Game.Tests/Visual/Online/TestSceneDirectDownloadButton.cs
index 5b0c2d3c67..f612992bf6 100644
--- a/osu.Game.Tests/Visual/Online/TestSceneDirectDownloadButton.cs
+++ b/osu.Game.Tests/Visual/Online/TestSceneDirectDownloadButton.cs
@@ -149,8 +149,8 @@ namespace osu.Game.Tests.Visual.Online
 
             public DownloadState DownloadState => State.Value;
 
-            public TestDownloadButton(BeatmapSetInfo beatmapSet, bool noVideo = false)
-                : base(beatmapSet, noVideo)
+            public TestDownloadButton(BeatmapSetInfo beatmapSet)
+                : base(beatmapSet)
             {
             }
         }
diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs
index ab5a652a94..8609783dc5 100644
--- a/osu.Game/Configuration/OsuConfigManager.cs
+++ b/osu.Game/Configuration/OsuConfigManager.cs
@@ -49,6 +49,7 @@ namespace osu.Game.Configuration
             };
 
             Set(OsuSetting.ExternalLinkWarning, true);
+            Set(OsuSetting.PreferNoVideo, false);
 
             // Audio
             Set(OsuSetting.VolumeInactive, 0.25, 0, 1, 0.01);
@@ -214,6 +215,7 @@ namespace osu.Game.Configuration
         IncreaseFirstObjectVisibility,
         ScoreDisplayMode,
         ExternalLinkWarning,
+        PreferNoVideo,
         Scaling,
         ScalingPositionX,
         ScalingPositionY,
diff --git a/osu.Game/Overlays/Direct/PanelDownloadButton.cs b/osu.Game/Overlays/Direct/PanelDownloadButton.cs
index 08e3ed9b38..387ced6acb 100644
--- a/osu.Game/Overlays/Direct/PanelDownloadButton.cs
+++ b/osu.Game/Overlays/Direct/PanelDownloadButton.cs
@@ -6,6 +6,7 @@ using osu.Framework.Allocation;
 using osu.Framework.Bindables;
 using osu.Framework.Graphics;
 using osu.Game.Beatmaps;
+using osu.Game.Configuration;
 using osu.Game.Graphics.Containers;
 using osu.Game.Graphics.UserInterface;
 using osu.Game.Online;
@@ -16,8 +17,6 @@ namespace osu.Game.Overlays.Direct
     {
         protected bool DownloadEnabled => button.Enabled.Value;
 
-        private readonly bool noVideo;
-
         /// <summary>
         /// Currently selected beatmap. Used to present the correct difficulty after completing a download.
         /// </summary>
@@ -25,12 +24,11 @@ namespace osu.Game.Overlays.Direct
 
         private readonly ShakeContainer shakeContainer;
         private readonly DownloadButton button;
+        private Bindable<bool> noVideoSetting;
 
-        public PanelDownloadButton(BeatmapSetInfo beatmapSet, bool noVideo = false)
+        public PanelDownloadButton(BeatmapSetInfo beatmapSet)
             : base(beatmapSet)
         {
-            this.noVideo = noVideo;
-
             InternalChild = shakeContainer = new ShakeContainer
             {
                 RelativeSizeAxes = Axes.Both,
@@ -50,7 +48,7 @@ namespace osu.Game.Overlays.Direct
         }
 
         [BackgroundDependencyLoader(true)]
-        private void load(OsuGame game, BeatmapManager beatmaps)
+        private void load(OsuGame game, BeatmapManager beatmaps, OsuConfigManager osuConfig)
         {
             if (BeatmapSet.Value?.OnlineInfo?.Availability?.DownloadDisabled ?? false)
             {
@@ -59,6 +57,8 @@ namespace osu.Game.Overlays.Direct
                 return;
             }
 
+            noVideoSetting = osuConfig.GetBindable<bool>(OsuSetting.PreferNoVideo);
+
             button.Action = () =>
             {
                 switch (State.Value)
@@ -77,7 +77,7 @@ namespace osu.Game.Overlays.Direct
                         break;
 
                     default:
-                        beatmaps.Download(BeatmapSet.Value, noVideo);
+                        beatmaps.Download(BeatmapSet.Value, noVideoSetting.Value);
                         break;
                 }
             };
diff --git a/osu.Game/Overlays/Settings/Sections/Online/WebSettings.cs b/osu.Game/Overlays/Settings/Sections/Online/WebSettings.cs
index a8b3e45a83..23513eade8 100644
--- a/osu.Game/Overlays/Settings/Sections/Online/WebSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Online/WebSettings.cs
@@ -21,6 +21,12 @@ namespace osu.Game.Overlays.Settings.Sections.Online
                     LabelText = "Warn about opening external links",
                     Bindable = config.GetBindable<bool>(OsuSetting.ExternalLinkWarning)
                 },
+                new SettingsCheckbox
+                {
+                    LabelText = "Prefer downloads without video",
+                    Keywords = new[] { "no-video" },
+                    Bindable = config.GetBindable<bool>(OsuSetting.PreferNoVideo)
+                },
             };
         }
     }
diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs
index ed3f9af8e2..d7dcca9809 100644
--- a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs
+++ b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs
@@ -212,8 +212,8 @@ namespace osu.Game.Screens.Multi
 
         private class PlaylistDownloadButton : PanelDownloadButton
         {
-            public PlaylistDownloadButton(BeatmapSetInfo beatmapSet, bool noVideo = false)
-                : base(beatmapSet, noVideo)
+            public PlaylistDownloadButton(BeatmapSetInfo beatmapSet)
+                : base(beatmapSet)
             {
                 Alpha = 0;
             }