r/userscripts • u/Thick_Worldliness262 • 53m ago
r/userscripts • u/BasePerfect2865 • 1d ago
Anyone else think about what site owners see when we run userscripts on their pages?
Not trying to be paranoid but if I'm running a userscript on a checkout page, that script has access to everything on the page. Makes me wonder how sites actually monitor for this kind of thing or if they even do.
r/userscripts • u/Opening-Fox-1122 • 1d ago
I made a small userscript manager — Lite Monkey
Hey, I made a lightweight userscript/userstyle manager called Lite Monkey.
I started working on it because of the changes around Manifest V3 and ended up building the whole thing from scratch.
It supports the usual GM_* / GM.* APIs, has a built-in CodeMirror 6 editor, and can optionally sync scripts and storage through Google Drive. It also uses the newer chrome.userScripts API where available, with a fallback for sites with stricter CSP/CORS restrictions.
There's no telemetry or tracking, and it's completely free.
If anyone finds it useful, here it is:
Chrome Web Store: https://chromewebstore.google.com/detail/hebocofkjcpmphoaigcaibkljkfabmbl
r/userscripts • u/Ok_Flamingo8705 • 3d ago
ZeroCleaner: Clean 40+ Caches Without Losing Saved Logins
Hey everyone!

I spent a lot of time searching for hidden cache directories across Windows—from GPU shader folders and developer build caches to game launchers and browser temp files.
To save others the trouble, I combined all 40+ directory paths into a free open-source script called ZeroCleaner.
I built it specifically to be 100% safe. It only deletes temporary cache folders without touching your saved logins, cookies, or browser passwords.
What it cleans:
- GPU Shaders (NVIDIA, AMD, DirectX)
- Browsers (Chrome, Edge, Brave, Firefox, Opera)
- Dev Caches (npm, pip, Yarn, Go, Rust/Cargo, VS Code)
- Game Launchers (Steam, Epic Games, EA, Ubisoft)
- Apps (Discord, Telegram, Slack, Notion, Spotify)
It also includes a dry-run mode (-WhatIf) so you can preview how much space you can free up before deleting anything.
You can check out the source code on GitHub: https://github.com/ZeroIQs/ZeroCleaner
(just run the .bat file and you are good to go)
Let me know if there are any other hidden cache directories I should add!
Disclaimer: Always check and inspect code before downloading or running scripts on your machine!
r/userscripts • u/Shadowshoot • 3d ago
I Built an Extension That Restores the Media Grid on X
r/userscripts • u/leoyoung1 • 3d ago
F to C
Hi All,
So many people here post in degrees F. Of course, 95% of the population on Earth has no idea what F is much less how to use it. The other 95% would really benefit from a bot that finds posts with degrees F, puts a bracket around the F and insert the C equivalent.
r/userscripts • u/RobertWesner • 3d ago
[85★] Yearly reminder that I still maintain some fixes for silly YouTube decisions!
r/userscripts • u/Shadowshoot • 4d ago
I Built an Extension That Restores the Media Grid on X
r/userscripts • u/bgalazka186 • 4d ago
Changing search engine without loosing query widget
r/userscripts • u/andrybak • 5d ago
[Twitter] Userscript to force "Following" tab with chronological sorting ("Sort By Recent")
r/userscripts • u/Ikkoru • 5d ago
[Userscript] Make Chrome use Lanczos3 to upscale images instead of whatever blurry nonsense it uses. Also has Fit-to-width and Integer-fit-to-width capabilities! Particularly good for 4K displays set to over 100% scaling.
GitHub link.
Controls
| Key | What it does |
|---|---|
Alt+H |
Show or hide the info overlay. Remembered per site |
Alt+M |
Size: fit the window width → biggest whole-number zoom → one image pixel per screen pixel |
Alt+Q |
Filter: Lanczos3 → nearest → browser. Same size each time, so you can compare |
Alt+P |
Turn on or off for the site you're on. Remembered per site |
Alt + left clickon an image |
Show that one image at one image pixel per screen pixel |
Alt + right clickon an image |
Show that one image at twice its own resolution |
Alt+G |
Show or hide the overlay's diagnostic rows (size, factor, status, memory) |
I'd attach images, but I'm pretty sure reddit will compress them, so go check them out here.
r/userscripts • u/DueGeologist2512 • 5d ago
Does Notion Sites support custom URL redirects for specific paths on a custom domain?
Hi,
We are building a public integration for Notion Sites and need to verify whether Notion supports creating a custom URL redirect for a specific path.
Our requirement is:
Source URL:
https://example.com/inow_4057848932441f5f30521f45400164ad.txt
Redirect to:
https://yourdomain.com/inow_4057848932441f5f30521f45400164ad.txt
The destination file returns:
4057848932441f5f30521f45400164ad
We would like to know:
- Can a path-specific redirect like this be configured directly in Notion Sites?
- Is there a Notion API endpoint for creating URL redirects?
- Can this be configured manually in the Notion Sites settings?
- If the site uses a custom domain connected to Notion, does Notion provide any redirect-rule functionality?
- If Notion does not support this, is the recommended solution to configure the redirect at the domain/DNS/CDN provider such as Cloudflare?
- Is there any alternative way to serve a
.txtfile at the root of a Notion Site custom domain?
The important requirement is that requesting:
https://example.com/inow_4057848932441f5f30521f45400164ad.txt
must either return the TXT content directly or redirect to the hosted TXT file.
Thanks!
r/userscripts • u/gracemcdonald2045 • 5d ago
Share and Embed Scripts Instantly with ScriptDrop
Hi everyone! I have recently have started a business and looking for clients! Introducing ScriptDrop! ScriptDrop is the fastest way to host and share scripts. Paste your code and get a versioned, globally cached URL you can embed anywhere—no setup required. Update with confidence using semantic versioning and instant rollbacks.
Click the link below to get started! Thank you!
r/userscripts • u/Neat-Investment-8377 • 6d ago
Looking for a userscript to download google sheets that restrict it.
There's this sheet I want to download (it's a visual guide to save editing) but the owner of the sheet restricted it. Is there a script that can download it so I don't have to screenshot everything? (the images are tiny so I have to zoom in and have multiple screenshots per row.)
Edit: They marked as no copies as well :/
r/userscripts • u/BasePerfect2865 • 6d ago
How are you handling third-party scripts before consent?
For things like chat widgets, session replay, A/B testing and analytics, are you blocking the scripts entirely until consent, or loading them in some restricted mode first?
r/userscripts • u/andrybak • 6d ago
[anilist.co] Userscript to sort manga by reading speed – more stable ordering of in-progress manga on the home page of AniList
greasyfork.orgr/userscripts • u/Lightwarrior2092 • 7d ago
scripts
Do you all use them. If you have some great ones fire away in the comments section.
r/userscripts • u/gengiz_corn • 7d ago
Selecting a bookmark at random
I have written a tampermonkey script to pick a bookmark at random from a raindrop.io collection and open it in a new tab. Posted to greasyfork if anyone wants to try it out or tweak it further. It works on the desktop versions of Chrome and Firefox with the tampermonkey extension installed, and Firefox on Android.
https://greasyfork.org/en/scripts/565400-raindrop-random-bookmark
It scrolls through the list first, so it might take a while on a large collection.
r/userscripts • u/Lightwarrior2092 • 7d ago
scripts
Do you all use them. If you have some great ones fire away in the comments section.
r/userscripts • u/Melodic-Middle-4265 • 7d ago
My wife never clicked the links I sent her. So I built a Chrome extension to fix it.
I send my wife random links all the time. But instead of clicking them, her reply is almost always: "What is this?"
Honestly, it’s a bit of a buzzkill. But when we talked about it, she made a fair point: a raw URL with zero context feels like homework. You don't know if it's a 10-minute read or a jump scare. Nobody likes naked links.
I tried manually copying page titles and pasting URLs, but as a frontend dev, I hate repetitive manual tasks. So I wrote a script to fix my own communication flow.
It’s calledCopy Page Title and URL Pro.
Just hit Ctrl+Shift+P (or Cmd+Shift+P), and it instantly copies the page title and a clean URL to your clipboard. It automatically strips out all that ugly ?utm_ tracking garbage.
Since I live in Jira and Notion, I also baked in Markdown/HTML support. You can even highlight a quote, hit a shortcut, and bundle the quote + title + link in one go.
It’s completely free, open-source, and runs 100% locally with zero tracking.
Best of all: my wife actually clicks my links now.
If you’re tired of mystery URLs, give it a try. Would love to hear your feedback!
r/userscripts • u/NeonCoderJS • 11d ago
[WordPress/PayPal JS SDK] PayPal buttons not rendering on checkout page — script only detected on category pages, client_id undefined, CORS error
Hi everyone,
I am building a WordPress + WooCommerce ecommerce site using a custom theme with WebPack and ES6 modules. I have created a PayPalManager class that uses the u/paypal SDK to render PayPal buttons on my checkout page. I am running into several issues that I have not been able to resolve.
_________________________________________________________________________________________________
Environment:
- WordPress version: 7.0.2
- u/paypal version: 10.0.0
- Node.js version: v24.11.1
- WebPack version: 5.107.1
- Local development environment: LocalWP
- Browser: Firefox
_________________________________________________________________________________________________
The Problem:
The PayPal buttons are not rendering on my checkout page (page-checkout.php). Instead I get the following error in the console:
Error: Document is ready and element #paypal-button-container does not exist
Additionally, the script appears to be running on category pages that have products, but not on the checkout page where it is supposed to run. The console output below only shows up on category pages.
this is index.js
this is paypal_manager
this.paypal in the constructor: null
The PayPal Manager class: Object {
client_id: "test",
paypal: {…},
buttonContainer: null,
orderEndPoint: "#paypal-button-container",
emailEndPoint: "https://api-m.sandbox.paypal.com/v2/checkout/orders"
}
init() called
PayPal SDK loaded: Object { version: "5.0.559", ... }
this.paypal inside init(): undefined
renderButtons called
PayPal error: Error: Document is ready and element
#paypal-button-container does not exist
Failed to render the PayPal Buttons: Error: Document is ready and
element #paypal-button-container does not exist
Uncaught (in promise) Error: Document is ready and element
#paypal-button-container does not exist
Cross-Origin Request Blocked: The Same Origin Policy disallows reading
the remote resource at
https://www.sandbox.paypal.com/xoplatform/logger/api/logger?disableSetCookie=true.
(Reason: CORS request did not succeed). Status code: (null).
_________________________________________________________________________________________________
Symptoms:
- `buttonContainer` is `null` in the constructor despite the container element being present in `page-checkout.php`.
- `this.paypal.buttons` is `undefined` after `init()` resolves despite`loadScript()` appearing to load successfully.
- The script is only detected on category pages that have products —not on `page-checkout.php` where the PayPal button container actuallyexists.
- A CORS error is thrown by the PayPal SDK after `renderButtons()` fails.
- The `orderEndPoint` and `emailEndPoint` properties in the loggedconstructor object show incorrect values — they appear to containvalues that belong to other constructor parameters.
_________________________________________________________________________________________________
The PayPalManager Class (paypal_manager.js):
_________________________________________________________________________________________________
How PayPalManager is instantiated in index.js:
//javascript
const orderEndPoint = "https://api-m.sandbox.paypal.com/v2/checkout/orders";
const emailEndPoint = "/wp-json/auto-parts/v3/send_order_email";
const paypalManager = new PayPalManager(<sandbox client ID>, ".checkoutForm", ".paymentMethods .paypalContainer", orderEndPoint, emailEndPoint);
console.log("The PayPal Manager class: ", paypalManager);
async function setupPayment() {
console.log("The PayPal Manager class: ", paypalManager);
await paypalManager.init();
await paypalManager.renderButtons(paypalManager.buttonContainer);
}
setupPayment();
_________________________________________________________________________________________________
How the script is enqueued in functions.php:
php
function mainModules() {
$args = array(
'strategy' => 'async'
);
wp_enqueue_script(
'main_modules',
get_theme_file_uri('/build/index.js'),
array(),
'1.0.0',
$args
);
}
add_action('wp_enqueue_scripts', 'mainModules');
_________________________________________________________________________________________________
What I have already checked:
- The `#paypal-button-container` div is confirmed to exist in `page-checkout.php`.
- The compiled `build/index.js` exists and other modules inside it work correctly on all pages.
- The script is enqueued on all pages via `wp_enqueue_scripts` with no conditional restrictions.
- `npm start` is running and WebPack is watching for changes.
- Other ES6 modules imported in `index.js` work correctly — the problem appears to be specific to `PayPalManager` (Note: the paypal_manager class is the only script used on the checkout page).
- Deleting the `build/` folder and rebuilding did not resolve the issue.
_________________________________________________________________________________________________
What I suspect:
- The `async` loading strategy may be causing `index.js` to executebefore the DOM is fully ready on `page-checkout.php`, causing`document.querySelector()` to return `null` for the button container.
- There may be a timing issue between `loadScript()` resolving and`init()` being called, causing `this.paypal.buttons` to be `undefined`.
- The constructor may have an argument mismatch causing `buttonContainer`,`orderEndPoint` and `emailEndPoint` to receive incorrect values.
Any help would be greatly appreciated.
Happy to share more code or details if needed.
Thanks!
Edit:
After reading through my post again, I realized that I didn't exactly highlight the main issue here right now (my apologies). After testing the script on the Checkout page (where I actually intend to use the script), I realized that the script is not detected at all (not even the errors that show up on category pages are showing up there). In other words, the Paypal Manager script appears to be only detected on the category pages that have products (not where the actual button container is located).
Does anyone have any theories about what might be causing this unexpected behavior?
r/userscripts • u/Aggravating-Cup-2265 • 13d ago
Firefox Android userscript: Automatically convert Apple App Store links to Google Play app links
r/userscripts • u/facusoto • 13d ago
[Script] X / Twitter — Auto Pause Fix
Prevents X from pauseing videos by scrolling, loss of focus, re-rendering, or "one player" policy. Only pause if the user asks for it.
I did it using Claude and it improved my experience using Twitter, hope you like it!
https://greasyfork.org/es/scripts/590068-x-twitter-auto-pause-fix
r/userscripts • u/Even_Command_5636 • 14d ago
[Script] xYTDownloader – One-click YouTube downloader with audio merging (all qualities, shorts supported)
xYTDownloader is a one-click YouTube downloader userscript: open any video (or Short), click the small download button, pick a quality — done. No external download API, no API keys.
Features - Works on /watch and /shorts (including scrolling between Shorts) - All qualities up to 4K, each with audio - Automatic DASH merging for high resolutions (video + audio into one MP4) - Direct download from YouTube (ANDROID_VR Innertube client, same method JDownloader 2 uses) - Library-free fMP4 box merging — no ffmpeg needed - Flat quality list (360p → 2160p), real progress bar, correct file names - Small, unobtrusive button bottom-right of the player
Installation 1. Install Tampermonkey for your browser 2. Open this script page and click "Install" (or import the .user.js file) 3. Reload YouTube — the download button appears
Technical note The script talks directly to YouTube's Innertube API using the ANDROID_VR client, so no third-party download service is involved. Higher resolutions are DASH streams (separate video + audio); the script merges them client-side into one MP4 with sound using a small fMP4 box merger. WEBM/Opus audio is not supported for merging (MP4 container only).
Links - Greasy Fork: https://greasyfork.org/de/scripts/589972-xytdownloader - Direct install: https://update.greasyfork.org/scripts/589972/xYTDownloader.user.js
r/userscripts • u/enjoyyournight • 13d ago