Flake8
What it is
Flake8 is a free command-line tool for checking Python code style and quality on Linux. It combines pycodestyle, pyflakes and McCabe checks, with support for third-party plugins. Run it from the command line to see warnings in merged output organized by file. Project settings can be kept in INI format in setup.cfg, tox.ini or .flake8, and users can select or ignore error codes, including per-file ignores. The built-in checkers install by default; community plugins, most of which are uploaded to PyPI, can extend the checks. Local check and reporting plugins can be configured in a separate flake8:local-plugins section. Flake8 can be used as a pre-commit hook, and its README lists Git and Mercurial hooks. Installation uses pip for the Python version you intend to use. The project provides guidance for users and plugin developers. Third-party plugin accuracy and reliability may vary, and compatibility with Flake8 3.0 is not guaranteed.
For and against
For
- Free Python command-line checker
- Configurable error codes and per-file ignores
- Supports community and local plugins
- Can run as a pre-commit hook
- Provides CI support
Against
- No autofix feature
- No IDE support
- No security rules
- Third-party plugin reliability may vary
The verdict
Flake8 offers configurable Python checks and plugin support in a free command-line tool. Its lack of autofix and IDE support, along with variable third-party plugin reliability, are factors to weigh.
Who it suits
Flake8 suits Python developers who want command-line style and quality checks, configurable error selection, or plugin extensions. It also provides guidance for people building or maintaining plugins.
Plans and prices
Flake8
MIT-licensed Python package · requires Python >=3.10
Read 15 Oct 2026 · pypi.org
On the record
- Built-in checks
- Flake8 installs pycodestyle, pyflakes, and mccabe by default.flake8.pycqa.org · read 7 Oct 2026
- Complexity analysis
- McCabe checks are enabled through the C90 family and require the max-complexity option to report complexity violations.flake8.pycqa.org · read 15 Oct 2026
- Configurable checks
- Users can select or ignore error codes and configure per-file ignores.flake8.pycqa.org · read 7 Oct 2026
- Configuration
- Project configuration can be stored in setup.cfg, tox.ini, or .flake8 using INI format.flake8.pycqa.org · read 7 Oct 2026
- Configuration files
- The documented project configuration locations are setup.cfg, tox.ini and .flake8, using an INI [flake8] section.flake8.pycqa.org · read 15 Oct 2026
- Configuration precedence
- Command-line options override project configuration, which overrides defaults.flake8.pycqa.org · read 15 Oct 2026
- Core checks
- The default violation groups cover McCabe complexity (C90), pycodestyle errors (E), pyflakes errors (F) and pycodestyle warnings (W).flake8.pycqa.org · read 15 Oct 2026
- Extensibility
- Flake8 supports community plugins, most of which are uploaded to PyPI, and provides guidance for plugin developers.flake8.pycqa.org · read 7 Oct 2026
- File suppression
- Entire files can be skipped with an exclude configuration or a # flake8: noqa header.flake8.pycqa.org · read 15 Oct 2026
- GitHub activity
- The public repository showed about 3.8k stars, 362 forks and 2,544 commits when opened.github.com · read 15 Oct 2026
- Homebrew distribution
- Homebrew offers flake8 through brew install flake8, lists MIT licensing and version 7.4.1, and depends on [email protected].formulae.brew.sh · read 15 Oct 2026
- How it runs
- Flake8 runs from the command line and displays warnings in merged per-file output.github.com · read 7 Oct 2026
- Inline suppression
- A line can suppress selected diagnostics with a case-insensitive # noqa comment and one or more error codes.flake8.pycqa.org · read 15 Oct 2026
- Installation
- The official quickstart installs Flake8 with python -m pip install flake8 and recommends invoking the interpreter-specific module when multiple Python versions are installed.flake8.pycqa.org · read 15 Oct 2026
- Interpreter coupling
- The documentation says Flake8 must run under the Python version whose syntax it needs to parse, so installing it for one interpreter does not install it for another.flake8.pycqa.org · read 15 Oct 2026
- Latest release
- PyPI lists version 7.4.1 uploaded on September 23, 2026.pypi.org · read 15 Oct 2026
- Licence
- PyPI identifies Flake8 as MIT licensed.pypi.org · read 15 Oct 2026
- Limit: analysis scope
- A Reddit comparison noted that Flake8's ecosystem cannot perform some cross-file and type-inference checks, such as detecting a function called with the wrong number of arguments.reddit.com · read 15 Oct 2026