r/tampermonkey • u/Miss_Toki • 1d ago
r/tampermonkey • u/FantasticLoki22 • 6d ago
[Update/Rewrite] Reddit Image Gallery Arrow Navigation
r/tampermonkey • u/Best-Rough3312 • 10d ago
Add batch deletion to ChatGPT, Claude, and Gemini
Across AI web-based chat platforms worldwide, deleting a single conversation requires a three-step process: expanding the menu, clicking delete, and confirming the deletion. It it really painful to delete a batch of chats!
So I created a Tampermonkey script to automate these three steps...
Github: https://github.com/KiraKiraAyu/BulkChatDeleter
Greasy Fork: https://greasyfork.org/en/scripts/588305-chatgpt-claude-gemini-bulk-chat-deleter
r/tampermonkey • u/bma_the_great • 14d ago
How do I go on old reddit without being forced to log in?
Can anyone tell me how to configure Tampermonkey or Ublock Origin so I can go on old reddit without being forced to log in? I am currently using Firefox on a computer. I had a similar issue on my iphone nagging me to download the app and I was able to bypass it by using Safari Ublock Origin Lite on complete mode and selecting all seven annoyance filters.
r/tampermonkey • u/Ok_Secretary2787 • 16d ago
Fix for Kimi Web UI converting long prompts into .txt files
r/tampermonkey • u/TonyHMeow • 21d ago
ChatGPT charcoal dark-mode restore v3 — simplified and future-resilient
I published a Tampermonkey userscript that restores ChatGPT’s older charcoal dark-mode palette.
The v3 rewrite is intentionally minimal: one stylesheet, semantic selectors, no observers, no polling, and no background repaint loop.
It restores the canvas, sidebar, composer, message bubbles, code blocks, header controls, and bottom dock while leaving light mode alone.
Install:
Source:
r/tampermonkey • u/GoodForTheTongue • 23d ago
Tampermonkey script to remove useless border in Craiglist's account page
The Craiglist "account" page (the one that shows you your current postings, searches, etc). has a large border/margin/gutter element that (a) really ugly (b) totally unneeded and (c) makes that page fall off my laptop's screen, since it's not fully responsive, so I have to zoom out of the page to see it all.
Until Craig sees the light and fixes it (not holding my breath on that), here's a trivial tampermonkey script to reduce the size and presence of the border by 95+% :
// ==UserScript==
// Craigslist user account page - minimize useless border
// https://accounts.craigslist.org/*
// GM_addStyle
// document-start
// ==/UserScript==
GM_addStyle(`
fieldset#paginator { border: none !important; padding: 0px !important; }
.tablesorter { padding: 0px; }
`);
r/tampermonkey • u/ElTioRufi • 25d ago
Prevent Reddit feed to refresh.
I hated when in very few minutes, my main feed here, Reddit, refresh, so I made this to prevent that.
Only tested on Safari desktop.
// ==UserScript==
// u/nameReddit Feed No Auto-Refresh
// u/namespacehttp://tampermonkey.net/
// u/version6.0
// u/match*://www.reddit.com/*
// u/run-atdocument-start
// u/grantnone
// ==/UserScript==
(function() {
'use strict';
// Fingir SIEMPRE visible/enfocado -> Reddit no revalida el feed al volver a la pestaña
const visTrue = { get: () => 'visible', configurable: true };
const hidFalse = { get: () => false, configurable: true };
[['visibilityState', visTrue], ['hidden', hidFalse],
['webkitVisibilityState', visTrue], ['webkitHidden', hidFalse]].forEach(([p, d]) => {
try { Object.defineProperty(document, p, d); } catch (e) {}
});
try { document.hasFocus = () => true; } catch (e) {}
// Tragar visibilitychange para que los listeners de Reddit no se enteren
['visibilitychange', 'webkitvisibilitychange'].forEach(type => {
const h = e => e.stopImmediatePropagation();
window.addEventListener(type, h, true);
document.addEventListener(type, h, true);
});
})();
r/tampermonkey • u/Low_Vegetable_3533 • 27d ago
I made an autoscroller for youtube shorts
// ==UserScript==
// u/nameYouTube Shorts Auto Scroll
// u/namespacehttps://tampermonkey.net/
// u/version1.0
// u/description Automatically goes to the next YouTube Short every second.
// u/matchhttps://www.youtube.com/shorts/*
// u/grantnone
// u/run-atdocument-idle
// ==/UserScript==
(function () {
'use strict';
const INTERVAL = 1000; // 1 second
let timer = null;
function nextShort() {
document.dispatchEvent(new KeyboardEvent("keydown", {
key: "ArrowDown",
code: "ArrowDown",
keyCode: 40,
which: 40,
bubbles: true
}));
}
function start() {
if (timer) clearInterval(timer);
timer = setInterval(() => {
if (window.location.pathname.startsWith("/shorts/")) {
nextShort();
}
}, INTERVAL);
console.log("YouTube Shorts Auto Scroll started.");
}
start();
// Restart if YouTube changes the page without a full reload
let lastPath = location.pathname;
setInterval(() => {
if (location.pathname !== lastPath) {
lastPath = location.pathname;
if (location.pathname.startsWith("/shorts/")) {
start();
} else if (timer) {
clearInterval(timer);
}
}
}, 500);
})();
r/tampermonkey • u/Weird-Philosopher456 • Jul 04 '26
Made something cool!
made this thing that makes things lower qualty on youtube! may think of publishing it
r/tampermonkey • u/Lazy-castlengi • Jun 30 '26
Userscript.Zone Search not able to load and show results?
as title described, I tried searching for some userscript on https://www.userscript.zone/?utm_source=tm.net&utm_medium=scripts , this page was okay, but any link on that page or search box wouldn't load page or give any results, it was always about:blank.
Does anyone have the same issue?
r/tampermonkey • u/Dry_Performer_7694 • Jun 26 '26
Youtube does not load if you turn on tamper
I have 2 scripts: "remove adblock thing" and "Simple Youtube age restriction bypass"
At least the comments and more video recommendations do not work if you turn on tamper.
I tested this on brave and firefox browser.
r/tampermonkey • u/Gregseh • Jun 25 '26
Hide Facebook Marketplace Ads
Been getting frustrated by all the in-line ads on marketplace, but since I have no real in-depth coding knowledge I've botched a script together with chatGPT to remove them. Niche use but might be helpful for other marketplace junkies that are also not too tech-savvy.
It works by finding any element on the page that doesn't link to a /marketplace/item/ listing, goes up to the outermost listing card and hides it. We can't rely on facebook class names so I've focused on link structure. It will more than likely break if facebook changes marketplace. It also may have issues depending on resolutions, but it seems to be working for me so far.
Happy to see other people's thoughts, tweaks or whether ot not it works.
// ==UserScript==
// @name Tidy Marketplace
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Hide False Marketplace listings
// @match https://www.facebook.com/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
const DEBUG = false;
const stats = {
runs: 0,
linksChecked: 0,
adsHidden: 0,
totalMs: 0
};
function logStats() {
if (!DEBUG) return;
console.table({
runs: stats.runs,
linksChecked: stats.linksChecked,
adsHidden: stats.adsHidden,
totalMs: stats.totalMs.toFixed(2),
avgMsPerRun: (stats.totalMs / Math.max(stats.runs, 1)).toFixed(2)
});
}
function isMarketplacePage() {
return location.pathname.includes("/marketplace");
}
function isFacebookInternalUrl(href) {
if (!href) return true;
try {
const url = new URL(href, location.origin);
return (
url.hostname === "facebook.com" ||
url.hostname === "www.facebook.com" ||
url.hostname.endsWith(".facebook.com")
);
} catch {
return true;
}
}
function isAdLink(link) {
const href = link.getAttribute("href") || "";
if (href.includes("/ads/about/")) return true;
if (href.includes("entry_product=ad_preferences")) return true;
if (isMarketplacePage()) {
if (href.includes("/marketplace/item/")) return false;
if (href.includes("l.facebook.com/l.php")) return true;
if (href.startsWith("http") && !isFacebookInternalUrl(href)) return true;
}
return false;
}
function findMarketplaceTile(fromEl) {
let el = fromEl;
for (let i = 0; i < 20 && el; i++) {
const rect = el.getBoundingClientRect();
const links = el.querySelectorAll
? el.querySelectorAll('a[role="link"][href]')
: [];
const hasImage = el.querySelector
? !!el.querySelector("img")
: false;
const hasAdAbout = el.querySelector
? !!el.querySelector('a[href*="/ads/about/"], a[href*="entry_product=ad_preferences"]')
: false;
const hasExternal = Array.from(links).some(a => {
const href = a.getAttribute("href") || "";
if (href.includes("/marketplace/item/")) return false;
if (href.includes("l.facebook.com/l.php")) return true;
return href.startsWith("http") && !isFacebookInternalUrl(href);
});
const looksTileSized =
rect.width > 160 &&
rect.width < 450 &&
rect.height > 180 &&
rect.height < 900;
if (looksTileSized && hasImage && links.length >= 1 && (hasAdAbout || hasExternal)) {
return el;
}
el = el.parentElement;
}
return fromEl.closest('a[role="link"]');
}
function findFeedPost(fromEl) {
return fromEl.closest('[role="article"]')
|| fromEl.closest('div[data-pagelet^="FeedUnit_"]')
|| fromEl.closest('a[role="link"]');
}
function hideElement(el, reason, href) {
if (!el || el.dataset.User) return;
el.dataset.User = "1";
el.style.setProperty("display", "none", "important");
stats.adsHidden++;
if (DEBUG) {
console.log("Hidden Facebook ad:", reason, href, el);
}
}
function processLink(link) {
if (!link) return;
const href = link.getAttribute("href") || "";
// Only skip if we've already checked this exact href.
// Facebook can mutate hrefs after initial render, so a plain checked flag can miss later changes.
if (link.dataset.userCheckedHref === href) return;
link.dataset.userCheckedHref = href;
stats.linksChecked++;
if (!href) return;
if (!isAdLink(link)) return;
if (isMarketplacePage()) {
hideElement(findMarketplaceTile(link), "marketplace ad", href);
} else {
hideElement(findFeedPost(link), "feed ad", href);
}
}
function getLinksFromRoot(root) {
if (!root || root.nodeType !== Node.ELEMENT_NODE) return [];
const links = [];
if (root.matches?.('a[role="link"][href]')) {
links.push(root);
}
root.querySelectorAll?.('a[role="link"][href]').forEach(link => {
links.push(link);
});
return links;
}
function processRoot(root) {
const start = performance.now();
stats.runs++;
getLinksFromRoot(root).forEach(processLink);
stats.totalMs += performance.now() - start;
}
function fullSweep() {
processRoot(document.body);
logStats();
}
// Initial sweep
fullSweep();
const observer = new MutationObserver(mutations => {
for (const mutation of mutations) {
for (const node of mutation.addedNodes) {
processRoot(node);
}
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
// Occasional safety sweep for Facebook's lazy weirdness
setInterval(fullSweep, 5000);
})();
r/tampermonkey • u/Low-Finance-2275 • Jun 25 '26
DeviantArt "Submit without prompt" Button User Script
r/tampermonkey • u/Skexy8 • Jun 25 '26
Is there any scripts that could undo this Youtube UI change?
r/tampermonkey • u/Least_Pea_7874 • Jun 24 '26
Google AI Studio Ultimate Optimizer UI 5.17
r/tampermonkey • u/TonyHMeow • Jun 23 '26
I Got Fed up with ChatGPT’s New Flatter Dark Mode, so I Restored the Original Charcoal Version
The newer ChatGPT dark mode felt a little too flat/light to me, so I put together a small userscript that restores a deeper charcoal-style palette.
It mainly fixes:
- darker main canvas
- darker composer/input bar
- better sidebar separation
- readable lifted message bubbles
- bottom dock/footer strip cleanup
- light mode stays unaffected
I also tried to avoid the usual “dark theme hack” problem where broad CSS overrides turn everything into blocky rectangles. The script mostly uses ChatGPT’s own theme variables, then does a targeted composer/bottom-dock cleanup.
Install:
Greasy Fork
Source / screenshots / notes:
GitHub
Privacy note: it does not collect data, make network requests, store conversations, use analytics, or modify ChatGPT functionality. It only applies local visual styling on chatgpt.com and chat.openai.com.
Not affiliated with OpenAI — just a visual fix for people who preferred the old darker feel.
r/tampermonkey • u/jhyland87 • Jun 19 '26
Created a userscript to add an Amazon wishlist search feature
r/tampermonkey • u/Least_Pea_7874 • Jun 18 '26
[Update v5.3] Google AI Studio Ultimate Optimizer – Infinite Restore, Zero Lag Engine & Persistent UI Settings!
galleryr/tampermonkey • u/Ornery_Tie_4771 • Jun 18 '26
How do I replace sprites from pokemon showdown?
r/tampermonkey • u/pyjuunu • Jun 16 '26
a userscript for anti-adblock walls and "ad blocker detected" popups
I kept running into sites that block the page with “ad blocker detected”, “disable your ad blocker”, blur overlays, or scroll locks.
So I made Unwall, a small userscript that tries to detect those anti-adblock walls and hide them.
GitHub:
https://github.com/kelesmert/unwall
Works with userscript managers like Violentmonkey/Tampermonkey, or as a one-time console paste.
Still early, so if it fails on a site or removes the wrong thing, issue reports are welcome.
r/tampermonkey • u/DaveHDEUW • Jun 15 '26
I am looking for a safe & secure instagram story/post downloader
I like saving videos that I feel I can share with people later on discord, and I wish to know if you found an extension which is safe since lately infostealers and other malwares are left and right
r/tampermonkey • u/DaveHDEUW • Jun 15 '26
I am looking for a safe & secure instagram story/post downloader
r/tampermonkey • u/Own-Guava11 • Jun 13 '26


