The Vale module checks the prose in your text fields against a style guide, with the Vale linter. An error stops the save and is marked on the field. Warnings and suggestions are shown to the author, and the content saves.
Vale applies rules for style, tone and terminology. Write your own, or use a published style such as Microsoft, Google, write-good or proselint.
Features:
- Checks every save that validates: forms, JSON:API, REST and workspace publishing.
- Lists every error in a value at once, on the field it came from.
- Reads Markdown as Markdown and HTML as HTML, so code is not checked as prose.
- Per field: a minimum level, a level for any rule, and a profile that
.vale.inisections match. - Publish-only mode, so drafts save with their errors. It follows Content Moderation.
- Checks a workspace's changes before it is published, and can block the publish.
- A report of the alerts in stored content, with filters and a CSV export.
- Drush commands for CI:
vale:lintexits with 1 on an error. - A check endpoint that returns the alerts a save would give, for editors and frontends.
- Paragraphs: opted-in fields on paragraphs are checked, and publishing a page checks its paragraphs.
drush vale:installdownloads Vale and checks it against the release's checksum.
Requirements:
- PHP 8.3 or later
- Drupal 10.3 or 11
- Vale 3 on every web server and in the CLI container, with the styles your
.vale.iniuses
Usage/Configuration:
Install Vale with drush vale:install, add a .vale.ini beside your web root, and run vale sync to download its styles. Point the site at both in settings.php:
$settings['vale_binary'] = $app_root . '/../bin/vale'; $settings['vale_config'] = $app_root . '/../.vale.ini';
Then turn on Check with Vale for each field you want checked.
Example: Structure > Content types > Basic page > Manage fields > Body > Prose checks
The README covers the site settings, the content report, Drush, JSON:API and the check endpoint.
Frequently Asked Questions:
-
Why are the paths in settings.php and not in the admin UI?
Vale's script rules run code, so a ruleset belongs in your codebase. The module never accepts a binary path or a ruleset through the site. -
Does it detect text written by AI?
No. It checks style. Some Vale styles flag phrases that AI tools overuse, and the module applies them like any other rule. -
What happens if Vale is missing, times out or fails?
Content saves, and the author is told it was not checked.drush vale:lintand workspace blocking fail instead, so an unchecked deploy does not pass. Setfail_closedto refuse the save too.
Ask your assistant about Vale
Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Releases
| Version | Type | Core | PHP | Release date | |
|---|---|---|---|---|---|
| 1.0.0-beta1 | Pre-release | 10–11 | PHP 8.3 | Oct 21, 2026 | |
| 1.0.x-dev | Dev | 10–11 | PHP 8.3 | Oct 21, 2026 |