cfn-lint
Checks CloudFormation templates for practices and behaviour that could potentially be improved
Decision gist · record as of 2026-08-14
Yes. cfn-lint is actively maintained, widely used in the top 1000 on PyPI, has zero known vulnerabilities, and low install friction. It is the standard tool for CloudFormation template validation and integrates seamlessly into development workflows and CI/CD pipelines. Install it if you work with CloudFormation templates.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later (up to 3.14).
- CloudFormation templates must be valid YAML or JSON syntax.
- Low install friction with a pure-Python wheel distribution.
License · maintenance · safety
MIT-0 (permissive) — MIT-0 is a permissive license with no restrictions on use, modification, or distribution—suitable for any project context.
last release 2026-08-13 (1 days) · last repo commit 2026-08-13 · 2,638 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 114,893,031 downloads/mo, #311 on PyPI
Alternatives
Verify before relying
pip install cfn-lint
cfn-lint template.yaml- Whether the 'best effort' approach to validating complex CloudFormation intrinsic functions meets your validation strictness requirements
- Performance characteristics when linting large template files or many templates in batch
- Coverage of all current AWS resource types and their schemas
What it is and what it does
cfn-lint is a command-line linter for AWS CloudFormation templates that validates YAML and JSON files against the official AWS CloudFormation resource provider schemas. It checks both structural correctness and property values, flagging issues at multiple severity levels (informational, warning, error) and returning appropriate exit codes. The tool supports Serverless Application Model (SAM) templates through automatic transformation before linting.
The linter is designed as a best-effort validator: it acknowledges that CloudFormation's intrinsic functions (conditionals, joins, mappings, and nested combinations) can be arbitrarily complex, so it aims to validate what it can understand without failing on edge cases it cannot fully interpret. It integrates with major editors and CI/CD systems via GitHub Actions, and can output results in multiple formats.
Use it for
- Catch CloudFormation template errors and anti-patterns before deployment to AWS
- Integrate template validation into CI/CD pipelines to enforce compliance and best practices
- Validate SAM templates as part of serverless application development workflows
- Lint multiple templates across a repository using glob patterns and recursive directory scanning
- Configure custom validation rules and severity thresholds for organizational standards
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
cfn-lint is actively maintained, widely used in the top 1000 on PyPI, has zero known vulnerabilities, and low install friction. It is the standard tool for CloudFormation template validation and integrates seamlessly into development workflows and CI/CD pipelines. Install it if you work with CloudFormation templates.
Install
cfn-lint on PyPI
Before you install
Low install friction with a pure-Python wheel distribution. Actively maintained with a release on 2026-08-13 and 2638 repository stars. Supports Python 3.10 through 3.14.
Requires Python 3.10 or later (up to 3.14). CloudFormation templates must be valid YAML or JSON syntax.
License in practice
MIT-0 is a permissive license with no restrictions on use, modification, or distribution—suitable for any project context.
Quickstart
pip install cfn-lint
cfn-lint template.yaml
Verify before relying
- Whether the 'best effort' approach to validating complex CloudFormation intrinsic functions meets your validation strictness requirements
- Performance characteristics when linting large template files or many templates in batch
- Coverage of all current AWS resource types and their schemas
Package facts
| License | MIT-0 permissive |
| Python support | Supports the current Python release <3.15,>=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 6 packagespyyamljsonpatchnetworkxsympyregextyping_extensions |
| Maintenance | Actively maintained 1 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 114,893,031 / month, #311 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersNatural Language :: EnglishOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14 |
Evidence: cfn_lint-1.55.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “cloudformation template linter”
- cfn-lintValidates AWS CloudFormation templates in YAML or JSON format against…
- cfn-flipConverts AWS CloudFormation templates between JSON and YAML formats,…
- aws-sam-translatorTransforms AWS Serverless Application Model (SAM) templates into…
Give your agent the search over MCP, or paste the wish link into any chat.
More Quality Assurance packages
Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.
Install it if you want to measure test completeness or enforce coverage thresholds in your project.
Ruff is a Python linter and code formatter written in Rust that combines linting, formatting, and code fixing into a single tool, replacing Flake8, Black, isort, and related utilities.
Pexpect spawns and controls interactive console applications by sending input and matching output patterns, automating tasks that would otherwise require manual interaction.
Black reformats Python source code to a consistent style by parsing entire files and rewriting them according to an opinionated, deterministic set of rules, eliminating manual formatting decisions.
pytest-xdist distributes pytest tests across multiple CPU cores or machines to speed up test execution, with the simplest usage being `pytest -n auto` to spawn workers equal to available CPUs.
Install it if your test suite takes long enough that parallelization would save meaningful time.
Beartype is a runtime type checker that validates Python type hints at function call time, catching type violations before they cause downstream bugs.
Install it if you want runtime type safety for your annotated code or need to validate type hints on third-party packages.
See also awslabs.aws-iac-mcp-server · cfn-flip · cfnresponse · cloudformation-cli · troposphere · aws-sam-translator · yamllint · parse-errors · aws-cdk.aws-cloudformation · cdk-nag