Vale Is a Linter for Prose Vale, an open-source command-line linter for prose, enforces consistent editorial style across documents in 12 formats entirely offline, with no runtime and parallel file linting. Written in Go and MIT-licensed, Vale is used by companies including Amazon Web Services, Microsoft, GitLab, Grafana, NVIDIA, Docker, Red Hat, and Datadog, and GitLab runs 82 rules across 2,827 documentation pages in under 20 seconds. Vale supports 19 programming languages via tree-sitter grammars and offers 12 extension points including part-of-speech patterns, readability formulas, and Tengo scripts. A command-line tool that brings code-like linting to your writing. Enforce a consistent editorial style across every doc , in any format —entirely offline . Thanks to Claude for Open Source https://claude.com/contact-sales/claude-for-oss . These companies support Vale's future — and put it to work in their own products today. Every team here publishes something you can open — the .vale.ini they run, or the page they wrote about running it. The EKS User Guide walks contributors through installing Vale for live style feedback. docs.aws.amazon.com Cloud & infrastructureRuns a packaged PowerShell-Docs style in their Documentarian toolkit. microsoft/Documentarian github.comVale's built-in rules across the public API documentation. .vale.ini discord/discord-api-docsA required check in GitLab's documentation testing pipeline. docs.gitlab.com Developer toolsPowers the prose linting rules in the Grafana Writers' Toolkit. grafana.com Data & observabilityAll NeMo Agent Toolkit documentation is checked with Vale before it merges. docs.nvidia.com Developer toolsEnforces style standards across the Docker product docs. .vale.ini docker/docsMaintains "Vale at Red Hat", a public style package and onboarding guide. redhat-documentation.github.io Open sourcePublishes datadog-vale and shifted docs quality left with it. datadoghq.com Data & observabilityWhy Vale A heading, a code block, a comment, and a link URL are not the same thing—and a rule that can't tell them apart is a rule you end up switching off. Twelve formats, each through a real parser rather than a pattern. Rules can target headings, lists, or table cells—and code spans, URLs, and fenced blocks are skipped before a rule ever runs. Vale lifts comments out of nineteen languages with tree-sitter grammars, so it knows where a comment ends and a marker inside a string literal stays code. The Markdown inside a doc comment is linted as though it were its own file. Part-of-speech patterns, cross-file relationships, readability formulas, and Tengo scripts sit alongside the token lists—twelve extension points in all. Each is a few lines of YAML in a folder you can hand around as a package. extends: sequence message: "Use 'meetup' instead of 'meet up'." level: error tokens: - upos: NOUN pattern: meet - pattern: up extends: conditional message: "'%s' has no definition." level: error scope: text first: '\b A-Z {3,5} \b' second: ' ?:\b A-Z a-z + +\ A-Z {3,5} \ ' exceptions: - API extends: consistency message: "Inconsistent spelling of '%s'." level: error either: advisor: adviser extends: metric message: "Grade level %s is above 8." level: warning formula: | 0.39 words / sentences + 11.8 syllables / words - 15.59 condition: " 8" extends: script message: "This paragraph runs long—consider splitting it." level: suggestion scope: raw script: | text := import "text" matches := for line in text.split scope, "\n" { if len text.split line, " " 40 { i := text.index scope, line matches = append matches, {begin: i, end: i + len line } } } Written in Go, with no runtime and files linted in parallel. GitLab runs 82 rules across all 2,827 pages of its documentation in under twenty seconds. Nothing leaves your machine. No account, no upload, and no training on your writing. macOS, Windows, and Linux. MIT-licensed and maintained in the open. Microsoft, Google, Red Hat and thirteen more, each installed with one command. Distribution Sources: GitHub, Docker Hub, PyPI, conda-forge, Homebrew, Chocolatey, winstall, Snapcraft, and Repology · 59 contributors · updated 2026-07-24 More than just a command-line interface. Vale runs where you already write—in your editor, in your notes app, and in CI before anything merges. Wherever the prose gets written, with diagnostics as you type. The same run, before anything merges. Hosted docs that run Vale for you.