A Python checker that flags common AI writing patterns in English text and scores it out of 5, plus an AI-assisted editing workflow.
vale-cli/vale
A command-line prose linter that enforces your team's writing style rules in editors, CI, and code, running offline.
Open-source alternative to:Grammarly
- Stars
- 6,276
- Forks
- 236
- Open issues
- 23
- Last commit
- 6 days ago
What is it?
Vale is a linter for prose that turns writing guidelines into automated checks. It ships without opinions of its own: teams pick a published style guide such as Microsoft's or Google's, add their own terms, or combine both, and Vale applies those rules to Markdown, AsciiDoc, reStructuredText, HTML and other document formats.
Vale parses document markup with real parsers, so rules can target headings, lists or table cells, and skip code spans, URLs and fenced blocks. It also extracts comments and docstrings from source code using tree-sitter grammars, and it can lint prose embedded in files such as OpenAPI descriptions, notebook cells or commit messages.
Rules are written as YAML files, from simple token substitutions to part-of-speech patterns, readability formulas and scripts. Some rules carry their own fixes that editors or agents can apply. Vale is written in Go as a single binary, runs on macOS, Windows and Linux, and works entirely offline.
Key features
- 01Parses Markdown, AsciiDoc, reStructuredText, HTML and other markup formats before linting.
- 02Extracts comments and docstrings from source code for checking.
- 03Rules written in YAML, from token substitutions to part-of-speech and readability checks.
- 04Ships published style packages such as Microsoft and Google that can be synced with one command.
- 05Rules can include automatic fixes for editors and agents to apply.
- 06Runs offline on macOS, Windows and Linux as a single Go binary.
Use cases
- Enforcing a company or project style guide across technical documentation.
- Catching terminology inconsistencies such as product names in docs.
- Running prose checks in CI so doc pull requests are validated automatically.
- Linting docstrings and code comments alongside the code they describe.
Quick start
- 1
Install Vale with Homebrew on macOS
brew install vale - 2
Create a .vale.ini configuration file at the project root
- 3
Download the configured styles
vale sync - 4
Lint a file such as README.md
vale README.md
Things to know
- Only the Go install path is listed for some platforms; other installs require the package manager available on your system.
- Vale is developed mainly by a single maintainer, so support and development speed depend on one person.
Topics
FAQ
- What is vale?
- A command-line prose linter that enforces your team's writing style rules in editors, CI, and code, running offline. Vale is a linter for prose that turns writing guidelines into automated checks. It ships without opinions of its own: teams pick a published style guide such as Microsoft's or Google's, add their own terms, or combine both, and Vale applies those rules to Markdown, AsciiDoc, reStructuredText, HTML and other document formats.
- Is vale free to use? What license does it have?
- vale is open source under the MIT license. Check the license terms before using it in commercial products.
- Is vale still maintained?
- Actively maintained. The last commit to vale was on Oct 16, 2026.
- What can I use vale for?
- Enforcing a company or project style guide across technical documentation. Catching terminology inconsistencies such as product names in docs. Running prose checks in CI so doc pull requests are validated automatically. Linting docstrings and code comments alongside the code they describe.
- How do I install vale?
- Install Vale with Homebrew on macOS: brew install vale Create a .vale.ini configuration file at the project root Download the configured styles: vale sync Lint a file such as README.md: vale README.md
- Where can I get vale?
- The source code and installation instructions are on GitHub: https://github.com/vale-cli/vale
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A fast Git hooks manager written in Go that runs pre-commit and other hook commands in parallel across Node.js, Ruby, Python and other projects.
A fast command-line linter that enforces naming conventions for directories and filenames in your project, configured through .ls-lint.yml files.
An agent skill that audits and rewrites prose to remove common AI writing patterns, with detect-only and edit-in-place modes.
A terminal markdown reader and renderer that displays .md files and repos with styled formatting in the CLI.
A static analyzer that scans NGINX configuration files for security misconfigurations and common performance pitfalls.