Scripts for the Tampermonkey plugin that run small Javascript programs on any website.
Tampermonkey is a free browser extension that lets you run small JavaScript programs — called userscripts — on any website you visit. These scripts can modify, enhance, or automate webpages in ways the original site never intended, giving you full control over your browsing experience.
| Browser | Link |
|---|---|
| 🦊 Firefox | Install from Mozilla Add-ons |
| 🌐 Chrome | Install from Chrome Web Store |
// ==UserScript==
// @name meteoblue: remove ads, overlays, fixity, and blur (logo + icon safe)
// @namespace local
// @version 1.5.0
// @description Removes ads, anti-adblock overlays, fixity bar, blur effects, fixes layout padding, and removes .narrow where needed.
// @match https://www.meteoblue.com/*
// @run-at document-start
// @grant none
// ==/UserScript==
(function () {
"use strict";
/* --------------------------------------------------
* CSS overrides (run at document-start)
* -------------------------------------------------- */
const css = `
/* Anti-adblock overlays */
.unblock-div,
.unblock-body,
[class^="unblock-"],
[class*=" unblock-"] {
display: none !important;
visibility: hidden !important;
opacity: 0 !important;
pointer-events: none !important;
}
/* Ads and ad placeholders */
.ad1,
.ad2,
.ad1-disable,
.ad2-disable {
display: none !important;
visibility: hidden !important;
pointer-events: none !important;
}
/* Remove fixity bar */
#fixity {
display: none !important;
visibility: hidden !important;
}
/* Layout fix */
main.main {
padding: 0 0 3em 0 !important;
}
/* Restore scrolling */
html, body {
overflow: auto !important;
position: static !important;
height: auto !important;
}
/* Neutralize blur/backdrop effects EXCEPT menu-logo and icon */
html,
body,
body *:not(.menu-logo):not(.menu-logo *):not(.icon):not(.icon *) {
filter: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
`;
function injectStyle(text) {
const style = document.createElement("style");
style.textContent = text;
(document.documentElement || document.head).appendChild(style);
}
injectStyle(css);
/* --------------------------------------------------
* DOM cleanup logic
* -------------------------------------------------- */
function removeNodes(selectors) {
selectors.forEach((sel) => {
document.querySelectorAll(sel).forEach((el) => el.remove());
});
}
function removeNarrowWhereNeeded() {
// Remove `.narrow` ONLY on the requested elements
document.querySelectorAll("a.current-weather.narrow").forEach((el) => {
el.classList.remove("narrow");
});
document.querySelectorAll("div.additional-settings.narrow").forEach((el) => {
el.classList.remove("narrow");
});
}
function cleanupPage() {
// Remove unwanted elements
removeNodes([
".unblock-div",
".unblock-body",
"[class^='unblock-']",
"[class*=' unblock-']",
".ad1",
".ad2",
".ad1-disable",
".ad2-disable",
"#fixity",
]);
// Apply the new spec
removeNarrowWhereNeeded();
// Fix <html> and <body> modal/blur state
const classKill = [
/modal/i,
/overlay/i,
/backdrop/i,
/blur/i,
/unblock/i,
/scroll-lock/i,
/no-?scroll/i,
/ad/i,
];
[document.documentElement, document.body].forEach((el) => {
if (!el) return;
el.style.overflow = "auto";
el.style.position = "";
el.style.filter = "none";
el.style.backdropFilter = "none";
el.style.webkitBackdropFilter = "none";
[...el.classList].forEach((cls) => {
if (classKill.some((rx) => rx.test(cls))) {
el.classList.remove(cls);
}
});
});
// Remove inline blur styles, excluding protected elements
document.querySelectorAll("[style]").forEach((el) => {
if (el.closest(".menu-logo, .icon")) return;
const st = el.getAttribute("style") || "";
if (/blur\(/i.test(st) || /backdrop-filter/i.test(st)) {
el.style.filter = "none";
el.style.backdropFilter = "none";
el.style.webkitBackdropFilter = "none";
}
});
}
// Initial and delayed runs
cleanupPage();
document.addEventListener("DOMContentLoaded", cleanupPage, { once: true });
window.addEventListener("load", cleanupPage, { once: true });
// Persist against reinjection
const observer = new MutationObserver(cleanupPage);
observer.observe(document.documentElement, {
childList: true,
subtree: true,
});
})();
// ==UserScript==
// @name Hide Specific Divs (Instagram Only)
// @namespace http://tampermonkey.net/
// @version 1.2
// @description Hides selected divs on Instagram
// @match https://www.instagram.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function hideTargetDivs() {
// First selector (all listed classes)
const group1 = document.querySelectorAll('div.x1dr59a3.x13vifvy.x7vhb2i.x6bx242');
group1.forEach(el => {
el.style.display = 'none';
});
}
// Run once on load
hideTargetDivs();
// Observe DOM changes (for dynamically loaded content)
const observer = new MutationObserver(() => {
hideTargetDivs();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
})();
// ==UserScript==
// @name Block Social Media
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Blocks Instagram and Bluesky with a reminder message
// @author You
// @match *://*.instagram.com/*
// @match *://instagram.com/*
// @match *://*.bsky.app/*
// @match *://bsky.app/*
// @run-at document-start
// @grant none
// ==/UserScript==
(function () {
'use strict';
const suggestions = [
{ label: "a closer listen", url: "https://acloserlisten.com", prompt: "there's new music waiting to be discovered over at a closer listen." },
{ label: "pitchfork", url: "https://pitchfork.com", prompt: "pitchfork has reviews worth your time." },
{ label: "mediapart", url: "https://www.mediapart.fr", prompt: "mediapart is doing the journalism that matters." },
{ label: "blast", url: "https://www.blast-info.fr", prompt: "blast has something important to say." },
{ label: "hacker news", url: "https://news.ycombinator.com", prompt: "hacker news has a thread you'd probably find interesting." },
{ label: "alternatives économiques", url: "https://www.alternatives-economiques.fr", prompt: "alternatives économiques will actually make you think." },
{ label: "courrier international", url: "https://www.courrierinternational.com", prompt: "courrier international has a wider view of the world." },
{ label: "aoc", url: "https://aoc.media", prompt: "aoc has analysis worth sitting with." },
{ label: "lundi matin", url: "https://lundi.am", prompt: "lundimatin published something worth reading." },
{ label: "vu", url: "https://www.youtube.com/@VUFranceTV", prompt: "vu has a video that'll make you think more." },
{ label: "off investigation", url: "https://off-investigation.fr", prompt: "off investigation is working on stories that need to be told." },
{ label: "arte.tv", url: "https://www.arte.tv", prompt: "arte is streaming something genuinely good right now." },
{ label: "are.na", url: "https://www.are.na", prompt: "are.na has channels that'll spark something in you." },
{ label: "tumblr", url: "https://www.tumblr.com", prompt: "tumblr is still weird and wonderful, if you know where to look." },
{ label: "duolingo", url: "https://www.duolingo.com", prompt: "duolingo is right there and you could actually learn something." },
{ label: "entêtement", url: "https://entetement.com", prompt: "entêtement published something worth reading." },
];
const pick = suggestions[Math.floor(Math.random() * suggestions.length)];
document.documentElement.style.cssText = '';
document.documentElement.innerHTML = `
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blocked</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Inter&display=swap" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html, body {
width: 100%;
height: 100%;
}
body {
background-color: #000;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
}
p {
color: #fff;
font-size: 12px;
font-family: 'Inter', sans-serif;
}
.suggestion {
color: #666;
font-size: 12px;
font-family: 'Inter', sans-serif;
text-align: center;
}
a {
color: #fff;
text-decoration: underline;
text-underline-offset: 3px;
}
a:hover {
color: #aaa;
}
</style>
</head>
<body>
<p>you have better things to do.</p>
<p class="suggestion">maybe ${pick.prompt}<br><a href="${pick.url}">${pick.label}</a></p>
</body>
`;
})();Last updated: 18-05-2026 at 17:49