You can take matters into your own hands and force better control.
YOUR web, YOUR way. YOUR YouTube, YOUR way.
My r3dfox profile is *VERY* limited, hardly ever used.
In fact, every time I did a test to try to repeat your issue, it was from a brand new download.
I don't have any r3dfox profiles that have a long history of use behind them.
This is not the case for Duke.
So, just a theory, YouTube is "nice and clean" for me because it hasn't built a "server-side profile" of my IP Address / Browser.
But again, just a theory. And again, not the case for Duke.
So I think it is *NOT* some sort of "server-side profile".
At least, not in this situation (I do think that YouTube builds "server-side profiles").
I say this because I can do the EXACT same searches at home versus at work and get DIFFERENT RESULTS.
Same goes for spanning a half dozen computers at home, EXACT search gets DIFFERENT results.
But as far as TAKING MATTERS IN YOUR OWN HANDS, there are ways to FORCE *never* getting "shorts".
This is one (out of fifteen!) userscripts that I use on YouTube.
I did NOT use this in the r3dfox tests that are NOT giving me "shorts", this is from my "everyday profile" (Chromium-based, not Mozilla-based).
// ==UserScript==
// @name - YouTube 10 - Remove Shorts / Popular / Also Watched / New To You / Explore
// @version 2025.4.4.0.1
// @match https://*.youtube.com/*
// @match https://m.youtube.com/*
// @grant none
// @run-at document-start
// ==/UserScript==
(function () {
'use strict';
const hideHistoryShorts = false;
const debug = false;
const commonSelectors = [
'a[href*="/shorts/"]',
'[is-shorts]',
'yt-chip-cloud-chip-renderer:has(a[href*="/shorts/"])',
'ytd-reel-shelf-renderer',
'ytd-thumbnail-overlay-time-status-renderer[overlay-style="SHORTS"]',
'#guide [title="Shorts"]',
'.ytd-mini-guide-entry-renderer[title="Shorts"]',
'.ytd-mini-guide-entry-renderer[aria-label="Shorts"]',
'grid-shelf-view-model',
'ytd-shelf-renderer',
'ytd-movie-renderer',
'ytd-channel-renderer',
'ytd-horizontal-card-list-renderer',
'#spinner-container',
];
const mobileSelectors = [
'.pivot-shorts',
'ytm-reel-shelf-renderer',
'ytm-search ytm-video-with-context-renderer [data-style="SHORTS"]',
];
const feedSelectors = [
'ytd-browse[page-subtype="subscriptions"] ytd-grid-video-renderer [overlay-style="SHORTS"]',
'ytd-browse[page-subtype="subscriptions"] ytd-video-renderer [overlay-style="SHORTS"]',
'ytd-browse[page-subtype="subscriptions"] ytd-rich-item-renderer [overlay-style="SHORTS"]',
];
const channelSelectors = ['yt-tab-shape[tab-title="Shorts"]'];
const historySelectors = ['ytd-browse[page-subtype="history"] ytd-reel-shelf-renderer'];
function removeElementsBySelectors(selectors) {
selectors.forEach((selector) => {
try {
const elements = document.querySelectorAll(selector);
elements.forEach((element) => {
if (element.dataset.removedByScript) return;
let parent = element.closest(
'ytd-video-renderer, ytd-grid-video-renderer, ytd-compact-video-renderer, ytd-rich-item-renderer, ytm-video-with-context-renderer'
);
if (!parent) parent = element;
parent.remove();
parent.dataset.removedByScript = 'true';
if (debug) console.log(`Removed element: ${parent}`);
});
} catch (error) {
if (debug) console.warn(`Error processing selector: ${selector}`, error);
}
});
}
function removeElements() {
const currentUrl = window.location.href;
if (debug) console.log('Current URL:', currentUrl);
if (currentUrl.includes('m.youtube.com')) {
removeElementsBySelectors(mobileSelectors);
}
if (currentUrl.includes('/feed/subscriptions')) {
removeElementsBySelectors(feedSelectors);
}
//if (currentUrl.includes('/channel') || currentUrl.includes('/@')) {
// removeElementsBySelectors(channelSelectors);
//}
if (hideHistoryShorts && currentUrl.includes('/feed/history')) {
removeElementsBySelectors(historySelectors);
}
removeElementsBySelectors(commonSelectors);
}
function debounce(func, delay) {
let timeout;
return (...args) => {
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(this, args), delay);
};
}
const debouncedRemoveElements = debounce(removeElements, 300);
function init() {
if (debug) console.log('Remove YouTube Shorts script activated');
removeElements();
const isFirefox = navigator.userAgent.includes('Firefox');
if (isFirefox) {
window.addEventListener('popstate', removeElements);
} else {
document.addEventListener('yt-navigate-finish', removeElements);
}
const observer = new MutationObserver(debouncedRemoveElements);
observer.observe(document.body, { childList: true, subtree: true });
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
|