Mass remove notifications from all channels you are subscribed too.
- Open https://www.youtube.com/feed/channels
- Scroll down until all channels are loaded
- Paste the following in devtools console
/**
* =================================================================
* CHANNEL SCRIPT
* =================================================================
* This script WILL make changes to your notification settings.
* It will loop through each of your loaded subscriptions and set
* the notification level to "None".
*/
const PROCESS_DELAY_MS = 1500;
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function setAllNotificationsToNone() {
console.log("--- Starting LIVE YouTube Notification Script ---");
console.warn("This script will now make changes to your account settings.");
// 1. Get all channel elements from the page.
const channels = document.querySelectorAll('ytd-channel-renderer');
console.log(`Found ${channels.length} channels to process.`);
if (channels.length === 0) {
console.error("No channels found. Please make sure you have scrolled to the very bottom of your subscriptions list before running the script.");
return;
}
let changedCount = 0;
// 2. Loop through each channel element.
for (let i = 0; i < channels.length; i++) {
const channel = channels[i];
const channelName = channel.querySelector('#text.ytd-channel-name')?.textContent.trim() || `Channel #${i + 1}`;
console.log(`\nProcessing ${i + 1}/${channels.length}: ${channelName}`);
try {
// 3. Find the main notification button for the current channel.
const bellButton = channel.querySelector('ytd-subscription-notification-toggle-button-renderer-next button');
if (!bellButton) {
console.warn(" - Could not find the bell button. Skipping.");
continue;
}
// Check if notifications are already off by looking for the slashed-bell icon.
if (bellButton.querySelector('path[d^="m3.85"]')) {
console.log(" - Notifications are already set to 'None'. Skipping.");
continue;
}
// 4. Click the bell button to open the menu.
console.log(" - Clicking the notification bell...");
bellButton.click();
// Wait for the menu to appear.
await sleep(PROCESS_DELAY_MS / 2);
// 5. Find the "None" option in the menu that appears.
const menuItems = document.querySelectorAll('ytd-menu-popup-renderer ytd-menu-service-item-renderer');
let noneOption = null;
for (const item of menuItems) {
if (item.querySelector('yt-formatted-string')?.textContent.trim() === 'None') {
noneOption = item;
break;
}
}
// 6. If the "None" option was found, CLICK IT.
if (noneOption) {
console.log(" - SUCCESS: Found and clicking 'None' option.");
noneOption.click();
changedCount++;
} else {
console.error(" - FAILED to find the 'None' option. Closing menu to proceed.");
// Attempt to close the menu by clicking the bell again to avoid getting stuck.
bellButton.click();
}
// 7. Wait before moving to the next channel.
await sleep(PROCESS_DELAY_MS);
} catch (error) {
console.error(` - An error occurred while processing ${channelName}:`, error);
}
}
console.log(`\n--- SCRIPT FINISHED ---`);
console.log(`Successfully changed notifications to 'None' for ${changedCount} channel(s).`);
}
setAllNotificationsToNone();