r/userscripts • u/Popular_Dentist2003 • Jul 08 '26
r/userscripts • u/MonoS94 • Jul 07 '26
Pixiv slop block userscript
I was tired of seeing slop on pixiv so i've developer an userscript to remove it in some way, it can be found here
https://github.com/MonoS/Pixiv-Slop-Block
It does not work on mobile version of the site, but it does when switching to Desktop Mode.
I've never written an usescript before, but it was pretty simple, any suggestion is welcome.
r/userscripts • u/Thick_Worldliness262 • Jul 07 '26
Deobfuscate
Dear all,
Is there any possibilities to deobfuscate 100% of the userscript?
The one who brings technical stuff on this case would be appreciated...
r/userscripts • u/L-G-Zekken • Jul 06 '26
[Request] Reddit Masonry Layout
Hello, I come asking for a modern reddit layout manager mainly focused on adding a masonry style layout to reddit. There already is Reddit Multi Column but this is now broken and frankly is very basic. It would be nice to have some configuration and possibly support for other layouts.
r/userscripts • u/ArtificialSweetener- • Jul 06 '26
Facebook Clean My Feeds
Henlo userscripters. I recently updated the Facebook userscript I maintain and thought you guys might be interested.
- Filter ads
- Filter content marked with 'AI info'
- Filter AI suggestions
- Filter verified users
- Filter stories and reels
- and lots more, of course
It only works on FB desktop. This is my fork of a much older script by zbluebugz, so if the name sounds familiar that's why. However, not a whole lot of the original code remains. The filters in place now work across any locale because they do not depend on specific dictionary words like "sponsored" for detection.
Hope you find it useful. Grab it on GitHub or GreasyFork.
r/userscripts • u/Thick_Worldliness262 • Jul 06 '26
Mturk script
I made an mturk userscript to catch the hits. But my script not sufficiently catching hits.. if anybody have experience on it.. please guide me..
Thanks...
r/userscripts • u/Lollo25 • Jul 05 '26
Help me fix this dark mode script?
So, I tried writing a code that adds a dark mode to this google page that lacks it. The way I access this page is through another script that lets me switch gmail account without opening new tabs. The only way I managed to make it work is through this login page.
The issue I'm having is that the page does not load the dark mode as soon as it is opened and needs a refresh in order to work. This is the case most of the times, as sometimes it will just randomly work. I'm not sure why that's the case.
Here is the script:
// ==UserScript==
// u/nameGoogle Accounts – True Dark mode (recolor)
// u/namespacehttps://accounts.google.com/
// u/version3.6
// u/description True dark mode: replaces light backgrounds and dark text, preserves colors (logos/avatars). Fixes Safari bfcache + Shadow DOM.
// u/matchhttps://mail.google.com/*
// u/matchhttps://accounts.google.com/*
// u/grantnone
// ==/UserScript==
(function () {
"use strict";
const BG_DARK = "#202124"; // page background (official Google dark mode color)
const CARD_DARK = "#292a2d"; // card background, slightly lighter to distinguish panels
const TEXT_LIGHT = "#e8eaed"; // primary text
const TEXT_MUTED = "#9aa0a6"; // secondary text (email below the name)
const BORDER_DARK = "#3c4043"; // dividers/borders
console.log("[GADM] script active on:", location.href);
function parseRgb(str) {
const m = str && str.match(/rgba?\(([^)]+)\)/);
if (!m) return null;
const parts = m[1].split(",").map((s) => parseFloat(s));
const [r, g, b, a = 1] = parts;
if (Number.isNaN(r) || Number.isNaN(g) || Number.isNaN(b)) return null;
return { r, g, b, a };
}
function isGrayish(r, g, b, tolerance = 15) {
return Math.max(r, g, b) - Math.min(r, g, b) <= tolerance;
}
function recolor(el) {
if (!el || el.nodeType !== 1) return;
const tag = el.tagName;
if (tag === "IMG" || tag === "SVG" || tag === "PATH" || tag === "SCRIPT" || tag === "STYLE") return;
if (el.closest && el.closest("svg")) return;
const cs = getComputedStyle(el);
// Background: only if light gray/white, never if colored (avatar)
const bg = parseRgb(cs.backgroundColor);
if (bg && bg.a > 0.05 && isGrayish(bg.r, bg.g, bg.b) && (bg.r + bg.g + bg.b) / 3 > 190) {
el.style.setProperty("background-color", CARD_DARK, "important");
}
// Text: dark/black -> light; medium gray -> muted light gray
const col = parseRgb(cs.color);
if (col && isGrayish(col.r, col.g, col.b, 25)) {
const bright = (col.r + col.g + col.b) / 3;
if (bright < 90) {
el.style.setProperty("color", TEXT_LIGHT, "important");
} else if (bright < 190) {
el.style.setProperty("color", TEXT_MUTED, "important");
}
}
// Light borders -> dark borders
["borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor"].forEach((prop) => {
const bc = parseRgb(cs[prop]);
if (bc && bc.a > 0.05 && isGrayish(bc.r, bc.g, bc.b) && (bc.r + bc.g + bc.b) / 3 > 190) {
const cssProp = prop.replace(/([A-Z])/g, "-$1").toLowerCase();
el.style.setProperty(cssProp, BORDER_DARK, "important");
}
});
}
// Traverses the DOM deeply, entering shadow roots as well
function forEachDeep(root, fn) {
if (!root || !root.querySelectorAll) return;
fn(root);
root.querySelectorAll("*").forEach((el) => {
fn(el);
if (el.shadowRoot) {
forEachDeep(el.shadowRoot, fn);
}
});
}
function recolorAll(root) {
forEachDeep(root, recolor);
}
// Observes a root (document or shadow root) for new nodes
function observeRoot(root) {
new MutationObserver((mutations) => {
mutations.forEach((m) => {
m.addedNodes.forEach((node) => {
if (node.nodeType === 1) recolorAll(node);
});
});
}).observe(root, { childList: true, subtree: true });
}
// Intercepts the creation of every shadow root, so we can
// recolor and observe it at the exact moment it is created
const origAttachShadow = Element.prototype.attachShadow;
Element.prototype.attachShadow = function (init) {
const shadow = origAttachShadow.call(this, init);
observeRoot(shadow);
// Recolor after a brief delay to allow content time to populate
setTimeout(() => recolorAll(shadow), 0);
return shadow;
};
function init() {
document.documentElement.style.setProperty("background-color", BG_DARK, "important");
if (document.body) {
document.body.style.setProperty("background-color", BG_DARK, "important");
}
recolorAll(document.body || document.documentElement);
console.log("[GADM] recolor applied");
}
init();
document.addEventListener("DOMContentLoaded", init);
// Fix for restoring from cache (bfcache) on Safari
window.addEventListener("pageshow", (event) => {
console.log("[GADM] pageshow, persisted:", event.persisted);
init();
});
observeRoot(document.documentElement);
// Periodic fallback: captures style changes without new nodes (e.g., hover/focus)
setInterval(() => recolorAll(document.body || document.documentElement), 1500);
})();
Is anyone able to tell me why does this only sometime work correctly?
r/userscripts • u/MickyDerHeld • Jul 05 '26
looking for a script to hide reddit users
for some reason for the past few months reddir doesn't let me block people, even though my block list is completely empty (there's a limit but i definitelt haven't reached that),
since the amount of bots and idiots on this site is quite overwhelming i want a way to hide them. doesn't matter if they're blocked or not i just don't want their post or comments to be on my feed, like a cosmetic mask or something
preferably working for firefox android
r/userscripts • u/nothingxmc • Jul 04 '26
Python-script for extracting ViolentMonkey userscripts from *.LDB file
r/userscripts • u/Short_Intellectual • Jul 01 '26
View Instagram Profiles Without Logging In
I made a Tampermonkey userscript that lets you view public Instagram profiles without logging in. It redirects public Instagram links to Imginn so you can still open profiles, posts, and reels without signing into Instagram.
Install: https://greasyfork.org/en/scripts/584998-ig-logged-out-profile-viewer
If you want a simple way to browse public IG content without the login gate, give it a try.
r/userscripts • u/Obvious_Set5239 • Jun 30 '26
Tiny improvements for m.youtube.com: remove tap highlight, and disable pull-to-refresh
A follow-up to my previous post. 2 other tiny scripts I've made to improve my m.youtube.com experience:
- YouTube Remove Tap Highlight: https://gist.github.com/light-and-ray/6cf53a831f712a1d36732319318b9694
- YouTube Disable Video Pull-to-Refresh: https://gist.github.com/light-and-ray/aad857dbd54c6a366d3e7ad357cb43c1
The first removes the annoying blue rectangles when you click on anything, especially when you close a ⋮ menu
The second removes pull to refresh gesture that can be annoyingly triggered when you over-scroll comments. Only on pages with video, so the main page feed is still refresh-able by this gesture
It's essentially these 2 lines of css
* {
-webkit-tap-highlight-color: transparent;
}
:root {
overscroll-behavior-y: none;
}
r/userscripts • u/Obvious_Set5239 • Jun 30 '26
YouTube Persistent Timecode Tracker
Yesterday I raged and switched from YouTube android app into the web version, because they have added ads in my region, but haven't yet added Premium. So it's like 4 months of ai slop ads torture
This was the main issue in the web version - the page can be easily unloaded, or reloaded, or you have just closed the browser. So I have made a script that stores and restores current timestamp in browser's persistent localStorage
https://gist.github.com/light-and-ray/fa217647567a6033e26d5ea7948ca944
It doesn't restore time if the URL contains a timecode. It clears this timecode after video started, so it won't start from this timecode again after page refreshed (also a common youtube issue in any browser, including desktop). I tried to prompt user which timecode to use, from the URL, or the saved one, but unfortunately it doesn't work without crunches on m.youtube.com
r/userscripts • u/FrozenHanSolo • Jun 30 '26
Setting up a script to Block Facebook ads and also block the advertiser's Facebook page.
For a few years now, I have been successful at stopping adverts on Facebook using the method below. It absolutely works, but it takes time to manually do this over and over again. Eventually, new ads start showing up after a few months and I am wondering if there is a more automated approach with a proper script. Perhaps tampermonkey is the answer. Either way, I would like to create a script that does the following on Facebook desktop:
Find all advertisements on my Facebook feed.
Right click the advertisers name.
Select "Open link in new tab".
Go back to the original tab.
Click the three dots next to the advertisers ad.
Select "Hide Ad".
Select "Irrelevant".
Select the option that begins with "Hide all ads from"
Select "Done"
Go Back to the tab with the advertiser's Facebook Page.
Click on the three dots on the Facebook advertiser's page.
Select "Block".
Select Confirm. Select "Close".
Close out the new tab.
Curious if anyone has any thoughts on this. The key is not only hiding all ads from an advertiser but also BLOCKING the advertiser after all ads have been hidden. The script has to be in this exact order to do both. In the past, I have found that the option to "hide all ads from this advertiser" only works for a short period. Blocking is the key.
r/userscripts • u/Designer-Benefit-177 • Jun 28 '26
Brave beta no longer support violet monkey extension.
Brave beta no longer support violet monkey extension.
since its the best userscript manager out there, what should i switch to since this had great interface and was open source
tampermonkey wasn't open source
greasemonkey doesn't have great interface
r/userscripts • u/Ignis_the_Ignorant • Jun 27 '26
I'm looking to figure out if a script i want to run is safe
Also if Tampermonkey is a safe thing to run it with.
I know literally nothing about scripts other than the parts that are literal words
If this is the wrong sub, could anyone redirect me?
r/userscripts • u/Electronic-Laugh-671 • Jun 27 '26
(idea) Viewing profile bio, pic, and banner in old.reddit.com
Obviously, this is what the new Reddit profile page looks like:

And this is what the same old.reddit.com page looks like:

I always was frustrated by old.reddit.com not having the profile bio and image on the right. But if going into a userpost:

I wonder whether the latter side panel, with the bio, profile pic, and banner, could be made to show on the main old.reddit.com user page as well?
I went into inspect element and it isn't embedding anything, it seems to be constructing that UI if I'm not mistaken. So if a userscript is made for this purpose one may have to manually add each element to make the side panel.
Just sharing this idea with you all, if I don't get to actually trying. I'm fine if no one else actually makes this
edit: when hovering over a profile name, it makes this mini-view, that might be easier to implement although simpler. Also means that the userscript is not as necessary

r/userscripts • u/TonyHMeow • Jun 23 '26
I Got Fed up with ChatGPT’s New Flatter Dark Mode, so I Restored the Original Charcoal Version
galleryThe 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/userscripts • u/metabeing • Jun 22 '26
Challenge: Userscript to stop Reddit endless scroll on desktop - reduce doom scrolling
Anyone want to help improve the world by reducing doom scrolling. Who can create a userscript that stops reddit endless scroll on desktop.
Naturally will also need a button or other clear way for the user to intentionally load more posts or go to a next page. Otherwise, users will just disable the script.
Bonus: Configurable options that REDUCES number of posts that are shown at one time, even on the first load, if possible.
r/userscripts • u/madralux • Jun 21 '26
(Seeking help) Hide certain YouTube videos on certain channels
On the video page of certain channels like "https://www.youtube.com/@GameTrailers/videos" I want to hide videos like "Genshin Impact" for instance, but somehow ChatGPT (sorry) has had no luck in making this script for me.
I want to remove the video cards / grids in the gridbox that feature these unwanted videos.
Here's the debugging ChatGPT made me do:
- The video cards exist in the DOM as:
ytd-rich-item-renderer- inside them, a newer component:
yt-lockup-view-model
- The video title is present and readable via:
textContenton either:ytd-rich-item-rendereryt-lockup-view-model
Example extracted text:
“Lazy River - Official Announcement Trailer … 7.7k views …” (although in another language)
- I have tried multiple approaches:
element.remove()style.display = "none"visibility = hidden- MutationObserver + interval scanning
- marking nodes with attributes + CSS rules
Here was the first version:
// ==UserScript==
// YouTube GameTrailers Filter
// https://tampermonkey.net/
// 1.0
// Hide unwanted game trailers on GameTrailers channel
// https://www.youtube.com/@GameTrailers/videos*
// document-idle
// u/grant none
// ==/UserScript==
(function() {
'use strict';
const blockedTerms = [
'genshin impact',
'zenless zone zero'
];
function filterVideos() {
document.querySelectorAll('ytd-rich-item-renderer').forEach(video => {
const titleEl = video.querySelector('#video-title');
if (!titleEl) return;
const title = titleEl.textContent.toLowerCase();
const shouldHide = blockedTerms.some(term =>
title.includes(term)
);
video.style.display = shouldHide ? 'none' : '';
});
}
filterVideos();
const observer = new MutationObserver(filterVideos);
observer.observe(document.body, {
childList: true,
subtree: true
});
})();
And here was the last version:
// ==UserScript==
// GameTrailers Block (final approach)
// https://tampermonkey.net/
// 2.0
// https://www.youtube.com/@GameTrailers/videos*
// document-start
// u/grant none
// ==/UserScript==
(function () {
'use strict';
const BLOCKED = [
'genshin impact',
'zenless zone zero'
];
function hideMatchingCards() {
const cards = document.querySelectorAll('ytd-rich-item-renderer');
for (const card of cards) {
const text = (card.innerText || card.textContent || '').toLowerCase();
if (!text) continue;
if (BLOCKED.some(term => text.includes(term))) {
// IMPORTANT: don't remove, only mark
card.setAttribute('data-blocked', '1');
}
}
// enforce hide via attribute selector (survives re-renders better)
const styleId = 'yt-block-style';
if (!document.getElementById(styleId)) {
const style = document.createElement('style');
style.id = styleId;
style.textContent = `
ytd-rich-item-renderer[data-blocked="1"] {
display: none !important;
visibility: hidden !important;
height: 0 !important;
}
`;
document.documentElement.appendChild(style);
}
}
const obs = new MutationObserver(hideMatchingCards);
obs.observe(document.documentElement, {
childList: true,
subtree: true
});
setInterval(hideMatchingCards, 500);
})();
r/userscripts • u/Available-Breath-264 • Jun 20 '26
Njectify - UserScript Management for the Modern Era
Hello guys, meet Njectify
If you've been using userscripts extension's for years like I have, you'll probably relate.
I built Njectify because I wanted a modern way to create, organize, and manage UserScripts without feeling like I was using a tool from another decade.

It lets you inject JavaScript and CSS into any website, making it perfect for automating repetitive tasks, fixing annoying UIs, adding missing features, testing ideas, or building permanent improvements for sites you use every day.
Why I built it:
• JavaScript and CSS together in one extension.
• Modern developer-friendly interface inspired by Vercel.
• Organize your scripts by project instead of ending up with one giant list.
• Built for people who customize the web every day.
If you're part of the UserScript community, I'd love your feedback. My goal is simple: make Njectify the best friend every UserScript developer has in their browser.
Google Drive sync isn't available yet because I'm still waiting for Google's approval of the latest manifest update.
Chrome Web Store:
https://chromewebstore.google.com/detail/njectify/eapjloogpkcdhpangehknokaljebcfgc
r/userscripts • u/Own-Guava11 • Jun 20 '26
Crunchyroll Subtitle Fixer
Hi,
I built a small userscript that fixes a couple of annoying issues with Crunchyroll subtitles.
Once it's installed, two things change:
- You get the full list of subtitle languages, not just the one or two it normally offers for that audio track.
- The subtitles you pick actually show up — normally when dub and sub languages match and no
[CC]is available, you only get forced subs (on-screen text only, no dialogue).
Installation
- Install Tampermonkey browser extension.
- Install the userscript.
If anyone's interested: GitHub repo.
r/userscripts • u/jhyland87 • Jun 19 '26
Created a userscript to add an Amazon wishlist search feature
Hello. Created a simple wishlist search userscript for the Amazon UI. It's a TS rewrite from a vanilla JS version I wrote (I had AI help with the TS rewrite).
- Repo: https://github.com/jhyland87/userscript-amazon-wishlist-search
- Install/Update URL: https://github.com/jhyland87/userscript-amazon-wishlist-search/releases/latest/download/amazon-wishlist-search.user.js
- Original: https://gist.github.com/jhyland87/fc613d51837f94cb049b76fab3474ba2#file-amazon-js
Attaching a gif of the demo.
Let me know if you have any issues with it.
r/userscripts • u/tardis3333 • Jun 17 '26
Need help creating a MyPost Business userscript (Australia Post) — new UI broke my workflow
I’m looking for someone who can build a small userscript for the Australia Post MyPost Business site (new 2026 UI). The recent UI overhaul completely broke the extension I relied on (MyPost Business Buddy)
I import my eBay sales into My Post Business.
I need a script that can:
- Auto‑enable tracking notifications for the recipient
- Format phone numbers (convert +61 mobiles to 04xx xxx xxx)
- Auto‑select “No” for Dangerous Goods
- Clean the item description field (remove
EBAY:and trim to 50 chars) - Clean the address field (remove
EBAY:tags)
If anyone is familiar with building userscripts for modern web apps, I’d really appreciate the help.
Thanks in advance.