Chrome does not have any way to stop video auto play?

42 points by nomendos 4 months ago | 62 comments
What is going on with Chrome, It seems Chrome does not have any way to stop video auto play (no settings option and all extensions that used to work now are delisted from Chrome store). I tried many from the Chrome store and few that are not yet removed, simply do not work anymore. Has Google Chrome team fallen so low that they insist on autoplaying and giving no option to stop it!?!?
  • gavinsyancey 4 months ago
    Firefox blocks auto playing videos with sound by default. And you can also configure it to block all autoplay or or allow it globally, or per-website. https://support.mozilla.org/en-US/kb/block-autoplay
    • donio 4 months ago
      https://wiki.mozilla.org/Media/block-autoplay has some more additional information in particular about the media.autoplay.blocking_policy pref which allows restoring the older behavior of the play intent not being sticky.
      • Nursie 4 months ago
        Which is great for most stuff, but doesn't seem to stop facebook 'reels' from animating. They must do some trickery like loading a short animated image as a 'teaser' before rendering the actual video on click.
        • kvemkon 4 months ago
          Using this since I can remember. But noticed another issue and still searching how to disable the video cache at all until I start to play the video and to limit it to 2-5 seconds (or 1 MB) during playing, though no chance so far.
          • archargelod 4 months ago
            For youtube there is a "YouTube no Buffer"[0] extension that does precisely this - stops videos from autoplaying and buffering when you open a link.

            I have this plugin, Leechblock and ublock filters (blocking any mention of shorts from the site) to make yt less addicting. And it kinda works.

            0 - https://addons.mozilla.org/en-US/firefox/addon/youtube-no-bu...

            • kvemkon 4 months ago
              And just another issue since few months: youtube page auto-reloads/replaces itself since few seconds after opening (even if the tab is not active). The title gets replaced from the original language into English auto-translation (EN is default for browser), but I'd like to see video titles in the original language.
            • bad_user 4 months ago
              The Brave browser also has a setting in “Privacy and Security” -> “Site and shields settings” -> “Additional permissions” -> “Autoplay”

              You can block globally or per website.

              • wodenokoto 4 months ago
                Doesn’t YouTube technically autoplay? You click a link, change page and url and a video starts playing
                • EduardoBautista 4 months ago
                  Video autoplay is usually allowed on a whitelist of URLs determined by the browser vendor, if I recall correctly.

                  YouTube is always on those whitelists.

                  • curtisblaine 4 months ago
                    I can't try it at the moment, but I'm not sure the page is actually reloaded. I suspect YouTube is an SPA and, when you click, the url change event is captured by a router and the content of the page is merely replaced.
                • 28304283409234 4 months ago
                  Chrome is not there to serve you. It is to serve Google.
                  • Sabinus 4 months ago
                    I have said it before and I will say it again, it makes zero sense to browse the internet with a piece of software written by an advertising company.
                    • caspper69 4 months ago
                      To think, they have advocated over the years to keep adding to the specs to the point that they’ve become so complex that even Microsoft, the king of this rube goldberg type shit, threw in the towel and said eff it, we’ll just use Chromium.

                      We should write an app browser with sensible layout and a qemu virtual machine backend. Pay the 5% hit to run actually performant native code that’s 100% sandboxed.

                      Couldn’t be any worse, that’s for sure.

                      • avgd 4 months ago
                        > so complex that even Microsoft, the king of this rube goldberg type shit, threw in the towel and said eff it, we’ll just use Chromium

                        I believe the core reason to be different: Microsoft lost the will to compete.

                        You can say any number of negative things about Steve Ballmer, but at least the guy tried. He tried. He may fail, but he would try, again and again, no matter how many time he would experience losses.

                        When he got replaced by a bean counter Microsoft stopped trying. It isn't just browser engines they've abandoned. There is no Windows Phone anymore. Windows 11 is worse on tablets than 10. Closing down their Apple Music competitor (Groove) etc.

                        Recently, they've been arguing for less exclusivity on gaming consoles and releasing their games on Playstation.

                        If we anthropomorphized corporations, modern Microsoft is the thin skinned loser who will fold at the slightest provocation.

                      • GrumpyNl 4 months ago
                        I use it because most of my clients use it. Chrome still has a market share of 66%.
                        • ajkjk 4 months ago
                          okay there are some reasons ...
                        • nomendos 4 months ago
                          So we should be using other browsers (Brave, LibreWolf, Vivaldi, Firefox, even Opera might be better overall)
                          • theshrike79 4 months ago
                            Of those, afaik Firefox is the only one not based on Chromium.

                            "But but Brave..." Yea they have their own crap on top, but it's still the Chromium rendering engine.

                        • liendolucas 4 months ago
                          There's no reason to use Chrome today. Maybe there was a reason to use it many many years ago. With plenty of options today the sane choice is to select another browser. I run Firefox even on my phone. If for some reason I need a Chrome based browser, on my phone I switch to Brave, on the desktop to Chromium. But I rarely open any of those at all as Firefox has been doing extremely well.
                          • tim333 4 months ago
                            Google lens built in is cool.
                          • doctor_radium 4 months ago
                            Hmm, but there are ways of streaming video that don't have traditional Play/Pause/etc. buttons. If there's no way to turn it off, how can Chrome "learn my preferences"? Maybe it can sense me swearing? Not a Chrome user and definitely not starting now. Autoplay video is one of my great annoyances on the modern web.
                            • ivolimmen 4 months ago
                              It does listen to you but it does not react to voice commands. It just wants to know what you are saying so it can serve ads to you.
                              • autoexec 4 months ago
                                > Chrome "learn my preferences"?

                                Google already gets more than enough data about your preferences without having to respect any of them.

                              • tech234a 4 months ago
                                AutoplayerStopper [1] is still available if you set the policy to enable manifest V2 extensions [2] which should still work for a few more months.

                                [1]: https://chromewebstore.google.com/detail/autoplaystopper/ejd...

                                [2]: https://old.reddit.com/r/uBlockOrigin/comments/1d49ud1/manif...

                                • Sabinus 4 months ago
                                  Oh, this was a feature removed by manifest v3? How coincidental and convenient for Google.
                                  • nomendos 4 months ago
                                    I saw these and I and most others are not desperate to buy month or less. Chrome fully deserves to be uninstalled it is enemy-ware!
                                  • seneca 4 months ago
                                    This is totally unsurprising. I'm sure Google realized that autoplaying gives them more ad revenue somehow. It was a massive mistake to allow an ad company control over your browser.
                                    • nomendos 4 months ago
                                      Unsurprising shall be mass-uninstall ;-) Fully deserved!
                                    • follower 4 months ago
                                      Quoting part of k1t's comment[0] for visibility:

                                      "I do recall a Firefox discussion about how they can't 100% block videos because there will always be another way - eg do animated gifs count, or javascript that shows a rapid sequence of images [...]"

                                      I also recall this being a justification given for auto-playing muted or audio-less video (i.e. because blocking "efficient" muted video playback will just lead to malicious actors using "less efficient" means of "image sequence" playback thus increasing the negative impact further).

                                      On a related note, the other day I also discovered (while debugging why an audio demo didn't work the same way it did six years ago :D ) that there's now also a concept called "Sticky Activation" which can also impact "Autoplay of Media and Web Audio APIs (in particular for AudioContexts)"[1].

                                      ----

                                      [0] https://news.ycombinator.com/item?id=43033814

                                      [1] https://developer.mozilla.org/en-US/docs/Web/Security/User_a...

                                      • timothya 4 months ago
                                        See: https://developer.chrome.com/blog/autoplay

                                        tl;dr: The browser attempts to learn your preference for each site automatically based on how you interact with videos. You can see what it's calculated by visiting chrome://media-engagement

                                        • Terr_ 4 months ago
                                          > attempts to learn

                                          Oh god, that reminds me of another piece of bullshit Chrome magic. They made a system when the browser shares signatures of forms/fields with a central server, which sends back "crowdsourced" autocompletion rules, and they've made it almost impossible for developers to stop it from doing that [0] even when it's flat-out wrong and users are complaining about inappropriate autocomplete suggestions being shown/recorded.

                                          Over the last ~8 years developers have submitted hundreds of examples [1] of why it's a stupid feature that at least needs a way to opt-out, but Chromium devs have kept it mandatory, and I suspect it's because Google/Alphabet is somehow exploiting all that leaked metadata about what forms people visit.

                                          [0] https://issues.chromium.org/issues/40093420

                                          [1] https://issues.chromium.org/issues/41239842

                                          • Terr_ 4 months ago
                                            P.S.: Messing with the issue-tracker (and bringing up unpleasant memories of desperately trying to find a workaround in their source-code) I find that the two linked issue about this anti-feature rank are both in the top-15 most-voted open issues. (Rank 14 and 9, respectively.)

                                            https://issues.chromium.org/issues?q=status:open%20votecount...

                                            (Vote count column not displayed by default.)

                                          • loeg 4 months ago
                                            Yeah, they've always claimed this but I've literally never wanted autoplay and it's never ever learned that preference, so...
                                            • Groxx 4 months ago
                                              > Media Engagement Index

                                              Solid evidence that Google knows just what I want from a browser: a taste of vomit.

                                            • nomendos 4 months ago
                                              OK Chrome shall be gone/uninstalled/not-used from all my computers and shall recommend it be removed from all my friends computers with the explanation of their behavior and loss of trust and respect for us users!
                                              • bdhcuidbebe 4 months ago
                                                If its youtube, change your settings, Its autoplay on default.

                                                If its your website, just set it up like you want in the video tag.

                                                Not sure why this post wasnt removed tho. This is just general issues you could have googled for a solution or askes a site dedicated to it such as stack overflow.

                                                • tim333 4 months ago
                                                  • blackeyeblitzar 4 months ago
                                                    I find this behavior quite annoying. I would like to be able to block auto play by default across the entire Internet. I have to imagine this is simply a way to allow Google’s ad networks to play annoying ads.
                                                    • staunton 4 months ago
                                                      > I would like to be able to block auto play by default across the entire Internet

                                                      No problem, just use a different browser.

                                                      • shever73 4 months ago
                                                        Use the Brave browser and `brave://settings/content/autoplay` is all you need.
                                                      • polotics 4 months ago
                                                        could you provide an example of a website that shows this behaviour?
                                                        • erikig 4 months ago
                                                          The YouTube video page comes to mind e.g https://youtu.be/8aIyHl5qP9I It would me great if the user had the option to press play to start the video.
                                                          • tim333 4 months ago
                                                            • bitpush 4 months ago
                                                              wut? You go to a YouTube video url to watch the video.
                                                              • k1t 4 months ago
                                                                If I say "no auto-playing videos" then I mean No Auto-Playing Videos.

                                                                I don't expect you or my browser to start second guessing that with "oh, but probably it's OK on this site...?"

                                                                I do recall a Firefox discussion about how they can't 100% block videoes because there will always be another way - eg do animated gifs count, or javascript that shows a rapid sequence of images - but just because it can't be perfect doesn't mean it isn't worth doing.

                                                                • technothrasher 4 months ago
                                                                  Yep, and I'm ready to watch said video as soon as I press the play button.

                                                                  I haven't really used chrome much in years, as Firefox is my main browser. But even with Firefox, stopping autoplay seems to be an ongoing cat and mouse game.

                                                                  • red_trumpet 4 months ago
                                                                    It would be nice to read the title and look at the thumbnail to get an impression before blasting "never gonna give you up" through my speakers.
                                                                    • rpigab 4 months ago
                                                                      I only read the comments usually, if the comments are good, maybe I'll watch the video.
                                                                  • a012 4 months ago
                                                                    It’s on the frontpage now as well: https://design.google/library/youtube-new-red-color
                                                                  • oulipo 4 months ago
                                                                    I made a small ViolentMonkey script to stop autoplay on Youtube, which is really annoying

                                                                        // ==UserScript==
                                                                        // @name        YouTube video page AutoPause
                                                                        // @namespace   https://greasyfork.org/en/users/13981-chk1
                                                                        // @description Automatically pause YouTube videos on Youtube video pages
                                                                        // @icon        https://www.youtube.com/s/desktop/536ed9a8/img/favicon_96x96.png
                                                                        // @include     https://*.youtube.com/watch*
                                                                        // @include     http://*.youtube.com/watch*
                                                                        // @version     0.3
                                                                        // @grant       none
                                                                        // @run-at      document-end
                                                                        // ==/UserScript==
                                                                        
                                                                        (function () {
                                                                            'use strict';
                                                                            /**
                                                                             * Get element with selector and call callback with it.
                                                                             * @param {string} selector Selector for the element.
                                                                             * @param {function} callback Callback function to call with the element.
                                                                             */
                                                                            function forElement(selector, callback) {
                                                                                // Init forElement.timeoutCount.
                                                                                if (forElement.timeoutCount === undefined) {
                                                                                    forElement.timeoutCount = {}
                                                                                }
                                                                                // Init forElement.timeoutCount[selector].
                                                                                if (forElement.timeoutCount[selector] === undefined) {
                                                                                    forElement.timeoutCount[selector] = 0
                                                                                }
                                                                        
                                                                                // Get element.
                                                                                const element = document.querySelector(selector)
                                                                        
                                                                                // If element not found.
                                                                                if (element === null) {
                                                                                    // try again after timeout.
                                                                                    setTimeout(
                                                                                        function () {
                                                                                            forElement(selector, callback)
                                                                                        },
                                                                                        (
                                                                                            // Base timeout.
                                                                                            100
                                                                                            *
                                                                                            // Increase timeout after each try.
                                                                                            (forElement.timeoutCount[selector]++)
                                                                                        )
                                                                                    )
                                                                                }
                                                                                // If element found
                                                                                else {
                                                                                    // reset timeout count
                                                                                    forElement.timeoutCount[selector] = 0
                                                                                    // and call callback with element.
                                                                                    callback(element)
                                                                                }
                                                                            }
                                                                        
                                                                            // Init previous video ID.
                                                                            let videoIdCurr = null;
                                                                        
                                                                            // Init paused video ID.
                                                                            let videoIdPaused = null
                                                                        
                                                                            // Init video element.
                                                                            let videoElement = null
                                                                        
                                                                            /**
                                                                             * On playing event.
                                                                             */
                                                                            function onPlaying() {
                                                                                // If video ID has not changed from last paused one
                                                                                if (videoIdPaused === videoIdCurr) {
                                                                                    // just return.
                                                                                    return
                                                                                }
                                                                        
                                                                                // Pause video
                                                                                videoElement.pause()
                                                                        
                                                                                // Update paused video ID.
                                                                                videoIdPaused = videoIdCurr
                                                                            }
                                                                        
                                                                            /**
                                                                             * Run on url change.
                                                                             */
                                                                            function onUrlChange() {
                                                                                // Get video id from url.
                                                                                const videoIdNew = (new URLSearchParams(window.location.search)).get("v");
                                                                                // If
                                                                                if (
                                                                                    // did not get video id
                                                                                    videoIdNew === null
                                                                                    ||
                                                                                    // or video id did not change
                                                                                    videoIdNew === videoIdCurr
                                                                                ) {
                                                                                    // just return.
                                                                                    return
                                                                                }
                                                                        
                                                                                // Update previous video id.
                                                                                videoIdCurr = videoIdNew;
                                                                        
                                                                                // Run for
                                                                                forElement(
                                                                                    // video element that has src attribute
                                                                                    "video[src]",
                                                                                    function (video) {
                                                                                        // If video element is set
                                                                                        if (videoElement) {
                                                                                            // remove event listener from video element.
                                                                                            videoElement.removeEventListener("playing", onPlaying);
                                                                                        }
                                                                        
                                                                                        // Update video element.
                                                                                        videoElement = video
                                                                        
                                                                                        // Add event listener to video element
                                                                                        videoElement.addEventListener("playing", onPlaying);
                                                                                    }
                                                                                )
                                                                            }
                                                                        
                                                                            // Add event listener for
                                                                            window.addEventListener(
                                                                                // Youtube page data updated event.
                                                                                'yt-page-data-updated',
                                                                                function () {
                                                                                    onUrlChange();
                                                                                }
                                                                            );
                                                                        
                                                                            // Run on url change once on first load.
                                                                            onUrlChange();
                                                                        })();
                                                                    • scarface_74 4 months ago
                                                                      That could really be a gist with a link.
                                                                      • tomcam 4 months ago
                                                                        Good work and fantastic commenting!
                                                                    • Justta 4 months ago
                                                                      Use uBlock to remove that element. Dont know if it will save data.
                                                                    • slowmovintarget 4 months ago
                                                                      Chrome is not for you. Chrome is for monetizing your attention.
                                                                      • JTyQZSnP3cQGa8B 4 months ago
                                                                        Maybe they don’t want you to do that? YouTube has "autoplay next video" by default and you can’t disable that either. This is the kind of controlling behavior that I expect from Google.
                                                                        • wqaatwt 4 months ago
                                                                          > you can’t disable that either

                                                                          You can though?