12bytes Mumble meet every Sat. night!
Coronavirus information & resources
Vaccines - What You Need To Know

The Firefox Privacy Guide for Dummies!

See the revision history at the end ... if you make it that far :)

Before embarking on this journey into the bowels of Firefox, you may want to first read, Tor verses a VPN – Which is right for you?. If you choose to use the Tor Browser, you need not bother with this guide.

Introduction

The following video will provide an overview of one aspect of what it is we're up against and why i wrote the Firefox configuration guides. I encourage everyone to view it, especially if you're one of the many people who aren't worried about surveillance because you 'have nothing to hide'.

Video: Prof Shoshana Zuboff on surveillance capitalism

You're aware that unethical companies such as Facebook, Instagram, Google, YouTube, advertisers, your ISP and governments are spying on your activities and buying and selling the data they harvest, even if you may not be aware of how they're doing it. You're concerned about this invasion of your privacy, but you're wondering 'yeah, but what can a tech-challenged dummy like me actually DO about it wise guy???'.

Welcome to the 'dummies' edition of the Firefox Configuration Guide for Privacy Freaks and Performance Buffs!!!

The goal here is to provide a simple guide, to the extent that's possible, which will yield a privacy enhanced configuration of the Firefox web browser whilst breaking as few websites as possible. That said, be prepared to put a little more effort into your surfing activities, at least until the dust settles. The pay-off will be a much faster, cleaner, less annoying web that is less able to track and profile you. Note that i said "less", not "not".

WARNING: This guide is not intended for use with the Tor browser which is an already hardened version of Firefox. Configuring the Tor browser as outlined here would likely result in DOOM!

Catching the Fox

You want the standard release version of Mozilla Firefox, even if you think you don't. No Pale Moon, no Waterfox, no whatever, so if you don't have it, get it. If you run a GNU/Linux-based operating system (we're already in love), look in your package manager. Since it's privacy we're interested in, we're way too smart to be screwing around with Google Chrome (un-Googled or otherwise), Microsoft Edge, etc., though if you have an inferior alternative browser you could retain it as a backup.

Profiling the Fox

Start Firefox and enter about:profiles in the address bar. You can call it the "location" bar or the "awesome" bar if you like but i call it the address bar. Press your 'Enter' key to load that address and you'll see where Firefox keeps your profiles. Profiles are where most of your settings, bookmarks and other junk gets stored.

You can have as many profiles as you want, but by default there will be just one named 'default'. We need another, so click the 'Create a New Profile' button and name the new one 'privacy'. You can change the name later, but leave it be for now else i'll deduct from your internet points. Once you're done, exit Firefox.

Firefox Profile Manager

Firefox will now annoy you (and let it keep annoying you for the duration of these next few months we'll be spending together) by asking which profile you want to load every damned time you start it and you should (almost) always choose your 'privacy' profile.

Pro Tip

There are many ' about: ' pages in Firefox, but not all are accessible from the various menus. To see some of those that aren't, enter about:about in the address bar, but be careful what you mess with in there!

Training the Fox

Restart Firefox and this time you should see the Choose User Profile window. Load your privacy profile and come back here. Firefox may load some default pages when it starts and that's something we'll fix later.

Firefox Profile Manager 2

Profile Tip

If you don't want Firefox whining about which profile to load every time it starts, you can select your preferred profile and check the 'Don't ask at startup' option, but don't do that yet! Another way is to create a shortcut to load any profile you want.

For more about profiles, see Use the Profile Manager to create and remove Firefox profiles and Multiple Firefox profiles.

For more about ticklish penguins, go here.

If you're running Windows you've just lost 100 internet points, plus you'll need to un-hide file extensions and i suggest you keep them un-hidden.

With Firefox up and running, load about:preferences in the address bar or click the Hamburg icon on the toolbar, then 'Settings'. Click the 'Search' menu item on the left and under where it says 'Search Bar', click 'Add search bar in toolbar'. Trust me. Reasons.

Next, go to the arkenfox/user.js GitHub repository. We need their prefsCleaner.bat (Windows) or prefsCleaner.sh (Linux) file and the updater.bat (Windows) or updater.sh (Linux) file. Now before you mess up, hear me out: One by one, click on the file names, then click the 'Raw' button, then press Ctrl+S to save the files to your desktop. Failing to heed my advice can cause the file to get messed up which will surely result in Russia nuking us. If you want to avoid those steps, here's the direct links to the files: updater.sh (Linux), updater.bat (Windows), prefsCleaner.sh (Linux), prefsCleaner.bat (Windows). Now if you're one of those wiz kids, you may have deduced that we're going to need that user.js file too but we'll grab that another way.

Next, go to the 12bytes.org/Firefox-user.js-supplement page at Codeberg.org, click the user-overrides.js file, then click the 'Raw' button and press Ctrl+S to save the file in the same place as the others (here's the direct link to the raw file).

Now you'll need a decent code editor (no, not Notepad!), preferably with syntax highlighting. If you're running Wintendo (that's one of my several derogatory names for Winblows), PSPad is nice, simple and free. If you're running Linux you've surely got something installed already.

What you need to do now is open that user-overrides.js file in your code editor and follow the directions Very Carefully. Every single little tiny thing you could ever possibly want to know about every single option in that file, is in that file (except whatever i forgot to put in there).

Now that you've sifted through that convoluted mess (go you!), load Firefox's about:profiles page again. Note that user profiles and web cache are stored in separate folders, thus why you may see more than one directory path for each profile. In the row labeled 'Root Directory' under your 'privacy' profile, click the 'Open Directory' button and then kill Firefox.

In your file manager you may notice that the folder containing your 'privacy' profile actually has a longer name with a bunch of gobbledygook preceding 'profile'. Ignore that like you ignore your goofy neighbor with the tinfoil wallpaper. Next, grab those files from your desktop you pirated earlier and stick 'em in your 'privacy' profile folder where the prefs.js file is.

Now we need to run that updater script. How to do that depends on whether...

...you're running Linux

You will need to make those .sh files executable. You could try meditation or sacrificing a small mammal, but it'd probably be quicker to just right-click on each of them to open the file properties dialog window and click the 'Is executable' checkbox on the 'Permissions' tab (or similar). If your file browser doesn't have such an option, open a terminal in your privacy profile directory and run chmod +x *.sh , or, failing that, see How do I run .sh files?.

We need to run that updater.sh script from a terminal, so open one and change the directory to your privacy profile directory where the updater.sh file is. In the example below you'll need to change 'gobbledygook' to match the correct name of your profile folder:

cd ~/.mozilla/firefox/gobbledygook.privacy/

Now run the updater.sh script by preceding the file name with a dot and a slash:

./updater.sh

...or Windoze

To run that updater.bat script, navigate to your Firefox profile directory, hold down the Shift key and right-click in an empty space where the file is, then select "Open Command Window Here". Enter updater.bat and hit Enter. If you have trouble, see How to Run a BAT File on Windows: 13 Steps (with Pictures).

The updater script will spit out some introductory stuff and then prompt you to continue. If by chance everything in the universe is aligned just so, and you've followed all those directions you didn't read, the script will download a fresh copy of the 'arkenfox' user.js file to your Firefox profile directory, then append the contents of your user-overrides.js to it just like it says on the tin.

Pestering the Fox

The 'arkenfox' user.js is updated frequently so you'll need to check for updates regularly. One simple way to to do that is by running the 'arkenfox' updater script.

If you're using a Linux-based OS you can use my user.js-notify.sh script to be automatically notified via a desktop notification when:

  • the 'arkenfox' user.js is updated
  • my user-overrides.js is updated
  • this guide is updated

You can add the script to your startup programs so it runs each time you log-on to your desktop (make sure it's executable). Instructions for implementing the script are contained within the script. Open the file with a code/text editor, read the instructions and edit a few options.

To check for a new user.js if you're running Windows, kill Firefox and run the 'arkenfox' updater script. If you're running Windows, or if you're running Linux and don't wish to use my user.js-version-checker.sh script, you should run the updater script every week or so in order to check for a new version, but don't get ahead of yourself. You always want the user.js version that corresponds to your major version of Firefox, so if the updater script says Available online: * version 80-alpha and you're running Firefox version 79.0.1, you'll want to cancel the update because 80 doesn't equal 79 (unless you're "woke" in which case all bets are off).

Each time you run the updater script, and with Firefox closed, be sure to follow it up by running the prefsCleaner script using the same method you used to run the updater script. The prefsCleaner script will reset any depreciated/removed/inactive preferences and it's important that you do this.

updater script Pro Tip

If you use Linux you can run the updater script with the -c switch ( ./updater.sh -c ) which will create a 'diff' file that will list all the differences between the old and the new user.js.

To see all the options for running the updater script for both Linux and Windows, see the Updater Scripts article on the 'arkenfox' wiki.

Fattening the Fox

Next we're going to the Firefox Add-ons website to install uBlock Origin (uBO) by Raymond Hill. We want uBlock Origin specifically and not any derivatives, copies, forks, fakes or imposters.

Why does he say 'WE' and 'WE'RE' when 'I' am the one doing all the f'n work?!

Plausible deniability. If i screw something up that causes your computer to explode, it's your fault. LOL

Regarding add-ons, more = more bad, generally speaking.

It's pretty important, and especially so if you're new to the game, to NOT install add-ons willy-nilly. The more you install, the more likely things will break and that your privacy will be compromised, so don't go overboard with add-ons.

Firefox has fairly comprehensive built-in mechanisms to thwart browser fingerprinting and tracking and safeguard your privacy (these are activated in part by the 'arkenfox' user.js). While they alone are not quite enough for us privacy geeks, which is why you fell into this pit of despair, they do cover a lot of important ground. If you install additional privacy related add-ons beyond those suggested here that you *think* will enhance privacy, you could very easily wind up doing the opposite.

I know, this is supposed to be the 'for dummies' guide and all, but you really must learn how to use uBlock Origin (uBO). The good news is that it too has a 'dummy' mode and it's enabled by default! To begin, configure uBO according to my uBlock Origin Suggested Settings guide.

Of particular importance, DO NOT select the 'I am an advanced user' option! Don't look at it. Don't think about it. Don't think about looking at it ... at least not until you read all that 'required reading' stuff and understand fully what uBO is, does, how to use it, and how easy it is to break the entire interwebs if you screw up.

Now it's really important that you read this and this and this, but only up to the 'Medium mode' part for the last one. Once you complete that you'll be a Semi-Certified uBlock Origin Web Filter Engineer Apprentice.

Break time...

Training the Foxineer

With all that done and Firefox running, close all tabs and click the Hamburger button again to open the Preferences window, then click the Privacy & Security menu item (or load about:preferences#privacy in the address bar). Scroll down to the Cookies and Site Data section and click the Manage Data button. In the Manage Cookies and Site Data window that opens, click Remove All. This will remove (almost) all of the gunk that Firefox has accumulated thus far. We may as well start clean, plus now you know one way to scrap some of Firefox's storage.

If you've used the Fox before there's going to be some changes, one of them being that you'll be searching from the search bar (or a web page that isn't f'n Google hopefully) instead of the address bar. The reason for this is a little creepy, suffice to say it's a privacy/security thing. Live search suggestions will be disabled because it's also creepy.

Now for some really important stuff...

Remember last week when you started reading this and i said we'd be "breaking as few websites as possible"? Kek! Since we disabled JavaScript globally with the uBO settings i suggested, every. other. website. you. visit. is going to be busted, and for good reason too!

There's a few things you need to know about JavaScript: 1), it's awesome-ish, 2) it's a privacy and security nightmare, 3) almost every website on Planet Earth uses it unnecessarily (even this one, but i'm working on that).

JavaScript (JS) can be used to do all sorts of cool and creepy things like make web pages interactive, make dull things look un-dull, animate stuff, etc.. It's used a lot for making navigation menus work and displaying images and interactive content, as well as for annoying the crap out of you with ads and pop-ups and other such garbage. It's almost always necessary to enable JS when shopping. Of primary importance here is the fact that JS is leveraged heavily for distributing malware, tracking and profiling you, learning about your bathroom habits and much, much more (and believe me when i tell you that i'm exaggerating far less than you might think!).

Here's an excerpt from PrivacyTests.org if you care to read it...

Why web browsers are critical to online privacy

Once private data has leaked from your computer, phone or tablet, there is not much you can do to control it. But how does data leave your device in the first place?

Your web browser is a likely route: browsers commonly leak data to third parties, revealing what web pages you have visited. This information lets tracking companies know what you read, what you write, where you are located, what you search for, and what you buy. And this highly personal information is assembled by those companies into detailed individual profiles of every person on the internet, containing data on your ethnicity, religious views, political views, sexual orientation, gender, family, friends, colleagues, health history, habits, relationships, educational records, income, and so on. These companies often retain your data for years or decades, and sometimes share it with third parties, including other companies or governments.

If you want to beat yourself up even more, read Stop pushing JavaScript! by a guy who knows what he's talkin' 'bout and/or watch this video:

Disable JavaScript Tutorial Online Security | The Hated One

Now do you see why we disabled JS globally for the entire interwebs??? Thing is, it's very easy to enable again For Those Specific Websites Where You Really Need It To Be Enabled. "Need", i said. Not "like" or "want", but "need".

Start Firefox and load up your privacy profile, then middle-click this link to open it in a new tab and click some of the colors on the color swatch and…… well that was boring, but WAIT! THERE'S MORE! Now click the uBlock Origin button on your toolbar and in the lower right corner there’s an icon that looks like a </> , except it has a red ‘X’ through it. That icon is secret code for [CENSORED]. Click it to remove the ‘X’ and you will have enabled JavaScript for that particular domain after which you’ll see a new button appear on the uBO dashboard right outta thin air that has circlely arrows on it. Clicking that (or pressing F5) will refresh the page at www.w3schools.com and this time your browser will allow JS to run for the entire w3schools.com domain. That color swatch page will now look very different and this time when you click the colors, awesome things will appear that will surely dazzle you for hours on end like that damned triangle puzzle-peg thingy in every Cracker Barrel.

The point of that nail-biting exercise was to demonstrate the power of JavaScript by showing you how different it can make a website look and work, as well as how necessary it is in some, but not all cases. For example, if you're reading this intensely interesting novel with your Firefox privacy profile loaded and JS disabled for 12bytes.org, it wouldn't make much difference because the place looks and works pretty much the same, thus you should never enable it where it isn't needed, kapish?

Now you're going to take the JavaScript Oath. DON'T LAUGH! This is important shit!

OK, now repeat after me...

EYE SHALL NOT ENABLE JAVASCRIPT FOR ANY WEBSITE UNLESS A) THE WEB DEVELOPER IS AN ETHICAL BLOOD RELATIVE WHOM I TRUST WITH MY GIRLFRIENDS/BOYFRIENDS VIRGINITY AND B) IT MUST BE ENABLED IN ORDER TO PROVIDE REQUIRED FUNCTIONALITY THAT WOULD OTHERWISE NOT BE AVAILABLE (AND NO, LOOKING AT BOOBS DON'T COUNT).

Importing stuff from an old profile

If you're not a first-time Firefox user and you have important bookmarks or other junk you want to import to your new privacy profile, make a backup copy of your profile and then go ahead and read this.

What to do when the Fox bites

It's inevitable that you're going to have trouble with some websites. Keep calm. Breeeeath! You've already gotten a taste of how a website can be rendered useless with JavaScript disabled and although i let you enable it for the site given in the example earlier, i only did so because it's a trustworthy place. The next website you visit may not be. You're here aren't you?

To make a broken website un-broken again, you'll need to use uBlock Origin to enable the functionality you need for those websites you trust. If you cannot get a website to cooperate by making site specific changes with uBlock, you can always spin-up a fresh, empty profile, but understand that you will be at the mercy of a completely default Firefox configuration devoid of our extra privacy protections. For websites you don't trust, why are you visiting them? Porn? Warez? Facebook? Instagram? Google? (you can use Google and some others through proxies). If you value your privacy and digital integrity in the least, forget that stuff. Seriously.

Another 'gotchya' that will likely creep up at some point is a website not saving settings that you wanted to save, such as your log-on credentials or search engine settings (If you want to learn more about alternative search engines, read Alternative Search Engines That Respect Your Privacy). To save such data you'll need to edit the permissions for the domain and there's two easy ways to access them; you can click the padlock icon in the address bar, then the right-facing arrow, then "More information", or simply hit Ctrl + I (that's an eye, not an el). In the window that opens, click the "Permissions" icon and scroll down until you see the "Set Cookies" item. Finally, deselect the "Use Default" preference and select "Allow" if you want to save the the data for that domain across restarts, or "Allow for Session" if you want to dump the data after you close the browser.

I would not suggest permanently allowing cookies for any mainstream, privacy-hating social media or search engine websites such as Google, Yahoo, Bing, Facebook, Instagram, Twitter, eBay, etc..

Lastly, read the 'arkenfox' wiki. Seriously!

The Fox hole

Even with everything you and i have accomplished you're still vulnerable to being tracked and profiled, however you're in a much better position then when we started out ... except for one little problem: Your Internet Service Provider!

At the very least your ISP can see what websites you visit, how long and how often you're visiting, and when you're surfing the web and when you're not. They may even inject ads, malware or other garbage in your data stream. The solution: Hijack your neighbors unprotected WiFi and... Kidding! Listen, you and i have gotten to know each other throughout this long and difficult ordeal. We're kinda like buddies now. Kinda. And i can already tell you're ethics are of a higher caliber than mine that!

One solution to the problem is a Virtual Private Network (VPN). Ever wanted to be in 30 places at once?

A VPN works by encrypting the traffic between you and another computer run by the VPN service provider which we'll call an 'exit node'. That exit node computer could be anywhere in the world. From the exit node your traffic flows as normal to whatever website you want to visit and the website then sends the kitty video you clicked on back to the exit node thinking IT is YOU, but alas, IT AIN'T YOU! The kitty video then secretly makes its way back to you through this secret tunnel which was secretly established between you and the exit node. So far as the website is concerned, it doesn't know where the hell you really are and so far as your ISP is concerned, all it sees is gobbledygook that looks like Braille to an ameba. Ever annoyed by that galactically stupid "Sorry, this video is not available in your country" crap? Pfff. Any remotely decent VPN provider will maintain many exit nodes throughout the world and switching between them is usually as simple as a mouse click or two.

Now, listen up...

There are truck loads of VPN service providers and it seems the vast majority do not take customer privacy seriously. In particular i would strongly advise exercising caution regarding any VPN add-on on the Mozilla add-ons website for a few reasons, one of them being that they very likely suck from a privacy perspective and another being that it may only be your browser traffic that benefits and not the rest of your OS traffic (think email) or other devices on your network. Lastly, NEVER trust any "free" VPN provider!

If you want to check out the provider i use, it's currenty AzireVPN. Yes, that's a referral link, but you can bet your ass i wouldn't be using them if i didn't have some trust in them (read here and here and here). Also OVPN seems like a good one that may be more mature. Both own and secure their own hardware rather than leasing it and both services can be purchased anonymously using crypto.

WHAT THE FOX!

So now you're all smitten thinking you're invincible and ready to hack the NASA to see if aliens really built mind control machines on the back side of the moon (they did, sorta, pretty sure). You're not, but you've taken one, small step for man, and.....

Truth is, there are far more vectors for attack than you and i (and many of the so-called "experts") may ever know about, so don't get all uppity. Perfect privacy on the web, as in real life, is a pipe dream and it wasn't the goal here anyway. We've covered several important bases that will help prevent nasty corporations and ISP's from spying on you, but not all of them. Remember that when you're creating fake profiles on Facebook to stalk your ex.

If you have a hard time swallowing all this and getting used to a hardened Firefox, don't sweat it. Make another default Firefox profile and use it whenever you feel like punching someone (me).

After you've taken plenty of time to get comfortable with your new Firefox configuration, i suggest reading everything in the uBlock Origin wiki and learning how to use it in its advanced mode.

Be safe. Be ethical. And if you need help (after you've tried to help yourself), leave a comment or check the FAQ: Firefox Hardening page.

IMPORTANT: If you incorporate suggestions made in this guide, please check back often for changes or, better yet, subscribe to my main RSS feed or the feed for the Tech or Firefox categories. If you need a news feed reader, see Firefox Extensions - My Picks and/or How to access RSS feeds for websites that don't advertise one.

Further resources

Revisions

Click to expand...

21-Jul-2022

  • minor edits and clarifications

6-Jul-2022

  • trivial edits - nothing to worry about

25-Feb-2022

  • removed CSS Exfil Protection add-on

18-Feb-2022

  • removed Clear URLs add-on - it's unnecessary given the 'arkenfox' user.js and updated suggested settings for uBlock Origin

4-Feb-2022

  • a year late, i learned that Waterfox was sold to an advertising company - yet another reason to avoid 3rd party builds/forks of Firefox

2-Feb-2022

  • added an excerpt from PrivacyTests.org

28-Jan-2022

  • language updates - minor stuff

22-Jan-2022

  • removed Cookie AutoDelete ('cause dFPI, ya know?)
  • removed HTTPZ - not needed
  • removed much of the VPN info since it's included in the VPN-Tor article
  • several small edits, corrections, deletions

14-Dec-2021

  • very minor edit

13-Jun-2021

  • minor edits, typos

20-Oct-2020

7-Oct-2020

  • added more info about the user.js-notify.sh script

27-Sep-2020

  • reversed the order of this change log so newest changes are at the top

26-Sep-2020

  • well, that didn't last long - after more testing i reinstated Cookie AutoDelete because i think it's easier to use it than it is to be adding cookie exceptions all the time, plus no CAD breaks session restore with the 'arkenfox' user.js and there are other quibbles as well
  • removed Privacy-Oriented Origin Policy - given its limited usefulness, non-noob friendly filter syntax and potential to break a site on rare occasions, i decided it wasn't needed
  • minor edits

24-Sep-2020

  • removed all Cookie AutoDelete add-on info - given the intended audience for this guide, as well as first-party isolation and resist fingerprinting being enabled in the 'arkenfox' user.js, it isn't needed
  • removed all LocalCDN add-on info - given the intended audience for this guide, as well as first-party isolation and resist fingerprinting being enabled in the 'arkenfox' user.js, it isn't needed
  • added instructions for keeping storage items (log-on credentials, settings) for websites
  • minor edits

12-Sep-2020

  • split off part of the 'Fattening the Fox' section into a new section, 'Pestering the Fox', which includes new info about how to automatically be notified when a new version of the 'arkenfox' user.js is available (Linux only)

25-Aug-2020

  • replaced Site Bleacher with Cookie AutoDelete (CAD) - search for "Cookie AutoDelete" to see the edited content
  • minor edits

18-Aug-2020

  • added more info about the 'arkenfox' updater script regarding keeping the user.js version in sync with the major Firefox version

16-Aug-2020

  • minor edit

31-Jul-2020

  • removed the 'Don't touch my tabs!' add-on (obsolete since Firefox v79)

26-Jul-2020

  • replaced Decentraleyes with LocalCDN

5-Jul-2020

  • added the video, Prof Shoshana Zuboff on surveillance capitalism

24-Apr-2020

  • updated the URL for the uBlock Origin Suggested Settings Guide

21-Mar-2020

  • removed ETag Stoppa since ClearURLs covers eTag storage filtering
  • added settings details for CLearURLs

24-Jan-2020

  • added more info about circumventing website logon problems due to Site Bleacher add-on
  • minor edits

23-Jan-2020

  • removed 'Font Fingerprint Defender' add-on - i got word that the extensions may be problematic

22-Jan-2020

  • removed 'First Party Isolation' add-on
  • added 'Font Fingerprint Defender' add-on
  • minor edits

4-Jan-2020

  • added ETag Stoppa to extensions section
  • added link to 'FAQ: Firefox Hardening' page
  • minor edits throughout

3-Dec-2019

  • minor edit

15-Nov-2019

  • added a more extensive warning about installing add-ons in addition to those recommended herein

13-Nov-2019

  • misc. edits and clarifications, nothing too drastic

6-Nov-2019

  • stuck the uBlock config stuff on its own page

5-Nov-2019

  • rewrote several bits of the guide in an attempt to clarify things and make it a bit shorter
  • edited some content to bring it up to date with the newest version of Firefox
  • adjusted settings for uBO

27-May-2019

  • added a warning about using this guide with Tor
  • added a resources section

23-May-2019

  • added instructions for enabling the search bar in the navigation bar since setting the preference alone in user.js doesn't work for some reason
  • minor edits

29-Apr-2019

  • added HTTPZ
  • added Site Bleacher and associated information
  • removed temporary profile info
  • lots of minor edits

29-Feb-2019

  • minor edit

22-Jan-2019

  • added better description and screen-caps for how to download user-overrides.js
  • minor edit

12-Jan-2019

  • clarified info regarding the downloading of the configuration files

6-Jan-2019

  • clarified a lot of stuff that may not have been clarified clearly enough
  • eliminated the 'relaxed_user-overrides.js' file - the user-overrides.js is now used for both the advanced and dummy guides
  • updated the user-overrides.js file
  • lots of minor edits, corrections

29-Dec-2018

  • polishing, clarifications

27-Dec-2018

  • added more info about using the user.js updater and prefsCleaner scrips
  • many small changes and polishing

26-Dec-2018

  • first (pre) release

Comments

Note that both reader and my comments, while they may have been accurate at the time, might be inaccurate today. This is a highly dynamic environment so please verify the accuracy of comment content should you wish to utilize it. Failing that, ask me and i'll give it a crack.

Looking Glass: The next 'bright idea' from Mozilla (updated)

Update, 14-Mar-20: In addition to this update, there is an earlier update further down. As for this most recent update, i no longer recommend Waterfox, nor any other fork of Firefox. In the interest of privacy i recommend using only the official release of Firefox as provided by Mozilla. This is absolutely not because i think Firefox is great piece of work (it isn't), or because i like Mozilla (i don't), but rather because it's the only mainstream and capable web browser that is suitable for the degree of privacy hardening that i subject it to. You can read more about that in one of my Firefox guides. Now, on with the story...

Back in the day, Firefox was sort of a hackers power browser that fit a niche market. It was probably the most tweakable mainstream web browser on the planet for both geeks and average users alike. Although it is still highly customizable, it has become less so since Mozilla decided to terminate support for so-called "legacy" add-ons and replace them with WebExtensions of the same type as used by Google Chrome. Matter of fact, Firefox has become a Google Chrome clone as far as i'm concerned and some of us -- a core Firefox audience that liked running something different and something that wasn't 'Googlized' -- didn't want anything to do with Google, much less their Chrome web browser.

In its [not so] slow, steady decline and separation from its core values, Mozilla has dumbed-down Firefox to the point where it is hardly recognizable and changed its add-on API several times, thus forcing developers to rewrite their code in order to comply with yet another new standard. The developer of the much loved Search WP extension had this to say:

I'd love to support Firefox 57 (with all my extensions) but

1) Webextensions are just *too* limited. You simply can't do anything useful with them until somebody adds an API just for you. It already starts with the most basic functionality of SearchWP: there does not seem to be a way to modify the search bar.

2) Mozilla ruthlessly breaking all existing extensions on purpose and removing customization possibilities with every new version of Firefox made me loose trust in the foundation and the browser itself - I'm not willing to spend my spare time on a project that has set a course that goes against everything Firefox once stood for.

And the stupidity continues...

For some time Mozilla has been packaging extensions with Firefox in the form of system add-ons, or "features" as Mozilla calls them. Not only is the option to uninstall these add-ons absent from the user interface, but most people aren't even aware they exist since they're hidden from the Add-Ons panel (if you want to know more about system add-ons and how to remove them, read the article, Firefox Configuration Guide for Privacy Freaks and Performance Buffs).

In its latest burst of stupidity, Mozilla is now installing yet another add-on without consulting users, but this time, to their undeserved credit, they have made it removable apparently. 'Looking Glass' appears to be some kind of metrics collection add-on disguised as an augmented reality game created by the PUG Experience Group, whoever the hell they are, and it is part of a series of "Shield Studies" conducted by Mozilla. To see what studies Mozilla has foisted upon you that you didn't agree to, enter about:studies in the address bar and then about:preferences#privacy to opt out. Better yet, stop using the Mozilla version of Firefox altogether.

Of course adding this unwanted crap to Firefox isn't the worst of it. A while back, Mozilla decided that it needed to jump on the "fake news" bandwagon with its newly created Mozilla Information Trust Initiative in order to steer you away from sources of information that the multi-million dollar Mozilla Foundation decides are not suitable for your consumption.

I no longer suggest using Firefox, at least not the version distributed by Mozilla. If you want Firefox with the privacy disrespecting garbage removed, consider using Waterfox, which is a more privacy-centric, 64 bit fork of Firefox that will apparently continue to support XUL (legacy) extensions in addition to the newer WebExtensions. Some of the features of Waterfox are:

  • Disabled Encrypted Media Extensions (EME)
  • Removed Pocket
  • Removed Telemetry
  • Removed data collection
  • Removed startup profiling
  • Allow running of all 64-Bit NPAPI plugins
  • Allow running of unsigned extensions
  • Removal of Sponsored Tiles on New Tab Page

UPDATE: Mozilla apologizes.

On 18-Dec., after many users complained about the inclusion of the Looking Glass add-on, for which almost nothing was known at the time it was distributed, Mozilla published an apology, moved the add-on to the Mozilla add-on repository and published the source code. The post opened with the following nonsensical statement which raises more questions than it answers:

Over the course of the year Firefox has enjoyed a growing relationship with the Mr. Robot television show and, as part of this relationship, we developed an unpaid collaboration to engage our users and viewers of the show in a new way: Fans could use Firefox to solve a puzzle as part of the alternate reality game (ARG) associated with the show.

Does this sound remotely like anything that should be included in an internet web browser? What is the nature of Mozilla's relationship with Mr. Robot? We already know that Mozilla has a habit of adding unnecessary functionality through its inclusion of 3rd party services for monetary gain and using its relationships with many privacy destroying corporations, such as Google, to monetize necessary functionality, yet they packaged the Looking Glass add-on with Firefox for no other reason other than, what? They like Mr. Robot? They wanted to make sure you weren't bored by giving you a game to play? Utter bullshit. And why wasn't the source code published before the add-on was shipped? And how do we know that the published code is identical to the unpublished code?

The rollout did not meet the standards to which we hold ourselves causing concern that was surfaced through our Firefox community.

Yes it did because Mozilla sacrificed its standards long ago. The only reason they published this apology is because enough users complained.

We received feedback regarding the transparency of the rollout and the processes that govern our auto-install mechanism for add-ons. In response we immediately started our internal review, [...]

Good thing most users have no clue about the several system add-ons and "features" that ship with Firefox which are forcefully installed, activated, not easily uninstalled, and are used to collect data. Of course we know that no internal review will be performed to address this glaring privacy issue.

We’re sorry for the confusion and for letting down members of our community. While there was no intention or mechanism to collect or share your data or private information [...]

When one considers exactly what Mozilla defines as "user data" and "private information", one realizes how hollow this misleading claim rings. If they're so concerned about their users, why aren't they concerned about the data that is still being collected by the forcefully installed system add-ons of which users are largely unaware? Why aren't these add-ons removed and placed in the add-on repository?

Resources:

Firefox Tweaks and Fixes and Styles and Things

Customize the appearance of the Firefox web browser and its derivatives without using add-ons.

Introduction

Following is a collection of tweaks and fixes for the Mozilla Firefox web browser and its derivatives. Keep an eye out for changes as i tend to update this stuff fairly often.

For the non-techies, here are brief descriptions of some of the Firefox configuration files which are in play in this article:

  • prefs.js: This is the primary Firefox configuration file that controls much of how the browser works. This file exists in the root of your Firefox profile directory. The contents of this file can be viewed and edited by entering about:config in the address bar, however you should typically not edit this file unless it's only to test something. All of your custom preferences should be placed in a user.js file (or a user-overrides.js file if you're using the 'arkenfox' user.js).
  • user.js: This file does not exist until you create it in the root of your Firefox profile directory. Any preferences that you wish to change in prefs.js or about:config that are not available in the Firefox options interface, and which you want to preserve across Firefox updates or resets, should be entered in this file.
  • userChrome.css: This file does not exist until the you create it in the chrome folder of your Firefox profile. This file is used to modify the appearance of virtually any element of the Firefox user interface (UI).
  • userContent.css: This file does not exist until the you create it in the chrome folder of your Firefox profile. This file can be used to modify the appearance and behavior of web pages, however i would recommend using the Stylus add-on instead because it makes working with CSS much easier.

Note that the userChrome.css and userContent.css files are ignored by default since Firefox version 69, thus you have to set the option toolkit.legacyUserProfileCustomizations.stylesheets to true if you want to use either file.

If you need help with Cascading Style Sheets (CSS), CSS selectors and what parameters they can take, see the CSS Introduction and CSS Reference documents at w3schools.com.

Changing how Firefox looks

CustomCSSforFx

Since Mozilla removed support for the older XUL/XPCOM add-ons in favor of WebExtensions, the much loved Classic Theme Restorer add-on won't work with Firefox version 57 or newer. The developer of CTR is still very active in maintaining the CSS code that was used in the add-on however and you can find it in the CustomCSSforFx GitHub repository. Using the new code, we can continue to tweak the crap out of Firefox, though it requires a bit more elbow grease. I've removed several of the CSS tweaks i had here in favor of the CustomCSSforFx code because it covers so much ground and saves a lot of time without adding too much overhead. You can also hide Firefox context menu items with CustomCSSforFx or you could roll your own styles and dump them in userChrome.css.

Instructions for implementing the CustomCSSforFx code is on the page i linked to, though i might recommend implementing it a little differently if you already have code in your userChrome.css or userContent.css that you want to keep. The method i use keeps my custom code separate from the CustomCSSforFx code which makes updating the CustomCSSforFx stuff a little easier. It also allows to quickly troubleshoot problems that might arise because you can just comment out a single @import line to easily eliminate large chunks of code. Here's what my userChrome.css contains:

/* @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /**/
/* Aris-t2/CustomCSSforFx (https://github.com/Aris-t2/CustomCSSforFx) */
@import "./custom/aris-t2/userChrome.css"; /**/
/* all my other custom code below */

Notice that the @namespace line is commented out. You need to do the same, else some of the tweaks in the CustomCSSforFx code might not work. To understand why you don't need the @namespace line, even though you may have read that you do, and why it can cause styles to break, read Adding Style Recipes to userChrome.css.

As you saw above, the userChrome.css in my /chrome folder is a rather bare-bones affair in which i use @import to link to the CustomCSSforFx files and all my other CSS files that reside in sub-folders of /chrome . Here's what the directory hierarchy looks like if you're confused:

/chrome
userChrome.css
userContent.css
/chrome/custom/aris-t2
/config
/css
/image
userChrome.css
userContent.css
/chrome/custom/some-other-stuff
whatever.css

And here's what my userContent.css file looks like, which just points to the userContent.css file contained with the CustomCSSforFx package:

/* Aris-t2/CustomCSSforFx (https://github.com/Aris-t2/CustomCSSforFx) */
@import "./custom/aris-t2/userContent.css"; /**/
/* all my other custom code below */

Once you've got the files in place, it's just a matter of editing the userChrome.css and userContent.css files to suit your needs. The instructions are contained in the files. It will take a while to go through it all, but i suggest doing so because some tweaks are OS and Firefox version specific. Aris updates the CustomCSSforFx code quite often, so you might want to watch the repository for changes.

When it's time to update the styles, things get a little tricky if you want to avoid having to sift through the userChrome.css and userContent.css files all over again. One solution by 'petsam' called 'Pretty Firefox' attempts to automate the process as much as possible. I haven't used his script so i can't comment on it, suffice to say that any effort to automate the updating of CustomCSSforFx is appreciated i'm sure.

Dark Fox

Firefox ships with a few default themes and one of them is the 'Dark' theme. To activate it, right-click on an empty part of the tab bar or the navigation tool bar, or click the 'Customize' menu item in the Hamburger menu. At the bottom of the 'Customize Firefox' tab you'll see a 'Themes' button. Click it and select the 'Dark' option. Shadowfox is another alternative if you'd rather go that route.

Adjust vertical space between the bookmark items

This will change the vertical space between your bookmarks in the sidebar. You can use CustomCSSforFx for this, or copy the following code to your userChrome.css. Change the -2 to whatever suits you.

/* bookmark panel item spacing */
.sidebar-placesTree treechildren::-moz-tree-row {
margin: -2px;
}

Styling the link target/network status tooltip

The link/status tooltip is the text that appears in the lower left or right of the browser viewport when you hover over a hyperlink or when there is certain network activity. Some people (me!) find the link tooltip really annoying because it can cover part of a webpage and get in your way. This style will have the following effects:

  • move the hyperlink tooltip to the top of the browser, overlaying the tab bar (adjustable)
  • make the hyperlink tooltip the full width of the browser (almost)
  • make the hyperlink tooltip background transparent black and the text white
  • center the hyperlink tooltip text
  • leave the network status tooltip on the bottom of the viewport, but make the background transparent white and the text black
/* move the hyperlink tool-tip to the top of the browser */
#statuspanel[type="overLink"] {
position: fixed;
top: 26px; /* adjust as necessary */
left: 0;
width: 100%;
z-index: 3;
text-align: center;
}
/* style the hyperlink tool-tip */
#statuspanel[type="overLink"] #statuspanel-label {
background-color: #0000008c !important;
color: white !important;
height: 27px !important; /* adjust as necessary */
}
/* style the status tool-tip */
#statuspanel[type="status"] #statuspanel-label {
background-color: #ffffff9c !important;
color: black !important;
}
/* make sure the the status tooltip is hidden when it's inactive */
#statuspanel[inactive] #statuspanel-label {
display: none !important
}

Changing how Firefox works

In addition to the smooth scrolling tweak below, see the articles, Firefox Configuration Guide for Privacy Freaks and Performance Buffs and The Firefox Privacy Guide For Dummies!.

Smooth scrolling

Smooth scrolling is now enabled by default in Firefox, but i don't care for the way it works. If you want to try my settings, copy the smooth scroll code from my user-overrides.js file at my CodeBerg repository (click the user-overrides.js file link and scroll down until you find the general.smoothScroll preferences).

Making the user interface (UI) bigger on small displays

The Firefox UI consists of several parts including toolbars, the tab bar and the viewport where web pages are rendered. If you're working on a high resolution, small format display, such as a laptop with a 1080p screen, everything may look too small. From the Firefox preferences you can easily enlarge the font sizes used by web pages. However adjusting font sizes will not have any effect for the size of toolbar buttons, address bar text and other parts of the Firefox UI, so here's what you can do:

  1. Enter about:config in the address bar
  2. In the search box, enter layout.css.devPixelsPerPx
  3. Set the value of this preference to whatever decimal number (0.9, 1.1, 1.2, etc.) you want until the toolbars and icons are a comfortable size (the change will take effect immediately). Don't use too large of a number. What is too large? I don't know, but once you get close to 2 you might notice very strange issues with the UI. I use a value of 1.3 for a 17 in., 1080p display.

This will also enlarge all web pages and so you may want to adjust your desired font sizes in Firefox's options accordingly, both for your preferred language (Latin if you read English) and 'Other Writing Systems'.

If you use the developer tools you can enlarge all of that using the devtools.toolbox.zoomValue preference.

When you're done you should put those preferences in a user.js file.

Cleaning up the context menu clutter

You can use a userChrome.css file in your profile directory to hide menu items in Firefox's various context menus. Each menu item has a CSS selector and you need to know what the selectors are for the menu items you wish to hide.

There's more than one way to skin a cat, so let's go with the easy way first which is to get a list of the CSS selectors for all the context menu items by searching the Firefox source code. If that works for you -- if you're able to correlate the selector name with the context menu item you wish to hide -- then you can skip most of the next part and go right to the userChrome.css code part.

The other way is a bit of a convoluted process, but it's also easy to do:

  1. Open the web developer toolbox from Firefox's hamburger menu, or by pressing F12, etc..
  2. From the 3-dot icon in the Developer Tools window, click the 'Settings' menu item, then in the 'Advanced Settings' section, enable the two options, 'Enable browser chrome and add-on debugging toolboxes' and 'Enable remote debugging' after which you can close the toolbox.
  3. Again from the hamburger menu, click the 'Web Developer' menu item, then 'Browser Toolbox'. This will open the remote Developer Tools window along with a prompt to allow the connection, which you will.
  4. In the new Developer Tools window, click the 3-dot icon, then the 'Disable Popup Auto-Hide' menu item.

Now in Firefox you can open whatever context menu you want to change and it will stay open (press Esc. to close it). Next, click the element picker icon on the Developer Tools window (it should be the left-most icon on the top row) and then click the Firefox context menu item you wish to hide. This will highlight the menu item in the Developer Tools window and if you double click the <menuitem id="context-some-menu-item" part, you can then copy the CSS selector which, in our example, is context-some-menu-item .

Lastly you need to add the necessary code In your userChrome.css file. Note that the selector is an 'id', so you must prefix it with a hash character:

#context-some-menu-item {
    display: none !important;
}

To add multiple items, you can do this:

#context-some-menu-item,
#context-some-other-menu-item,
#context-yet-another-menu-item {
    display: none !important;
}

Note that there must be a comma after each item except for the last one.

Save the file and restart Firefox.

Changing how websites look or work

The styles below can be used in a userChrome.css file, but i would recommend using the Stylus add-on mentioned earlier. If you dump them in userChrome.css you'll need to make some changes so that they affect only the websites you want to change.

If you're using an extension to modify how a website looks or works and you want it to work on Mozilla domains, you will need to set the preference extensions.webextensions.restrictedDomains to an empty value. You can access this preference by entering about:config in the address bar.

Making the interwebs dark

Many of us who have been staring at computer monitors too damn long cannot tolerate bright displays. White web pages with dark text feels like looking at the sun, which is one reason why i use a dark theme for this website. A lot of people seem to have this problem and there are many solutions. In the case of Firefox, there are quite a few add-ons that can darken the web and they use various methods to do so. The simplest ones invert the colors which is a dumb way to go for a couple reasons, one of them being that this can make dark pages look bright. To see my preferred extension for darkening the web, see Firefox Extensions – My Picks.

Allow text selection/copying

In a silly effort to prevent copying text, some websites will try to prevent you from selecting it, or at least make it appear that you can't select the text by changing the selection color to the same color as the background. This tweak will often solve the problem.

Note that i've gotten reports of this CSS causing problems where one is unable to drag tabs to reorganize them and YouTube video full-screen not working with the 'F' key shortcut. I've experienced none of these problems personally.

Name: [global] allow text selection
Applies to: Everything

/* override CSS preventing text selection */
* {
-moz-user-select: text !important;
user-select: text !important
}

Copying/pasting text without formatting

Sometimes you may want to copy text from a website and paste it without the HTML markup. While i'm not aware of any way to accomplish this without an extension, you can to do the next best thing by using Ctrl+Shift+V to paste instead of Ctrl+V. This works for me on Windows and Linux, however i've had some feedback that indicates it does not work in all cases. If you have a problem, look for a global or application specific Ctrl+Shift+V hotkey setting for the program you're pasting to and consider deleting or changing it.

Copying text from hyperlinks

Copying the text of a hyperlink can be a hassle, that is until you press the Alt key. Just press and hold your Alt key while dragging the cursor to highlight the text you want to copy. You can even copy text from the middle of a hyperlink this way. No extension needed.

Display website content hidden by JavaScript

I'm noticing more and more websites using JavaScript and DIV layers to hide page content until the page is fully loaded (Engadget employs this stupidity). While these CSS tweaks will not work in every case, they will work in many. Note also that these styles may occasionally break how a website is displayed, though this seems to be fairly rare.

Name: [global] anti-JS - display html
Applies to: Everything

Click to expand...
/*
* display html hidden by JS
* note that some styles may break some websites
*/
html {
display: unset;
}
html > .page {
visibility: visible;
}
body {
opacity: 1 !important;
visibility: visible !important;
}
body :is(.site, .body-fade-in) {
opacity: 1 !important;
}
body :is(#blocker, .page-loader, .page-preloader-cover, #mask, .content-loader, .loader-wrapper, #loader-wrapper, #preloader, .preloader-bg, #load, #loading, #ht-loader, #qLoverlay, .preloader, #loftloader-wrapper, #wrapper > #loader-container, #body-wrapper, #before_preloader, .loading-screen, #loadingDiv, #af-preloader, .body-fade-in, #loadingImg, #fullpage-overlay, #astroid-preloader, .pix-page-loading-bg, .pix-loading-circ-path, .overlayloader, .load-screen, .page-preloader) {
display: none !important;
}
body #contents {
visibility: visible !important;
}
#content #primary,
.thb-page-transition-on,
.wpb_animate_when_almost_visible {
opacity: 1;
}
.NoJs .bbCodeSpoilerContainer > .bbCodeSpoilerText,
#container {
visibility: visible;
}
.hide-if-no-js,
#ajax-loading-screen,
#loader-container,
.loader,
#loader,
.loader-container,
.transition--fade-in,
.modal-simple--site-overlay,
.aerious-page-loader,
.video-fullpage-wrapper,
.so-loader,
.open_shop_overlayloader {
display: none !important;
}
.loading {
filter: none;
}

The following will display images which are hidden by JavaScript in some cases:

Name: [global] anti-JS - display images
Applies to: Everything

img {
opacity: 1 !important;
filter: none;
}

The following will display YouTube videos hidden by JavaScript in some cases:

Many websites will not display embedded YouTube videos unless you enable JavaScript. This will make the video display without having to enable it in some instances, however JS must still be enabled for youtube.com (see Firefox Extensions - My Picks if you want to bypass YouTube altogether whilst still being able to watch YouTube videos).

Name: [global] anti-JS - display YouTube player
Applies to: Everything

/* ex: https://www.healthnutnews.com/airbnb-wants-to-pay-you-to-move-to-italy-for-3-months-really/ */
div.player-unavailable {
display: none !important;
}

Normalizing fonts

For better readability i like font types and sizes to be uniform across all websites, plus there are privacy issues for websites that use 3rd party fonts, such as the "free" fonts that Google provides. Just be aware that forcing your own fonts can make fingerprinting the browser easier on websites where JavaScript is enabled. There are various ways to normalize fonts, but here's the method i use:

  1. in Firefox preferences, find the 'Fonts & Colors' options and click the 'Advanced' button
  2. if you read English, select 'Latin' in the combination control, else select your preferred language
  3. set the 'Proportional', 'Monospace' and 'Minimum' font styles and sizes and remember your choices. I set the 'Proportional' option to 'Serif' and leave the others at their default values
  4. in the combination control, select 'Other Writing Systems' and set the preferences to the same values as in the last step
  5. disable the option, 'Allow pages to choose their own fonts'
  6. optionally install a font toggle add-on like Enforce Browser Fonts or Toggle Fonts

Fonts should now look much more uniform across all websites and if you don't like the way a particular website looks, you can quickly toggle the 'Allow pages to choose their own fonts' setting with your add-on.

Lastly, if you use uBlock, read the 'My filters' section of the uBlock Origin Suggested Settings page which offers a way to allow all first-party fonts globally while disallowing all 3rd party fonts by default.

Redirecting this to that

Using an extension like Redirector you can automatically redirect one resource to another. This is particularly worthwhile if you value your privacy and want to view alternative front-ends to websites such as YouTube, Reddit, Wikipedia, Twitter, Instagram, etc.. If you have Redirector installed you can just download and import my redirector.json file and, even if you don't, you may be able to import the file into whatever extension you are using. Failing that, below is the contents of the file which you may be able to adapt to your needs.

If you're using Redirector, note that 1) the order of redirects for those which affect the same domain is important and 2) many redirects are disabled by default. For example there are several redirects to alternative front-ends for Reddit, only one of which is enabled. If the enabled resource fails to load for whatever reason (not entirely uncommon) you'll want to disable it and then enable the next one in the list and so on.

redirector.json contents
{
"createdBy": "Redirector v3.5.3",
"createdAt": "2022-01-29T17:49:49.000Z",
"redirects": [
{
"description": "youtube.com > piped.silkky.cloud (link, embed)",
"exampleUrl": "https://www.youtube.com/watch?v=RKqZKDIhaFE",
"exampleResult": "https://piped.silkky.cloud/watch?v=RKqZKDIhaFE",
"error": null,
"includePattern": "https:\\/\\/www\\.youtube\\.com/(watch\\?v=|embed\\/)(.+)",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://piped.silkky.cloud/$1$2",
"patternType": "R",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame",
"sub_frame"
]
},
{
"description": "youtube.com > piped.kavin.rocks (link, embed)",
"exampleUrl": "https://www.youtube.com/watch?v=RKqZKDIhaFE",
"exampleResult": "https://piped.kavin.rocks/watch?v=RKqZKDIhaFE",
"error": null,
"includePattern": "https:\\/\\/www\\.youtube\\.com/(watch\\?v=|embed\\/)(.+)",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://piped.kavin.rocks/$1$2",
"patternType": "R",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame",
"sub_frame"
]
},
{
"description": "youtube.com > https://piped.tokhmi.xyz/ (link, embed)",
"exampleUrl": "https://www.youtube.com/watch?v=RKqZKDIhaFE",
"exampleResult": "https://piped.tokhmi.xyz/watch?v=RKqZKDIhaFE",
"error": null,
"includePattern": "https:\\/\\/www\\.youtube\\.com/(watch\\?v=|embed\\/)(.+)",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://piped.tokhmi.xyz/$1$2",
"patternType": "R",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame",
"sub_frame"
]
},
{
"description": "youtube.com > piped.moomoo.me (link, embed)",
"exampleUrl": "https://www.youtube.com/watch?v=RKqZKDIhaFE",
"exampleResult": "https://piped.moomoo.me/watch?v=RKqZKDIhaFE",
"error": null,
"includePattern": "https:\\/\\/www\\.youtube\\.com/(watch\\?v=|embed\\/)(.+)",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://piped.moomoo.me/$1$2",
"patternType": "R",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame",
"sub_frame"
]
},
{
"description": "youtu.be > www.youtube.com",
"exampleUrl": "https://youtu.be/ag71MgHuuEk",
"exampleResult": "https://www.youtube.com/watch?v=ag71MgHuuEk",
"error": null,
"includePattern": "https://youtu.be/*",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "https://www.youtube.com/watch?v=$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "BitChute embed link to video page",
"exampleUrl": "https://www.bitchute.com/embed/o6Ro3TNHYcw/",
"exampleResult": "https://www.bitchute.com/video/o6Ro3TNHYcw/",
"error": null,
"includePattern": "https://www.bitchute.com/embed/*",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "https://www.bitchute.com/video/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "BitChute disable channel sensitivity filter",
"exampleUrl": "https://www.bitchute.com/channel/bluewater/",
"exampleResult": "https://www.bitchute.com/bluewater/?showall=1",
"error": null,
"includePattern": "https:\\/\\/www\\.bitchute\\.com\\/channel\\/([^/]+)\\/",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "https://www.bitchute.com/$1/?showall=1",
"patternType": "R",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame",
"script",
"xmlhttprequest",
"other"
]
},
{
"description": "Brand New Tube embed link to video page",
"exampleUrl": "https://brandnewtube.com/embed/MqCiUoyHq6Y35bV",
"exampleResult": "https://brandnewtube.com/watch/MqCiUoyHq6Y35bV",
"error": null,
"includePattern": "https://brandnewtube.com/embed/*",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "https://brandnewtube.com/watch/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "Rumble embed link to video page",
"exampleUrl": "https://rumble.com/embed/vjznor/?pub=m9akb#?secret=GPKE7Qd23U",
"exampleResult": "https://rumble.com/vjznor",
"error": null,
"includePattern": "https://rumble.com/embed/([^/]+)",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "https://rumble.com/$1",
"patternType": "R",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "reddit.com > teddit.ggc-project.de",
"exampleUrl": "https://www.reddit.com/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"exampleResult": "https://teddit.ggc-project.de/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"error": null,
"includePattern": "https://www.reddit.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://teddit.ggc-project.de/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "reddit.com > snew.notabug.io",
"exampleUrl": "https://www.reddit.com/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"exampleResult": "https://snew.notabug.io/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"error": null,
"includePattern": "https://www.reddit.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://snew.notabug.io/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "reddit.com > libredd.it",
"exampleUrl": "https://www.reddit.com/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"exampleResult": "https://libredd.it/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"error": null,
"includePattern": "https://www.reddit.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://libredd.it/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "reddit.com > teddit.net",
"exampleUrl": "https://www.reddit.com/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"exampleResult": "https://teddit.net/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"error": null,
"includePattern": "https://www.reddit.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://teddit.net/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "reddit.com > old.reddit.com",
"exampleUrl": "https://www.reddit.com/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"exampleResult": "https://old.reddit.com/r/youtube/comments/ha0gan/a_new_method_to_get_the_classic_layout_back_if/",
"error": null,
"includePattern": "https://www.reddit.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://old.reddit.com/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "LiveLeak disable safe mode",
"exampleUrl": "https://www.liveleak.com/view?i=9gr9k_1572160101",
"exampleResult": "https://www.liveleak.com/view\\?i=9gr9k_1572160101&safe_mode=off",
"error": null,
"includePattern": "https://www.liveleak.com/view?i=*",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "https://www.liveleak.com/view\\?i=$1&safe_mode=off",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "Facebook no-script",
"exampleUrl": "https://www.facebook.com/ArmCoCoroner/posts/1903492073120566",
"exampleResult": "https://www.facebook.com/ArmCoCoroner/posts/1903492073120566?_fb_noscript=1",
"error": null,
"includePattern": "https://www.facebook.com/*",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "https://www.facebook.com/$1?_fb_noscript=1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "thepiratebay.org > thepiratebay10.org",
"exampleUrl": "https://thepiratebay.org/",
"exampleResult": "https://thepiratebay10.org/",
"error": null,
"includePattern": "https://thepiratebay.org/",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "https://thepiratebay10.org/",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "Right Dao (search)",
"exampleUrl": "https://rightdao.com/search/redir?i=2&q=bash%20type%20suppress%20output&url=https%3A%2F%2stackexchange.com%2Fquestions%2F469738%2Fhow-to-suppress-stdout--stderr-from-a-shell-script-output",
"exampleResult": "https%3A%2F%2stackexchange.com%2Fquestions%2F469738%2Fhow-to-suppress-stdout--stderr-from-a-shell-script-output",
"error": null,
"includePattern": "https://rightdao.com/search/redir*&url=*",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "$2",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "wikipedia.org > wikiless.org",
"exampleUrl": "https://en.wikipedia.org/wiki/Sidney_Poitier",
"exampleResult": "https://wikiless.org/wiki/Sidney_Poitier",
"error": null,
"includePattern": "https://en.wikipedia.org/wiki/*",
"excludePattern": "",
"patternDesc": "",
"redirectUrl": "https://wikiless.org/wiki/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "twitter.com > nitter.net",
"exampleUrl": "https://twitter.com/frank",
"exampleResult": "https://nitter.net/frank",
"error": null,
"includePattern": "https://twitter.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://nitter.net/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "twitter.com > bird.trom.tf",
"exampleUrl": "https://twitter.com/frank",
"exampleResult": "https://bird.trom.tf/frank",
"error": null,
"includePattern": "https://twitter.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://bird.trom.tf/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "twitter.com > nitter.snopyta.org",
"exampleUrl": "https://twitter.com/frank",
"exampleResult": "https://nitter.snopyta.org/frank",
"error": null,
"includePattern": "https://twitter.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://nitter.snopyta.org/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "twitter.com > nitter.42l.fr",
"exampleUrl": "https://twitter.com/frank",
"exampleResult": "https://nitter.42l.fr/frank",
"error": null,
"includePattern": "https://twitter.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://nitter.42l.fr/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "twitter.com > nitter.nixnet.services",
"exampleUrl": "https://twitter.com/frank",
"exampleResult": "https://nitter.nixnet.services/frank",
"error": null,
"includePattern": "https://twitter.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://nitter.nixnet.services/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "twitter.com > nitter.pussthecat.org",
"exampleUrl": "https://twitter.com/frank",
"exampleResult": "https://nitter.pussthecat.org/frank",
"error": null,
"includePattern": "https://twitter.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://nitter.pussthecat.org/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "instagram.com > bibliogram.art",
"exampleUrl": "https://www.instagram.com/digimediazone/",
"exampleResult": "https://bibliogram.art/u/digimediazone/",
"error": null,
"includePattern": "https://www.instagram.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://bibliogram.art/u/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": false,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "instagram.com > bibliogram.pussthecat.org",
"exampleUrl": "https://www.instagram.com/digimediazone/",
"exampleResult": "https://bibliogram.pussthecat.org/u/digimediazone/",
"error": null,
"includePattern": "https://www.instagram.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://bibliogram.pussthecat.org/u/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "instagram.com > bibliogram.snopyta.org",
"exampleUrl": "https://www.instagram.com/digimediazone/",
"exampleResult": "https://bibliogram.snopyta.org/u/digimediazone/",
"error": null,
"includePattern": "https://www.instagram.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://bibliogram.snopyta.org/u/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "instagram.com > bibliogram.nixnet.services",
"exampleUrl": "https://www.instagram.com/digimediazone/",
"exampleResult": "https://bibliogram.nixnet.services/u/digimediazone/",
"error": null,
"includePattern": "https://www.instagram.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://bibliogram.nixnet.services/u/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
},
{
"description": "instagram.com > bibliogram.hamster.dance",
"exampleUrl": "https://www.instagram.com/digimediazone/",
"exampleResult": "https://bibliogram.hamster.dance/u/digimediazone/",
"error": null,
"includePattern": "https://www.instagram.com/*",
"excludePattern": "",
"patternDesc": "instances: https://github.com/TeamPiped/Piped/wiki/Instances",
"redirectUrl": "https://bibliogram.hamster.dance/u/$1",
"patternType": "W",
"processMatches": "noProcessing",
"disabled": true,
"grouped": false,
"appliesTo": [
"main_frame"
]
}
]
}

Fixing stuff that's busted

Firefox doesn't remember its window size after restart

If you maximize the Firefox window and then restart Firefox, it may not open in a maximized state as you might expect. This annoyance can be caused when the preference privacy.resistFingerprinting is set to true (as it should be). This preference does a number of things to make it harder for websites to fingerprint your browser and one of them is to set a generic window size. If this bothers you, try the Maximize All Windows (Minimalist Version) add-on by 'ericchase'. While forcing Firefox to start in a maximized window may be preferable, understand that your browser will be much easier to fingerprint if JavaScript is enabled since the windows size is often quite unique.

Webpages don't fill the entire viewport (inner window)

When privacy.resistFingerprinting is set to true (as it should be), web content may not fill the entire viewport, also called the 'inner window'. The viewport is the part of the browser that displays webpages, not to be confused with the window described in the previous tweak which contains the entire browser. This behavior is controlled by a hidden preference, privacy.resistFingerprinting.letterboxing , that does not exist by default and which can be set to true or false . While not utilizing the entire viewport may be an annoyance, understand that disabling this setting is likely to greatly increase entropy if JavaScript is enabled, meaning your browser will be easier to fingerprint. If you still want to disable this protection, you can create the preference in about:config (boolean) or add it to your user.js or user-overrides.js and set it to false .

Troubleshooting problems with add-ons

If you notice a problem that you think may be related to an add-on, there are some simple steps you can take to troubleshoot the issue before contacting the developer. In my experience problems with add-ons are usually a result of a conflict with 1) a setting in prefs.js, 2) a setting in user.js, 3) another add-on, or 4) something in userchrome.css or usercontent.css. Whatever the case, the following information should help you to troubleshoot the issue.

If you suspect an add-on is giving you trouble...

  1. Backup your Firefox profile! Load about:profiles if you don't know where it's located, then exit Firefox and find your profile folder in your file manager and press Ctrl+C and Ctrl+V to make a copy. When you are prompted for a new name, just add -bak to the existing name.
  2. If you have any custom configuration files, such as a user.js, userChrome.css or userContent.css, rename them (add .bak to the existing name), then start Firefox and verify whether the problem still exists.
    1. If the problem no longer exists, go to the Troubleshooting preferences section below.
    2. If the problem still exists, continue with the next step.
  3. Start Firefox and load about:support by entering that in the address bar, then click 'Restart with Add-ons Disabled'.
  4. Open the about:addons page and, one by one, enable each add-on until the problem reappears, at which point you will know which add-on is causing the problem.
  5. Go to addons.mozilla.org and install a fresh copy of the problematic add-on and verify that the problem is still exists.
    1. If the problem no longer exists, your finished.
    2. If the problem still exists, submit a bug report to the add-on developer (see below).

How to submit a bug report like a pro

If you have a problem with an add-on, or with Firefox itself, you need to be able provide the developer with enough pertinent information so they are able to reproduce it, else they may simply ignore you. Comments like "it don't work" are useless to a developer and you shouldn't be surprised if they ridicule you for submitting such non-descriptive tripe. When describing the problem, be as brief as possible while still including every necessary detail. Here's a template which you can use for bug reports:

Operating system [name]
Firefox [version]
Add-on (if relevant) [name] [version] [link]
Affected webpage (if relevant) [URL]
Brief but accurate description of the problem...
What, if anything, you tried in order to solve the problem...
Precise steps to reproduce the problem...

With that information in hand, you need to find where the developer wants you to submit bug reports. If it's a buggy add-on, load up about:addons and see if there's a support link in the information for it by clicking the 'More' button. If there isn't, go to the add-on page at addons.mozilla.org and see if the developer provides a link to a support website (preferred!) or at least an email address. If they provide neither, then you're left with no other choice than to post your issue in the add-on comments, but do this only when no other option is available and don't down-vote the add-on. Lastly, make sure the title of your submission is descriptive of the problem. Titles like "bro its so borked LOL" are meaningless to a developer who is now more likely to disregard your issue since you just exposed yourself as a 12 year old slab-fondler.

Troubleshooting Firefox preferences

Problems resulting from settings in your prefs.js file can manifest in different ways, from breaking desired Firefox or extension functionality to causing web pages to not work properly or failing to load at all. Following is one method of troubleshooting preference issues for those who are not comfortable using the Firefox console, or where the console did not provide useful information. Though tedious, this method almost always works. You should have a decent code editor with syntax highlighting for editing the Firefox prefs.js file, such as Kate (Linux), or PSPad or Notepad++ (Windows).

  1. Start Firefox and enter about:profiles in the address bar.
  2. Create a new profile for testing, naming it something like '__TEST__' so it cannot be easily confused with your default profile. The new profile will become the default and we don't want that, so click the button below your original profile to make it the default.
  3. In the 'Root Directory' row, click the 'Open Directory' button for both your original and your testing profiles to open the folders in your file manager.
  4. Start Firefox using your testing profile. It may ask which profile to load since you now have more than one, but if it doesn't then load about:profiles again and select the option to open your testing profile in a new window.
  5. Now verify that the problem still exists, then exit Firefox. If the problem no longer exists, continue with the next step. If it does, troubleshooting the problem is beyond the scope of this troubleshooter, suffice to say that it may due to an add-on or custom CSS in your Firefox /chrome folder if you have one, etc..
  6. With Firefox closed, copy (Ctrl+C) the prefs.js file in your original profile folder and paste it (Ctrl+V) in your testing profile folder, overwriting the existing one.
  7. Repeat step 5. If the problem reappears you have verified it is due to a preference in the prefs.js file. If it does not, and you're using a custom user.js file, such as the 'arkenfox' user.js, repeat step 6 with your user.js. If it the problem now reappears, you know the trouble lies in in user.js, not prefs.js. If the problem is not reproduced then it is beyond the scope of this troubleshooter.
  8. With Firefox closed, open the prefs.js file (or user.js if that's where the problem lies) from your testing profile in your code editor and select roughly half of the contents of the file, making sure your selection starts at the beginning of a line and ends at the end of a line in order to avoid further problems. Next, cut (Ctrl+X) the selection (don't just delete it) and save the file. If your editor complains it is important that you ignore the warning and force the save. If it automatically reloads the file, you will need to disable that behavior in its settings.
  9. Keep repeating steps 5 and 8 until the issue disappears, at which point you know the preference causing the problem is stored in your clipboard (the last section you cut from prefs.js or user.js). Move on to the next step.
  10. Select all of the contents in prefs.js (or user.js) (Ctrl+A) and delete (not cut) the selection, then paste (Ctrl+V) the contents of your clipboard and save the file, again being sure to force the save if your code editor complains.
  11. Again, continue repeating steps 5 and 8 until you have narrowed down the problem to the single preference responsible.
  12. Once the problematic preference is isolated you can copy it to your user.js file (or user-overrides.js file if you have one) in your default profile and change it's value there after which you can verify the problem was solved by running Firefox with your default profile.

Once you have solved the problem in your default profile, you can delete your testing profile from about:profiles or from the profile loading prompt when Firefox starts.

More Firefox stuff

Other articles i've written about Firefox and its derivatives can be found on the Everything Firefox page.

For more CSS tweaks, see:

General Firefox stuff:

Recent changes

  • edit 'Troubleshooting Firefox preferences' section to include info for a custom user.js
  • trivial edits
  • updated code in the 'Display website content hidden by JavaScript' section

YAMR (Yet Another Mozilla Rant) - Battling "fake news"

This is it folks. This is a 'rotten cherry on the top of the stinking cake' moment with a big fat pit right in the middle of it.

I recently learned that the multi-million dollar Mozilla corporation has decided that i (and you) are idiots; that we are incapable of analyzing news stories in order to determine whether they are creditable; that we should be reading the Wall Street Journal and the New York Times and the like to get our "news". And so Mozilla has decided that it is they, the developers of a freaking web browser, that should step in to help steer us back on the right track by saving us from ... FAKE NEWS!

Yes, on 8 August, 2017, the Mozilla foundation launched their incarnation of the Great Firewall of China by deciding to combat "fake news" via The Mozilla Information Trust Initiative, aka MITI. And what news does the Mozilla Information Trust Initiative consider "fake news"? Well, apparently any news that doesn't originate from a mainstream source:

Imagine this: Two news articles are shared simultaneously online.

The first is a deeply reported and thoroughly fact checked story from a credible news-gathering organization. Perhaps Le Monde, the Wall Street Journal, or Süddeutsche Zeitung.

THE WALL STREET JOURNAL!?!? "... a deeply reported and thoroughly fact checked story ...". Are You Kidding Me Right Now!

Let's just have a quick look at the track record of the Wall Street Journal which, by the way, is essentially as biased and corrupt as any other mainstream government/corporate mouthpiece:

20 Reasons Not to Trust the Journal Editorial Page | FAIR (1-Sep-1995)

When Anita Hill took a polygraph test to try to substantiate her charges of sexual harassment against Clarence Thomas, the Wall Street Journal attacked her in an editorial (10/15/91) titled “Credibility Gulch: “Lie detector tests are so unreliable they are rarely allowed as evidence in court.

But just eight months later (6/9/92), when the Journal argued against an Iran/Contra perjury indictment of former secretary of Defense (and editorial page contributor) Caspar Weinberger, this was its main evidence for Weinberger’s innocence: “Mr. Weinberger has taken and passed a lie-detector test on the matter.

[...]

The Continuing Decline of McDonald’s : The Corbett Report (10-Jan-2017)

The global giant’s [McDonald's] influential PR machine has used sleight-of-hand and other tricks to make this restructuring look like a smash success. They used their cheerleaders at the Wall Street Journal to hype “stronger-than-expected profit and sales figures and their boosters at US News & World Report to hype some highly-selective earnings comparisons suggesting that this “turnaround is, to use the WSJ’s phrase, “sustainable.

But one doesn’t have to scratch too hard to reveal the rusty reality beneath this PR paint job.

Wall Street Journal circulation scam claims senior Murdoch executive | Media | The Guardian (12-Oct-2011)

One of Rupert Murdoch's most senior European executives has resigned following Guardian inquiries about a circulation scam at News Corporation's flagship newspaper, the Wall Street Journal.

The Guardian found evidence that the Journal had been channelling money through European companies in order to secretly buy thousands of copies of its own paper at a knock-down rate, misleading readers and advertisers about the Journal's true circulation.

WSJ sourced Obama skinny quotes from Yahoo Message Boards (4-Aug-2008)

A journalist at the Wall Street Journal has been caught sourcing quotes for an article on Barak Obama being too thin to be President from a Yahoo Message Board.

In the article Too Fit to be President?, Wall Street Journal political correspondent Amy Chozick endeavored in the best News Corp tabloid style to create a story around the rather bizarre notion that voters wouldn’t vote for Obama because he was too thin, saying that “some Americans wondering whether he is truly like them.

In the piece, she includes the quote “I won’t vote for any beanpole guy, and originally didn’t attribute the source. Sadly No reports that the source was a Yahoo Message Board where Chozick actually asked for negative comments using her own name:

Plagiarizing? If the President Can Do it, Why Can't We? - Lawyers.com (article removed) (28-Dec-2009)

An online columnist for the Wall Street Journal was caught plagiarizing. Freelance writer Mona Sarika, who wrote the “New Global Indian online column, used content from the Washington Post, Little India, India Today and San Francisco magazine.

Sarika copied direct quotes from other articles, without providing sources. She also changed the original speakers’ names apparently making up new ones.

WSJ Fakes a Green Shift Toward Nuclear Power | FAIR (24-Jun-2016)

The Wall Street Journal has a long history of editorial page support for nuclear power (4/17/01; 8/5/09; 11/9/09; 4/6/11; 5/24/13, to cite but a few) and against wind power (5/22/06, 3/1/10, 8/24/10, 11/8/12, 5/18/14 and others). In publishing this piece as edited, perhaps it is telling a story it wishes were true. As Harder’s article itself acknowledges, nuclear power is in decline due to a combination of economics, displacement by renewables and opposition. The green groups’ supposed change of heart “comes at a critical time, as several financially struggling reactors are set to shut down even as other reactors already have, due to the low price of natural gas and state policies “that favor renewables over nuclear power. As if to prove that point, the story provided a list of a dozen reactors that have been or will soon be shut down.

At Wall Street Journal, Government-Enforced Monopolies = ‘Free Market’ | FAIR (22-Jul-2015)

Ingram bizarrely touts the “flowing pipeline of new wonder drugs spurred by a free market, which he warns will be stopped by “government price controls. This juxtaposition is bizarre, because patent monopolies are 180 degrees at odds with the free market. These monopolies are a government policy to provide incentives for innovation. Ingram obviously likes this policy, but that doesn’t make it the “free market.

Yes, Wall Street Journal, It's Possible to Be Not Generous Enough | FAIR (10-Mar-2015)

The Wall Street Journal is soon to run a piece on improper denials of disability claims.

That’s inevitable, since any fair-minded newspaper that ran a column on improper approvals would surely want to balance it out.

At Wall Street Journal, Reporting Assault Through Israel’s Eyes | FAIR (13-Jul-2013)

In a news report on the Israeli military’s investigation of its own deadly raid on the Gaza aid flotilla, the Wall Street Journal (7/13/10) passes off as fact, with no qualifier, the Israeli government’s claim that members of IHH, a Turkish humanitarian organization, “attacked the Israeli soldiers as they boarded the ship.

On Islamist Terrorism, WSJ Entitled to Its Own Opinions—But Not Its Own Facts | FAIR (16-Mar-2011)

This is a complete misrepresentation of the Rand report. The report is exclusively about Muslim radicalization and jihadism, not about domestic terrorism in general, as the WSJ would lead you to believe—if anything, it’s surprising that there are any non-Muslim jihadist plotters. (The exceptions were two men who agreed for their own secular purposes to collaborate with undercover FBI informants purporting to work for Al-Qaeda.)

The vast majority of “homegrown terrorist attackers—those of all ideologies who successfully carry out an attack—are not Muslim, the report finds: Of the “83 terrorist attacks in the United States between 9/11 and the end of 2009, only three…were clearly connected with the jihadist cause.

I could go on and on for months and months digging out the literal fake news pumped out by the Wall Street Journal or any other mainstream publication, but you can do that yourself if you're so inclined. The point is, it is the mainstream media that is garbage; that is FAKE NEWS. Why? Simple: greed. Whenever there is greed involved -- greed for money or greed for power or greed for control -- there will always be corruption. Now granted, there is certainly boatloads of disinformation and misinformation all over the world wide web, but mixed in there are also some highly ethical people and small organizations that actually report the facts and back them with references. And who the hell is a multi-million dollar corporation (Mozilla) to dictate to you or i who is creditable and who is not? I have been watching probably an average of 50-100 news sites almost daily for many years and as a result of studying these sites and fact checking their content, i can confidently suggest some real news sites to follow if you're interested:

How about NPR, Mozilla? Are they a creditable resource? I'll bet they are in your eyes.

It is sites like those listed above that are actively being targeted by war-mongering, self-serving, psychopathic globalists who profit from endless war and stunting the development of the human species. The truth is irrelevant; all that matters is that you and i swallow whatever story it is that supports whatever agenda is being promoted at the moment by whatever government or corporation promoting it and now, to my surprise, even Mozilla has joined the ranks of those that want to control what information is available on the web, an architecture that was built with the free flow of information at its heart.

There must be some sort of funding that is being dished out to those willing to get on the "fake news" bandwagon. There is quite obviously a huge push to combat so-called "fake news" and return the masses to digesting the puke that spews out of the rancid bellies of corporate giants like the Wall Street Journal, the New York Times and all the rest of the mainstream presstitutes. Facebook, Google, Youtube - they are all doing the same thing. Are they getting paid to censor? Is Mozilla getting paid to take part in this? I don't know, but i just may dig in and find out one of these days.

From The Mozilla Information Trust Initiative article:

This is why we’re launching MITI. We’re investing in people, programs, and projects that disrupt misinformation online.

Why Mozilla? The spread of misinformation violates nearly every tenet of the Mozilla Manifesto, our guiding doctrine.

Disrupt? So you want to use your corporate leverage to "disrupt" the flow of information? Sounds a lot like censorship, doesn't it? Is that the principle on which the internet was built? From the Mozilla Manifesto:

The Internet is a global public resource that must remain open and accessible.

Well tell us Mozilla, how is it that the internet can remain open and equally accessible when corporate gate-keepers intend to steer the rest of us in a direction that benefits the powerful few and leads to total information control for the rest of us?

I think i'll take their survey once again. In the mean time, go screw yourself Mozilla - i'll do my own homework and decide what's fake news and what isn't.