Skip to content

Instantly share code, notes, and snippets.

@RafalJDev
Last active October 22, 2025 12:16
Show Gist options
  • Select an option

  • Save RafalJDev/dcdc5d9f455d84addcdf0e116982aa58 to your computer and use it in GitHub Desktop.

Select an option

Save RafalJDev/dcdc5d9f455d84addcdf0e116982aa58 to your computer and use it in GitHub Desktop.
Count all videos time duration on youtube channel
//You need to run this in javascript console inside chrome (althought should work the same in other browsers)
//Assumptions:
//1. Will count only "expanded" videos on page, you may first need to run script to scroll to last video or do it manually
//2. Tested on chrome, ubuntu, 2019
//3. Time format: hh:mm:ss
var array = document.getElementsByClassName("style-scope ytd-thumbnail-overlay-time-status-renderer");
var arrLength = array.length;
var allHours = 0;
var allMinutes = 0;
var allSeconds = 0;
for (var i=0; i<arrLength; i++) {
var content = array[i].textContent;
// console.log("content: ", content);
var splitedTime = content.split(":");
if (splitedTime.length == 1) {
allSeconds += +splitedTime[0];
} else if (splitedTime.length == 2) {
allMinutes += +splitedTime[0];
allSeconds += +splitedTime[1];
} else if (splitedTime.length == 3) {
allHours += +splitedTime[0];
allMinutes += +splitedTime[1];
allSeconds += +splitedTime[2];
} else {
console.log("WTF error, current content:", content);
}
}
var seconds = allSeconds % 60;
var minutes = (allMinutes % 60 + allSeconds / 60) % 60;
var hours = allHours + allMinutes / 60 + allSeconds / 3600;
// console.log("allHours:", allHours);
// console.log("allMinutes:", allMinutes);
// console.log("allSeconds:", allSeconds);
console.log("Hours:", hours);
console.log("Minutes:", minutes);
console.log("Seconds:", seconds);
//comments left for future fast debugging in case of errors, I know, bad practice
//Example page: https://www.youtube.com/user/DNewsChannel/videos
@sudohaxe
Copy link

sudohaxe commented Apr 7, 2025

Forked this script and added some debugging output to include video title and duration in a table to the console so I could see which videos were being counted, and how the total time was accumulating. Really helpful script, thanks for sharing it! (code's a bit messy
and has inefficiencies, I'll see if I can get to fixing it) For now though, this'll do 😄

Screenshot 2025-04-07 at 18 34 08

Side note:
If you've got 2 days, 5 hours, 47 minutes, and 22 seconds free, you can watch all the long form videos from Vsauce as of today.

@plu5
Copy link

plu5 commented Oct 22, 2025

Bookmarklet (just removed the comments and changed the console logs to an alert):

javascript: var array = document.getElementsByClassName("style-scope ytd-thumbnail-overlay-time-status-renderer"); var arrLength = array.length; var allHours = 0; var allMinutes = 0; var allSeconds = 0; for (var i=0; i<arrLength; i++) { var content = array[i].textContent; var splitedTime = content.split(":"); if (splitedTime.length == 1) { allSeconds += +splitedTime[0]; } else if (splitedTime.length == 2) { allMinutes += +splitedTime[0]; allSeconds += +splitedTime[1];  } else if (splitedTime.length == 3) { allHours += +splitedTime[0]; allMinutes += +splitedTime[1]; allSeconds += +splitedTime[2]; } else { console.log("WTF error, current content:", content); } }  var seconds = allSeconds % 60; var minutes = (allMinutes % 60 + allSeconds / 60) % 60; var hours = allHours + allMinutes / 60 + allSeconds / 3600;  alert(hours + " hours, " + minutes + " minutes, " + seconds + " seconds");

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment