Back in 2018 I wrote about Firefox's media autoplay settings as of Firefox 63 . Unsurprisingly, things have changed in the Firefox world since then, and for once they've changed for the better, at least from my perspective. My interest is in basically never having video autoplay. And when I say basically never, I mean it. In particular, I don't want Youtube to autoplay the next video in a playlist or the like.
The basic control for media autoplaying (for video and audio) is in Preferences → Privacy & Security, as covered in Allow or block media autoplay in Firefox . As mentioned there, if you want to block all videos you want 'block audio and video', not just 'block audio', which only blocks videos with un-muted audio and still allows silent ones to autoplay if they want to. This appears to affect everything, including bare video content such as direct links to .mp4s, which is a change from 2018. The limitation of this setting is that by itself, once you click to play a video in a tab, (auto)playing stays enabled until you close the tab again. So once you've let the first Youtube video play, Youtube (or anywhere else) will autoplay as much else as it wants to (in that tab). I prefer to specifically play each video.
To get more control, we need to turn to
about:config
and its collection of
media.autoplay.*
settings. Two resources are handy for this; the Firefox source code file AutoplayPolicy.cpp (which has been moved around in the Firefox source tree since 2018) and an additional commentary for
media.autoplay.blocking_policy
in StaticPrefList.yaml (via this Reddit question and answer ).
The Privacy & Security setting controls
media.autoplay.default
. A setting of 0 means 'allow', 1 means 'block audio (including video with audio)', and 5 means 'block audio and video'. Once you've played video, the
media.autoplay.blocking_policy
preference controls what happens to future attempts to autoplay video in the same tab. A setting of 0 (the default) allows this to work, so Youtube gets to autoplay further videos. This is apparently called sticky activation . A setting of 1 is called transient activation , and apparently will only autoplay future videos within a narrow time window controlled by
dom.user_activation.transient.timeout
, which defaults to five seconds. Finally, a setting of 2 appears to always require user input, and it certainly stops Youtube autoplaying the next video for me. It's possible that a setting of 2 will break some sites, and you'll need '1' instead.
(This apparently replaces the old
media.autoplay.enabled.user-gestures-needed
setting. For a long discussion, see bug 1509933 .)
Unfortunately, WebAudio seems to be another matter. Right now, in a normal Firefox the only way to disable WebAudio autoplaying seems to be to have
media.autoplay.blocking_policy
left at the default of 0 and
media.autoplay.block-webaudio
set to
true
. If you set another value for
media.autoplay.blocking_policy
, WebAudio can always autoplay if it wants to regardless of other settings. This may be something that Firefox would consider a bug. Fortunately WebAudio seems to be relatively rare on the web, and autoplaying WebAudio even more so.
(I base this on this demo , which autoplays unless I set
media.autoplay.block-webaudio
to
true
and
media.autoplay.blocking_policy
to 0, provided that I have Javascript enabled at all.)
The information about Firefox
about:config
settings in MDN's Autoplay guide for media and Web Audio APIs is somewhat outdated but might be useful, especially for
media.autoplay.block-webaudio
. Also, see this question and answer .
PS: A website that you've given camera or microphone permissions to is always allowed to autoplay video (or audio) regardless of your media autoplay settings. This hasn't changed since my entries in 2018 and Firefox will probably always continue to do this, since it's sensible for video conference tools.
PPS: In theory bug 1480281 might provide a way to get some information about Firefox's media autoplay decisions through either setting the
MOZ_LOG
environment variable or through
about:networking
's HTTP Logging . In practice I'm not sure if this works in release builds of Firefox. You'll probably need to read AutoplayPolicy.cpp to understand the messages.