Vale CMS Need more than a rule playground? Explore
Open source · MIT 5.8K

Vale is a linter for prose

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.

$ vale content/manuals/engine/install/_index.md
content/manuals/engine/install/_index.md
52:1 error Use 'Docker Engine' instead of 'Docker CE'.  Docker.Forbidden
58:1 suggestion Consider using 'select' instead of 'Click'  Docker.RecommendedWords
131:35 warning Avoid using first-person plural like 'we'.  Docker.We
131:67 warning Avoid using first-person plural like 'our'.  Docker.We
1 error, 2 warnings and 1 suggestion in 1 file.
docker/docs · · 86dd043 See the full run

Read their configs

Every team here publishes something you can open — the .vale.ini they run, or the page they wrote about running it.

Why Vale

Linting built for the way you write

The precision of a code linter, applied to prose—so quality and consistency stop being a manual review step.

Markup-aware

Lints prose in Markdown, AsciiDoc, reStructuredText, and HTML—ignoring the syntax.

# Installation
You can **utilize** Vale to lint [prose](/docs)—it ignores syntax like `code` and URLs.
Vale is availible for macOS, Windows, and Linux.
suggestion Consider using 'use' instead of 'utilize'. Microsoft.Wordiness
error Did you really mean 'availible'? Vale.Spelling
How scopes work

Private by design

Runs entirely offline. Your content is never sent to a remote server for processing or training.

Fast, single binary

Built in Go with no runtime dependencies. A 2,800-page Markdown corpus, 82 rules, in under 20 seconds.

What makes it fast

Code-aware

Reads comments and docstrings with tree-sitter grammars, in more than twenty languages.

func Get(id string) (*Record, error) {
// It can utilize the cache when possible.
key := "// not a comment"
}
suggestion Consider using 'use' instead of 'utilize'. Microsoft.Wordiness
Inside the grammar

Extensible

Write your own rules in YAML—no plugins to compile. Match your brand voice, share across a team.

# styles/Brand/Terms.yml
extends: existence
message: "Avoid '%s'."
level: warning
tokens:
- utilize
- leverage
All twelve extension points

Runs everywhere

One tool for macOS, Windows, and Linux—MIT-licensed, open source, and actively maintained.

Style guides included

Ready-made Microsoft, Google, and other popular guides, plus community packages.

StylesPath = styles
MinAlertLevel = suggestion
[*.md]
BasedOnStyles = Vale, Microsoft
ValeMicrosoftGooglewrite-goodproselintRed Hat
Browse every style

One tool, every app

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.

Ready to start linting?
Install now.