- JavaScript 83%
- CSS 5.2%
- HTML 5.1%
- WebAssembly 4.7%
- Shell 1.6%
- Other 0.4%
nuMatrix Pipeline status
Fork of uMatrix by Raymond Hill (https://github.com/gorhill/uMatrix).
Downloads
Download Firefox extension here: https://addons.mozilla.org/en-US/firefox/addon/numatrix/
Development
Prerequisites: Node.js >= 18 (see .nvmrc), bash, python3, and zip for packaging. Chromium/Chrome and/or Firefox for the live dev launchers.
npm install # one-time, installs the build/dev toolchain
Build unpacked extensions into dist/build/:
npm run build # both browsers
npm run build:firefox # -> dist/build/nuMatrix.firefox
npm run build:chromium # -> dist/build/nuMatrix.chromium
Build and launch a fresh browser profile with nuMatrix already installed (a throwaway profile — your real one is untouched):
npm run dev:firefox # builds, then web-ext launches Firefox
npm run dev:chromium # builds, then launches ungoogled-chromium with the extension loaded
Point the launchers at a specific binary if needed:
FIREFOX_BIN=/path/to/firefox npm run dev:firefox
CHROMIUM_BIN=google-chrome-stable npm run dev:chromium
Create distributable packages in dist/build/:
npm run package # everything: Firefox .xpi + .zip, Chrome .zip + .crx
npm run package:firefox # -> nuMatrix.firefox.xpi + nuMatrix.firefox.zip
npm run package:chromium # -> nuMatrix.chromium.zip + nuMatrix.chromium.crx
The .crx is signed with dist/nuMatrix.pem, generated on first run. Keep that key
safe and out of the repo — it is the extension's identity; losing it means browsers
treat a re-signed build as a different extension. Override the signing key or browser
binary with NUMATRIX_PEM / CHROMIUM_BIN.
Other scripts: npm run lint (and lint:fix), npm run clean.
Changes
The only breaking change (to my knowledge) is that this PR by Raymond Hill was merged into master. One of the changes is that 'xhr' is renamed to 'fetch', so rules will need to be updated accordingly.
Other than the above, and fixing a few bugs here and there, here are some other things that have been added/changed since the last release of uMatrix (see the wiki for details):
Matrix & rules:
- Font column in the matrix
- Per-URL rules: right-click a cell to block/allow individual resource URLs
- Scope isolation switch, to stop a site inheriting rules from the global scope
- Scope-inheritance indicator (triangle marking cells whose rule comes from a parent scope)
- Keyboard navigation, plus a configurable shortcut to open the popup
Privacy & blocking:
- Block WebRTC per-site (CSP on Chromium, content-script on Firefox)
- Tracking-parameter removal from
$removeparamlists, with a per-site opt-out switch - 'Temporarily Allow' button when visiting a blocked URL
- Display ambigious punycode URLs as ASCII
- Clearing blocked hostnames' storage now also covers session storage and IndexedDB
- Handling beacons as part of hyperlink auditing
- Added new default blocklists
Dashboard & UI:
- 'Assets' pane renamed to 'Filter lists', now showing tracking-parameter counts and custom list titles
- Logger shows which filter list blocked a request
- Colourblind friendly toolbar icon
- Timestamped backup/rule exports, and a warning when importing a file with no valid rules
Other forks
I'll be trying to incorporate changes from other forks in this fork. Feel free to submit an issue or PR if I'm missing any other forks.
nuTensor by geekprojects - 24 commits ahead of original uMatrix. All feature changes are in nuMatrix
nuTensor by nikobockerman - up to date with nuTensor by geekprojects
nuTensor.d by SteelEyeballSac1 - 33 commits aheaad of nuTensor by geekprojects. Pretty much just renaming, changing blocklists, changing images, and other stuff not affecting functionality (see here)
Original README below
uMatrix
Definitely for advanced users.
Keep Github issues for actual bugs. User support is /r/uMatrix.
Forked and refactored from HTTP Switchboard.
Install manually the latest release, or install from:
- Firefox AMO
- To help find issues with ongoing development: uMatrix dev build in
Releases (click the latest
uMatrix.webext.signed.xpilink of the last pre-release.)
- To help find issues with ongoing development: uMatrix dev build in
Releases (click the latest
- Chrome store
- To help find issues with ongoing development: uMatrix dev build in Chrome store
- Opera store
You may contribute with translation work:
- For in-app strings, on Crowdin: uMatrix on Crowdin.
- For description (to be used in AMO, Chrome store, etc.), submit a pull request. Reference description is here ( feel free to improve as you wish, I am not a writer).
HTTP Switchboard's documentation is still relevant, except for uMatrix's differences with HTTP Switchboard.
You may contribute with documentation: uMatrix's wiki.
Warnings
Regarding broken sites
uMatrix does not guarantee that sites will work fine: it is for advanced users who can figure how to un-break sites, because essentially uMatrix is a firewall which works in relaxed block-all/allow-exceptionally mode out of the box: it is not unexpected that sites will break.
So this means do not file issues to report broken sites when the sites are broken because uMatrix does its job as expected. I will close any such issue without further comment.
Using uMatrix logger is key to un-break sites: the logger will show you all that uMatrix does internally.
I expect there will be community driven efforts for users to help each others. If uMatrix had a home, I would probably set up a forum, but I do not plan for such thing, I really just want to code, not manage web sites. If you need help to un-break a site when using uMatrix, you can try Wilders Security, where you are likely to receive help if needed, whether by me or other users.
uMatrix can be set to work
in allow-all/block-exceptionally
mode with a single click on the all cell in the global scope *, if you prefer to work this way. This will of course
break less sites, but you would then lose all the benefits which comes with block-all/allow-exceptionally mode -- though
you will still benefit from the 62,000+ blacklisted hostnames by default.