NPM version Build Status Build status NPM Downloads Backers on Open Collective Sponsors on Open Collective

A mighty, modern linter that helps you avoid errors and enforce conventions in your styles.


It's mighty because it:

  • has over 160 built-in rules to catch errors, apply limits and enforce stylistic conventions
  • understands the latest CSS syntax including custom properties and level 4 selectors
  • parses CSS-like syntaxes like SCSS, Sass, Less and SugarSS
  • extracts embedded styles from HTML, markdown and CSS-in-JS object & template literals
  • automatically fixes some violations (experimental feature)
  • supports plugins so you can create your own rules or make use of plugins written by the community
  • is well tested with over 10000 unit tests
  • supports shareable configs that you can extend or create your own of
  • is unopinionated so you can tailor the linter to your exact needs
  • has a growing community and is used by Facebook, GitHub and WordPress

#Example output


#Getting started

It's easy to get started.

First, decide how you want to use stylelint:

Then, create your configuration object.

You can either extend a shared configuration or craft your own.

#Extend a shared configuration

It's the quickest way to get started. We suggest extending either:

The recommended one turns on the possible error rules. The standard config builds on it by turning on over 60 of the stylistic rules with sensible defaults. We update these configs with each release of stylelint, so it's easy to stay up to date.

However, you can use a community config, for example stylelint-config-recommended-scss, if you use non-standard syntax like @if, @extends etc.

You can always override rules after extending any config. You may also want to add some rules that limit language features as these will be specific to your team and/or project.

#Craft your own config

Alternatively, you can learn about the rules and then either:


You'll find detailed information on customising stylelint in our guides:

#Need help?

Read our FAQ first. If the answer to your problem isn't there, then post it on stackoverflow.

Please create a new issue if you think you've found a bug or if you have feature request.

If you're upgrading, read our CHANGELOG to learn what changes to expect in the latest version.

#Help out

There is a lot of work to do. Please help out in any way. You can:

If you're interested in the project vision, you can read our VISION document.

#Semantic Versioning Policy

We have a semantic versioning policy. Any minor update may report more errors than the previous release. As such, we recommend using the tilde (~) in package.json e.g. "stylelint": "~7.2.0" to guarantee the results of your builds.


The MIT License.


This project exists thanks to all these people. Contribute.


Thank you to all our backers! Become a backer.


Support this project by becoming a sponsor. Your logo will show up here with a link to your website. Become a sponsor.