Skip to content
Flint is experimental and not yet recommended for production projects.

Flint:
A fast, friendly linter
for JavaScript, TypeScript, and more.

Flint is an experimental new "hybrid" linter that combines the performance of modern dev tooling with best-in-class comprehensive developer experience.

npm i -D flint
The Flint logo: a flaming heart atop a squiggly underline

Try Flint on any project

Frustrated with slow linting that doesn't catch what you care about? Or maybe your linter is fast, but doesn't lint everything you think it should? Give Flint a shot.

Terminal window
$ flint
Linting with flint.config.ts...
fixtures/src/with-issues.ts
2:2 Debugger statements should not be used in production code. ts/debuggerStatements
✖ Found 1 report across 1 file.
Terminal window
$ flint
Linting with flint.config.ts...
fixtures/src/with-issues.ts
2:2 Debugger statements should not be used in production code. ts/debuggerStatements
✖ Found 1 report across 1 file.
Get started →

Everything you need to guide you

Flint learns from years of web tooling to be your new North Star for lovely linting.

cozy defaults

Toasty by default

Sensible rules right out of the bag. No config wrangling — just unzip, light the fire, and start linting.

fast & cached

Always points home

Intelligent caching and CI coordination keep duplicate jobs from wandering off-trail. Your runs finish faster.

typed power

Type-checked shelter

Lint rules powered by the full TypeScript type checker. They catch the kind of bugs that hide under tent flaps.

clear config

Bright, readable config

Configs you can actually read by lantern-light. Powerful when you need it, quiet when you don't.

Hundreds of rules, hand-picked & happy.

Each rule comes with a friendly explanation, real-world examples, and an autofix when we can manage it. No cryptic codes. No lecture from the scout-master.

  • Reports assigning a value with type any to variables and properties.

  • Reports comparisons that are always true, always false, or can be simplified.

  • Disallow using code marked as @deprecated.

  • Reports switch case clauses that fall through unexpectedly.

  • Reports using .indexOf() comparisons that can be replaced with .includes().

  • Reports ternary expressions that can be simplified to boolean expressions or logical operators

The Flint logo: a flaming heart atop a squiggly underline

Gather 'round, friend.

Flint is built in the open by a tiny crew who really, really like cool code and warm drinks. Come hang out.

Thank you to our sponsors

Flint can't happen without the generous support of these wonderful folks.

Financial sponsors allow us to keep development of Flint going, including maintaining and improving the project, providing support to users, and pushing web ecosystem tooling forward with advances in great typed static analysis and holistically designed linting.