# Stylus: a userstyles manager for restyling sites without analytics

> Stylus is a browser extension that applies CSS userstyles to websites, installable from Chrome Web Store, Mozilla addons or an unpacked MV2 zip. It exists because its predecessor Stylish was sold to a web analytics company.

**openstyles/stylus** — Stylus - Userstyles Manager

- Repository: https://github.com/openstyles/stylus
- Website: https://add0n.com/stylus.html
- Stars: 6,913 · Forks: 382
- Language: JavaScript
- License: GPL-3.0
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/openstyles-stylus

## The problem Stylus solves, and the history behind it

Stylus restyles websites via CSS themes. That is the whole product: a browser extension that injects stylesheets into pages you do not own, so you can change colors, hide elements, widen a reading column or replace a font stack without waiting for the site's maintainers. It runs on Chrome, Firefox and any Chromium-based browser.

The README is explicit about why the project exists. Stylus was created "solely because the original Stylish extension was sold to a Web analytics company," and no analytics or tracking is described as the foundational principle. That origin story matters more than it might seem. A userstyle manager sits in a privileged position: it sees every page you load and it can rewrite any of them. A manager that phones home is a different risk class from one that does not, and the project's stated position is that it does not.

The audience is narrower than "everyone who uses a browser." It is people who already know what a CSS selector is, or who are willing to learn, plus people who just want to install other people's themes from a gallery. The README points at USW, the USO archive and greasyfork for the latter group, and the popup UI has a Find button that opens that search inside the extension.

## How the extension applies a style and where the code lives

The architecture is a standard WebExtension split. A content script is injected into pages; the README describes it as lightweight, roughly 10kB, and says it runs in about a millisecond. Everything heavier, the manager UI, the editor, the options page and sync, lives outside the page context.

The repository layout matches that split. Source sits under src/, build tooling under tools/, with babel.config.js, postcss.config.js and eslint.config.js at the top level and a pnpm-workspace.yaml indicating pnpm as the package manager. The package.json lists the runtime dependencies the extension actually ships: codemirror 5.65.20 for the editor, less for LESS compilation, stylus-lang-bundle for Stylus syntax, stylelint-bundle 17.15.0 and csslint-mod for linting, usercss-meta for parsing UserCSS headers, and db-to-cloud 0.8.1, which is what backs the Dropbox, GDrive, OneDrive and WebDAV sync.

That dependency list tells you something the marketing copy would not: the editor is not a thin textarea. LESS and Stylus are compiled in the extension, and two linters run against your CSS with customizable rules. The README also documents live reload for writing styles in an external IDE, which means the intended workflow for anything non-trivial is to edit in your own editor and let Stylus track the output file.

## Installing Stylus on Chrome, Firefox or an older Chromium build

Stylus is distributed as a packaged extension, not as an npm package you run. The README lists three release paths. For modern Chrome (v128 and later) and Chromium-based browsers like Brave, Opera and Vivaldi, use the Chrome Web Store listing or the beta listing. For Firefox and other Gecko browsers, use the Mozilla addons listing, or the beta as an xpi file from the GitHub releases page. For older Chromium-based browsers that only support ManifestV2, download the zip from the releases page whose name carries the -mv2 suffix and load it as an unpacked extension.

There is no install command to copy. The closest thing to one is the nightly build path, which the README describes as three steps: pick a workflow entry in the CI workflow page, download the file from Artifacts (this requires a github.com account), and install it following the wiki page on installing Stylus from GitHub.

For a first real use, the README gives a four-step flow through the popup. Open the extension popup, click Find, click the screenshot of a style to apply it to the current site, and click the screenshot again to uninstall it. That toggle behaviour is worth knowing before you start: the same control installs and removes, so a second click is not a confirmation step.

If you write your own style instead, the popup and manager expose a built-in editor. A minimal UserCSS header is what makes a style installable from a raw plain text URL, and the README points to the UserCSS wiki page for the metadata format rather than spelling it out in the repository README.

## The trade-offs: galleries, auto-update and ManifestV2

The first limitation is not technical, it is editorial. Stylus does not curate or review the styles it can install. The README sends you to external galleries, and a userstyle is CSS authored by a stranger that will be injected into pages you visit. CSS alone is less dangerous than JavaScript, but a style that hides a security indicator or rewrites a login form's layout is still a problem you have to notice yourself. The extension gives you a manager and a linter, not a trust model.

Auto-update is the second trade-off, and it is the sharp edge of the first. The README states that styles auto-update, configurable per style and globally in the options. That is convenient, and it also means a style you vetted last month can change without you reading the diff. The per-style setting exists precisely so you can turn it off for the styles you care about; leaving it on globally is a choice with consequences.

The third constraint is packaging. The README directs older Chromium-based browsers to a -mv2 zip, which is an acknowledgement that the extension's reach depends on which manifest version your browser still accepts. If you are pinned to a browser that has dropped ManifestV2 and you cannot use the store version, that path is closed.

Finally, the README does not document rollback for a bad style update, nor does it describe a review queue before an installed style changes. If you need either, you are configuring around the product rather than using it as designed.

## How Stylus differs from running a custom stylesheet in your browser

The obvious alternative is not another extension but the browser itself. Firefox supports a userContent.css file, and Chromium has historically supported a Custom.css loaded via a command-line flag. Both apply CSS to pages without any extension at all.

The difference is in what you give up. A browser-level stylesheet is one file you edit by hand, with no per-site enable toggle, no library of third-party styles, no editor with LESS or Stylus compilation, no linting, and no sync to Dropbox, GDrive, OneDrive or WebDAV. It also cannot install a style from a raw URL the way a UserCSS link does, and it has no auto-update mechanism, which some people would call an advantage.

Stylus trades that simplicity for management: a list of styles, per-style configuration, a Find button that reaches galleries, and a JSON backup format the README says is compatible with other userstyles managers. If your need is a handful of rules for three sites, the browser's own stylesheet is less machinery. If your need is dozens of styles across many sites, with updates and a way to move them between machines, the extension is doing work you would otherwise do by hand.

## Maintenance, releases and the GPL-3.0 licence

The repository is not archived, and the last push was on 2026-09-20, two days before this writing. Release v2.4.14 is dated 2026-09-20, following v2.4.13 on 2026-09-14 and v2.4.12 on 2026-09-10. The package.json version is 2.4.14, matching the release tag. On the evidence of those dates the project ships frequently, and the cadence suggests a maintainer team that is responding to something, whether browser API changes or bug reports.

Upgrade cost for a user is close to zero: store installs update themselves, and the beta channels exist for people who want changes earlier. The cost lands on anyone building from source. The toolchain is not small. It uses pnpm workspaces, Babel 8, ESLint 10, webpack 5 with a stack of loaders and plugins, PostCSS, Husky for git hooks, and a build documented in BUILD.md. There is also a translation pipeline at Transifex and a CONTRIBUTING.md with guidelines, both referenced from the README.

The licence is GPL-3.0-only per package.json, with the README stating GPLv3 and carrying copyright lines for the Stylus Team (2017-2025) and for Jason Barnabe (2005-2014) covering diminishing parts of the original Stylish. The README also notes separate licences for modified external libraries under src/vendor-overwrites. If you fork Stylus or redistribute a modified build, the copyleft terms and those vendored licences are the two things to read before you ship. This is not legal advice; read the LICENSE file and the vendor-overwrites directory yourself.

## Conclusion

Adopt Stylus if you want to apply or write CSS overrides on sites you do not control, and you accept that you must pick styles from third-party galleries yourself. Do not adopt it if you need a managed, centrally audited deployment, or if you need a browser older than the ManifestV2 builds cover. Before installing, verify which release channel matches your browser version, and read the UserCSS wiki page before writing your first style, because the customization variables and the live reload setup are documented there rather than in the README.

## FAQ

### How do I install the Stylus extension?

Install from the Chrome Web Store for modern Chrome and Chromium-based browsers, or from Mozilla addons for Firefox and Gecko browsers. Older Chromium-based browsers that only support ManifestV2 need the zip from the releases page whose name carries the -mv2 suffix, loaded as an unpacked extension.

### How do I use the Stylus extension to apply a theme to a site?

Open the popup, click the Find button to search external galleries, then click a style's screenshot to apply it to the current site. Clicking the same screenshot again uninstalls the style.

### Does Stylus support UserCSS styles?

Yes. The README lists UserCSS styles with advanced customization as a feature, installable from any raw plain text URL, and points to the UserCSS wiki page for the metadata format.

### Can Stylus sync my styles between computers?

The README states that cloud sync is supported for Dropbox, GDrive, OneDrive or any WebDAV-compatible server, backed by the db-to-cloud dependency in package.json. Backup to a JSON file compatible with other userstyles managers is also listed.

### Does Stylus collect analytics or track me?

The README states that there is no analytics or tracking, and describes this as the foundational principle because Stylus was created after the original Stylish extension was sold to a Web analytics company.

### Which browsers does Stylus work on?

The README lists Chrome, Firefox and any Chromium-based browsers, naming Brave, Opera and Vivaldi for the Chrome Web Store path. Firefox and other Gecko-based browsers use the Mozilla addons listing.

## Sources

- [License: GPL-3.0](https://github.com/openstyles/stylus/blob/master/LICENSE)
- [openstyles/stylus on GitHub](https://github.com/openstyles/stylus)
- [Project website](https://add0n.com/stylus.html)
- [README](https://github.com/openstyles/stylus/blob/master/README.md)
- [Releases](https://github.com/openstyles/stylus/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/openstyles-stylus
