Early Development: lintal is not yet recommended for general use. An alpha version will be published in late Q1 2026.
Built in Rust, powered by Orchard

A fast Java linter with auto-fix support

lintal reads your existing checkstyle.xml configuration and can automatically fix many violations that checkstyle can only detect. Built for AI coding workflows where formatting matters.
$
brew install eleventy7/lintal/lintal
Features

Everything you need to keep your Java code clean

lintal combines the familiarity of checkstyle configuration with the speed of native compilation and the power of automatic fixes.

5-8x Faster

Native binary with no JVM startup overhead. Parallel file processing utilizes all CPU cores for maximum throughput.

Auto-Fix Support

Automatically fix whitespace, brace placement, modifier order, unused imports, and more. No more manual formatting.

See examples

Checkstyle Compatible

Reads your existing checkstyle.xml configuration. All 86 implemented rules validated against checkstyle's own test suite.

Performance

Significantly faster than checkstyle

Benchmarked against Checkstyle 13.2.0 with 48 of lintal's 86 supported rules including Indentation and Naming. 10 runs each after warmup.
Agrona289 files
8.1x faster
Checkstyle
1.60s
lintal
0.20s
Artio726 files
6.8x faster
Checkstyle
2.77s
lintal
0.41s
Aeron®935 files
5.5x faster
Checkstyle
4.97s
lintal
0.90s
Checkstyle
lintal
Run benchmarks yourself: mise run benchmark
86 Rules

Targeting 100% checkstyle compatibility

All rules are validated against checkstyle's own test suite and achieve zero false positives on real-world projects.
Safe auto-fix
Unsafe fix (--unsafe-fixes)

Whitespace (16)

  • WhitespaceAround
  • WhitespaceAfter
  • NoWhitespaceAfter
  • NoWhitespaceBefore
  • SingleSpaceSeparator
  • ParenPad
  • TypecastParenPad
  • MethodParamPad
  • EmptyForInitializerPad
  • FileTabCharacter
  • GenericWhitespace
  • OperatorWrap
  • EmptyLineSeparator
  • Indentation
  • NoLineWrap
  • SeparatorWrap

Blocks (6)

  • LeftCurly
  • RightCurly
  • NeedBraces
  • EmptyBlock
  • EmptyCatchBlock
  • AvoidNestedBlocks

Modifiers (5)

  • ModifierOrder
  • RedundantModifier
  • FinalParameters
  • FinalLocalVariable
  • FinalClass

Coding (20)

  • CovariantEquals
  • DeclarationOrder
  • DefaultComesLast
  • EmptyStatement
  • EqualsHashCode
  • FallThrough
  • HiddenField
  • IllegalCatch
  • IllegalThrows
  • IllegalType
  • InnerAssignment
  • MissingSwitchDefault
  • MultipleVariableDeclarations
  • NestedTryDepth
  • OneStatementPerLine
  • PackageDeclaration
  • SimplifyBooleanExpression
  • SimplifyBooleanReturn
  • StringLiteralEquality
  • UnnecessaryParentheses

Naming (9)

  • ConstantName
  • TypeName
  • MethodName
  • MemberName
  • ParameterName
  • LocalVariableName
  • LocalFinalVariableName
  • StaticVariableName
  • PackageName

Imports (5)

  • AvoidStarImport
  • IllegalImport
  • ImportOrder
  • UnusedImports
  • RedundantImport

Javadoc (7)

  • JavadocMethod
  • JavadocStyle
  • JavadocType
  • JavadocVariable
  • MissingJavadocMethod
  • MissingJavadocType
  • MissingJavadocPackage

Design (4)

  • HideUtilityClassConstructor
  • MutableException
  • OneTopLevelClass
  • VisibilityModifier

Sizes (4)

  • FileLength
  • LineLength
  • MethodLength
  • ParameterNumber

Regexp (3)

  • Regexp
  • RegexpHeader
  • RegexpSinglelineJava

Miscellaneous (5)

  • UpperEll
  • ArrayTypeStyle
  • NewlineAtEndOfFile
  • DescendantToken
  • TodoComment

Annotation (1)

  • MissingOverride

Metrics (1)

  • CyclomaticComplexity
Installation

Get started in seconds

lintal supports macOS and Linux. Choose your preferred installation method.

Homebrew

$
brew tap eleventy7/lintal && brew install lintal

mise

$
mise use ubi:eleventy7/lintal

Build from source

$
cargo install --path crates/lintal
Usage

Simple, familiar commands

Check files for violations

$
lintal check src/

Fix violations automatically

$
lintal fix src/

Use a specific config

$
lintal check src/ --config path/to/checkstyle.xml

Preview fixes without applying

$
lintal fix src/ --diff

Apply unsafe fixes (e.g. stub javadoc)

$
lintal fix src/ --unsafe-fixes

Questions & Answers

Ready to speed up your Java linting?

lintal is open source under the MIT license. Star us on GitHub or report issues.