How to hack Youtube to watch videos faster than 2x

If you ever wanted to watch videos faster than 1.5x or 2x (seems to work for advertisements too)

Here is how it works

  1. go to https://youtube.com

  2. open the developer console by pressing F12 or Ctrl + Shift + I or Cmd + Shift + I

  3. copy & paste the following code will change the video speed: document.querySelector("video").playbackRate = x where x is the speed you want

    for example:

    document.querySelector("video").playbackRate = 2.4
    

    in chrome, this also works: $('video').playbackRate = x

  4. close the console

Add Buttons to your YouTube Interface

Here is how to hack additional Buttons into your Youtube UI

  • on a Youtube page
  • Press F12
  • copy and paste into your console
function changeVideoSpeed(n) { document.querySelector("video").playbackRate = n; }

var style = document.createElement('style');
style.innerHTML = `
.ytp-button-abs {
position: relative;
top: -16px;
}
`;
document.head.appendChild(style);

let btn1x = document.createElement("button");
btn1x.innerHTML = "1x";
btn1x.classList.add("ytp-button");
btn1x.classList.add("ytp-button-abs");
btn1x.onclick = function(){changeVideoSpeed(1) };

let btn25x = document.createElement("button");
btn25x.innerHTML = "2.5x";
btn25x.classList.add("ytp-button");
btn25x.classList.add("ytp-button-abs");
btn25x.onclick = function(){changeVideoSpeed(2.5) };

let btn4x = document.createElement("button");
btn4x.innerHTML = "4x";
btn4x.classList.add("ytp-button");
btn4x.classList.add("ytp-button-abs");
btn4x.onclick = function(){ changeVideoSpeed(4) };

document.querySelector(".ytp-right-controls").prepend(btn4x);
document.querySelector(".ytp-right-controls").prepend(btn25x);
document.querySelector(".ytp-right-controls").prepend(btn1x);
  • close the console by pressing F12

the code is only changed temporarily. It’ll stay active as long you don’t change the webpage in your tab

How to add this permanently?

with a browser plugin called tampermonkey www.tampermonkey.net

or Violentmonkey, Firemonkey, Greasemonkey .. whichever is your favorite

Userscript sample
// ==UserScript==
// @name         Youtube Speedup
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://www.youtube.com/watch?*
// @icon         https://www.google.com/s2/favicons?domain=youtube.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function changeVideoSpeed(n) { document.querySelector("video").playbackRate = n; }

    var style = document.createElement('style');
    style.innerHTML = `
.ytp-button-abs {
position: relative;
top: -16px;
}
`;
    document.head.appendChild(style);

    let btn1x = document.createElement("button");
    btn1x.innerHTML = "1x";
    btn1x.classList.add("ytp-button");
    btn1x.classList.add("ytp-button-abs");
    btn1x.onclick = function(){changeVideoSpeed(1) };

    let btn25x = document.createElement("button");
    btn25x.innerHTML = "2.5x";
    btn25x.classList.add("ytp-button");
    btn25x.classList.add("ytp-button-abs");
    btn25x.onclick = function(){changeVideoSpeed(2.5) };

    let btn4x = document.createElement("button");
    btn4x.innerHTML = "4x";
    btn4x.classList.add("ytp-button");
    btn4x.classList.add("ytp-button-abs");
    btn4x.onclick = function(){ changeVideoSpeed(4) };

    document.querySelector(".ytp-right-controls").prepend(btn4x);
    document.querySelector(".ytp-right-controls").prepend(btn25x);
    document.querySelector(".ytp-right-controls").prepend(btn1x);
})();

Notes

  • Why add the css?
    • Well, the added buttons are somehow positioned at the bottom. This was the fastest solution which works and looks fine.
  • Whats the max speed?
    • When I tried the min was 0.1 and max was 16, but the audio is hurting my ears. so better make sure to mute it.
  • How to get used to faster speeds?
    • Play it faster than its easy to understand (4x)
    • Than play at a lower speed (2.5x).
    • This way your brain does adopt. You’ll notice!
    • You can use the keyboard 0 to get back to start of the video.
  • Why not faster than 4x?
    • Try it yourself.. depending on the video/speaker you won’t understand the audio anymore. if you mute it is works fine.
    • maybe to skip the ads
Code with additional 10x button, +muted

I had to add a setMuted() function

function changeVideoSpeed(n) { document.querySelector("video").playbackRate = n; }
function setMuted(tf) { document.querySelector("video").muted = tf; }

var style = document.createElement('style');
style.innerHTML = `
.ytp-button-abs {
position: relative;
top: -16px;
}
`;
document.head.appendChild(style);

let btn1x = document.createElement("button");
btn1x.innerHTML = "1x";
btn1x.classList.add("ytp-button");
btn1x.classList.add("ytp-button-abs");
btn1x.onclick = function(){ changeVideoSpeed(1); setMuted(false); };

let btn25x = document.createElement("button");
btn25x.innerHTML = "2.5x";
btn25x.classList.add("ytp-button");
btn25x.classList.add("ytp-button-abs");
btn25x.onclick = function(){ changeVideoSpeed(2.5); setMuted(false); };

let btn4x = document.createElement("button");
btn4x.innerHTML = "4x";
btn4x.classList.add("ytp-button");
btn4x.classList.add("ytp-button-abs");
btn4x.onclick = function(){ changeVideoSpeed(4); setMuted(false); };

let btn10x = document.createElement("button");
btn10x.innerHTML = "10x";
btn10x.classList.add("ytp-button");
btn10x.classList.add("ytp-button-abs");
btn10x.onclick = function(){ changeVideoSpeed(10); setMuted(true); };

document.querySelector(".ytp-right-controls").prepend(btn10x);
document.querySelector(".ytp-right-controls").prepend(btn4x);
document.querySelector(".ytp-right-controls").prepend(btn25x);
document.querySelector(".ytp-right-controls").prepend(btn1x);