Skip to content
🪵 Flint is early and experimental. Pull up a log, things are still being whittled.

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.

The Flint logo: a flaming heart atop a squiggly underline

🏕️ Get started in 10 seconds

Try Flint on any project

Pick your favorite fire-starter:

Terminal window
npx flint

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.

Get started →

🌲 What's in the pack

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.

📖 The trail map

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.

  • anyAssignments

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

    tslogical
  • unnecessaryComparisons

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

    tslogical
  • deprecated

    Disallow using code marked as @deprecated.

    tslogical
  • caseFallthroughs

    Reports switch case clauses that fall through unexpectedly.

    tslogical
  • arrayIncludes

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

    tsstylistic
  • unnecessaryTernaries

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

    tsstylistic
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.