The Firefox Add-on does not support automatic updates. It's bundled with the StopTheMadness app on your Mac rather than downloaded by Firefox. When the StopTheMadness Mac app is updated in the App Store, it may also contain an update for the Firefox Add-on. When you run the app, it will inform you when a Firefox Add-on update is available to be installed. At any time, you can install the latest Firefox Add-on version from the "Install" menu in the StopTheMadness app main menu. Mac App Store updates don't always modify the Firefox Add-on, so if the Mac app doesn't inform you that an update is available, then you don't need to re-install.
Firefox Developer Edition:
StopTheMadness is fully compatible with Firefox Developer Edition. However, installing StopTheMadness in Firefox does not automatically install it in Firefox Developer Edition. You need to separately install the add-on in Firefox Developer Edition if you want to use it there. You can install the add-on in either or both of Firefox and Firefox Developer Edition. The same install process works for each.
If you've already set up Firefox to sync with your Firefox account, then your StopTheMadness Website Options will also be synced. This sync process is controlled by Firefox. The only data from StopTheMadness that would be synced is what you see in the StopTheMadness Website Options.
You can selectively enable and disable StopTheMadness features. Your custom options can be configured to apply to every web page or just to web sites that you specify. To change the options, open the StopTheMadness popup in the toolbar of a Firefox window. You can also open the Add-ons window in Firefox, select "Extensions" to manage your extensions, and then click "Preferences" for StopTheMadness.
There are a number of protection features that you can enable and disable. By default, the "Recommended" features are enabled. These provide you with a high level of protection while also maximizing website compatibility. The features labeled "Use with caution" provide even higher levels of protection, but there may be more sites that don't work right when they're enabled, which is why they're disabled by default. The features labeled "Widespread breakage" are intended to be used sparingly, only on specific sites where you know you need them, because otherwise they can cause a large number of incompatibilities on other sites. Any and all of the features can be enabled or disabled as necessary or desired. Below is an explanation of each feature.
visibilitychangeevents, which are part of the Page Visibility API. Using this API, websites can learn when a tab is visible on your screen and when the tab is hidden. When Tab closing and visibility is enabled, websites can't observe when you show or hide a tab or your screen.
Navigator.sendBeacon) from firing.
utm_source(Urchin Tracking Module),
gclid(Google Click ID), and
fbclid(Facebook Click ID) from the end of the URL when you click, drag, or open a contextual menu on a link.
Use with caution:
window.open()API to open a new window or tab. This API is sometimes used for annoyances such as sending you to an advertiser's site.
target="_blank"to a link to make the link automatically open in a new tab when you click. If you prefer to open links in the current tab instead of a new tab, you can enable this feature, which removes
target="_blank"from links. When enabled, normal link clicks always open in the current tab. (You can still ⌘-click to open the link in a new tab.) When this feature is disabled, some links may automatically open in new tabs when clicked.
textareaelements) are also protected by the website options "Protect ⌘-key shortcuts", "Protect copy, cut, and paste", and "Protect text selection". By default, only single-line editors (HTML
inputelements) are protected, because multi-line editors don't usually prevent copy and paste, and a lot of websites have special multi-line "rich text" editors with highly customized editing that can break with the Protect textarea feature enabled. However, you may need to enable this feature on certain websites if they disable copy and paste.
When you change the website options in StopTheMadness, those changes apply immediately to the active Firefox tab, and will apply to all web pages loaded thereafter in any tab. If you already had a web page open in a background tab before you changed the website options, and you want the changes to apply immediately to that web page, you need to switch to the tab and reload the page.
How to Add Website Options:
The Default options for all websites apply to every web page in Firefox, unless you have custom options for a particular site. To create custom options for a website, enter the website in the New Customized Website field and press the Add button. There are two ways to specify websites: domain or URL. Examples of domains are "
apple.com" and "
google.com". If you specify a domain, then subdomains of that domain are automatically covered too. For example, "
google.com" also covers "
mail.google.com", etc. If you want a subdomain to have different options than its domain, create a separate item for the subdomain. The longest match always wins, so if you have items for both "
google.com" and "
mail.google.com", then your "
mail.google.com" options will apply when you load the page "
https://mail.google.com/". If you want options to apply only to subdomains but not to the domain, put a dot at the beginning: "
.google.com" applies to "
https://www.google.com/", etc., but not to "
You may want to apply custom options only to certain paths of a website, in which case you need to specify the website as a full URL. For example, if you enter "
https://www.google.com/maps", then the custom options will only apply to Google Maps and not to Google Search at "
https://www.google.com/". Subpaths are automatically covered too: "
https://www.google.com/maps" would also cover "
https://www.google.com/maps/search/apple+park". You can customize subpath options by creating a separate item for the subpath. As with domains, the longest match among URLs always wins. And a URL setting that includes a domain will override a domain setting for the same domain, since the URL is longer. So "
https://www.google.com/maps" takes precedence over "
<style> element and Custom
If you enter text into this area, StopTheMadness will create a custom HTML
<script> element is created after the
You can enable "Also use Default options for all websites" to make the selected website inherit any custom CSS or JS that you've defined in the Default options. This allows you to use your custom CSS or JS on every website, including websites with customized options.
You can replace one font with a different font on websites by creating a font replacement rule. The replacement can be either a local font from your Mac or a web font from a URL. The font URL can be absolute (
https://) or a path relative to the URL of the website.
When you create a font replacement rule, StopTheMadness automatically adds the appropriate @font-face CSS rules to the page. One limitation is that the font-family in the rule can't use use a generic name like
monospace. However, you can customize the default fonts in the General section of Firefox Preferences.
Use the Style popup if you need fine-grained control over font replacement for particular styles such as bold or italic.
You can enable "Also use Default options for all websites" to make the selected website inherit any font replacement rules that you've defined in the Default options. This allows you to use your font replacement rules on every website, including websites with customized options.
StopTheMadness can automatically redirect URLs so that when you open a link to one web site, your web browser loads a different site of your choosing. For example, you can redirect new Reddit to old Reddit if you prefer the old user interface. Or you can use privacy-preserving alternatives to popular web sites such as Nitter for Twitter and Invidious for YouTube.
String.replace() to redirect URLs. To create a redirect, you need a URL matching pattern and a replacement for that pattern. The matching pattern can be either a substring of the URL or a regex expression enclosed in "/" characters. The replacement is always a substring, though there are some special characters you can use in the replacement, as explained by the
String.replace() documentation. Examples:
|URL matching pattern||Replacement|
The redirect rules are matched in the order they appear in StopTheMadness, though the order usually shouldn't matter if the rules are for different domains. If needed, you can use the up arrow buttons to change the order. You can also use the checkboxes to temporarily disable a rule.
Temporarily disable the extension:
If you need to quickly disable the Firefox extension temporarily, just uncheck "Extension enabled" at the top of the popup. The toolbar icon will be badged with "OFF". The extension remains disabled until you check "Extension enabled" again.
Known Website Compatibility Issues:
In these cases you may want to create custom website options and disable the specific feature.
Mastodon: (1) Disable "Stop link trackers" to allow your logged in Mastodon instance to hijack links to other Mastodon instances; otherwise the links open in a new tab. (2) "Show video controls" requires "Include loops".
smugmug.com): Disable "Protect drag and drop" and "Stop link trackers" to fix reordering photos.
Show video controls:
Stop autoplaying videos: picture-in-picture and full-screen play button
airtable.com): Disable "Protect ⌘-key shortcuts" to fix ⌘C and ⌘V for cells.
Protect copy, cut, and paste: