Skip to content
SPECIFICTION
Get listed

cfn-lint

github.com

Free plan WindowsmacOSLinuxSelf-hosted
Visit github.com
Spec score 8.1 #8 of 28 in Infrastructure Testing Tools

What it is

cfn-lint is a free, open-source validator for AWS CloudFormation YAML and JSON templates. It checks templates against resource provider schemas and applies additional rules, including validation of property values and best practices. AWS Serverless Application Model templates are processed after transformation with AWS SAM. Users can configure built-in checks through command-line options, configuration files, or CloudFormation template metadata, and can add custom rules. Results can be emitted as quiet, parseable, JSON, JUnit, pretty, or SARIF output. Installation options documented by the project include pip, Homebrew for macOS, and Docker; supported Python versions are 3.10 through 3.14. Listed integrations include Atom, Emacs, NeoVim/Vim, Sublime, Visual Studio Code, IntelliJ IDEA, GitHub Actions, and pre-commit. The project treats complex template-value validation as best effort and does not fail merely because it cannot interpret or translate a value. The repository identifies its license as MIT No Attribution, and the plan costs nothing.

Spec sheet

Purpose
cfn-lint validates AWS CloudFormation YAML and JSON templates against resource provider schemas and additional checks, including valid property values and best practices.Read 2 Oct 2026 · github.com
Integrations
The project lists editor integrations for Atom, Emacs, NeoVim/Vim, Sublime, Visual Studio Code, and IntelliJ IDEA, plus a GitHub Action and pre-commit hook.Read 2 Oct 2026 · github.com
Support
The project invites users to join its Discord community to discuss cfn-lint and get help.Read 2 Oct 2026 · github.com
License
The repository identifies its license as MIT No Attribution, which grants use, copying, modification, distribution, sublicensing, and sale without restriction.Read 2 Oct 2026 · github.com
Configuration
Users can configure cfn-lint with command-line options, configuration files, and CloudFormation template metadata.Read 2 Oct 2026 · github.com
Installation
The project documents installation with pip, Homebrew for macOS, or Docker.Read 2 Oct 2026 · github.com
Output
Supported output formats include quiet, parseable, JSON, JUnit, pretty, and SARIF.Read 2 Oct 2026 · github.com
Rules
The linter processes rules for specific checks and validations, and supports user-defined custom rules.Read 2 Oct 2026 · github.com
Runtime
The project states that Python 3.10 through 3.14 are supported.Read 2 Oct 2026 · github.com
SAM support
The linter supports AWS Serverless Application Model templates by transforming them with AWS SAM before processing.Read 2 Oct 2026 · github.com
Validation caveat
The project describes validation of complex template values as best effort and says it will not fail just because it cannot understand or translate them.Read 2 Oct 2026 · github.com
Who it serves
The project describes cfn-lint as a tool for validating AWS CloudFormation templates.Read 2 Oct 2026 · github.com

Plans and prices

cfn-lint Free MIT-0 licensed · Python 3.10–3.14 supported Read 2 Oct 2026 · github.com

Every cfn-lint plan and price →

Strong points and limits

Strong points

  • Checks CloudFormation YAML and JSON templates.
  • Supports user-defined rules.
  • Offers six output formats.
  • Lists editor, GitHub Action, and pre-commit integrations.
  • Supports Python 3.10 through 3.14.

Limits

  • Complex template values receive best-effort validation.
  • It does not provide runtime enforcement.
  • It does not provide provisioning tests or deployed checks.

Who it suits

It suits people validating AWS CloudFormation templates, including teams that want custom rules, structured output, or editor and CI/CD integrations. It also supports AWS SAM templates.

Verdict

cfn-lint offers configurable template checks and multiple output and integration options. Its best-effort handling of complex values means validation may not fully interpret every template value.

Where Specifiction places it

Alternatives to cfn-lintAll alternatives →