You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi there! I'm @jdkato, the sole developer of Vale. If you'd like to help me dedicate more time to developing, documenting, and supporting Vale, feel free to donate through GitHub Sponsors or Open Collective. Any donation—big, small, one-time, or recurring—is greatly appreciated!
Support for markup: Vale has a rich understanding of many markup formats, allowing it to avoid syntax-related false positives and intelligently exclude code snippets from prose-related rules.
Easy-to-install, stand-alone binaries: Unlike other tools, Vale doesn't require you to install and configure a particular programming language and its related tooling (such as Python/pip or Node.js/npm).
NOTE: While all of the options listed below are open-source (CLI-based) linters for prose, their implementations and features vary significantly. And so, the "best" option will depends on your specific needs and preferences.
Yes (Markdown, AsciiDoc, reStructuredText, Textile, Re:VIEW, and LaTeX)
Java
Apache-2.0
write-good
Yes (via JavaScript)
style
No
JavaScript
MIT
proselint
No
style
No
Python
BSD 3-Clause
Joblint
No
style
No
JavaScript
MIT
alex
No
style
Yes (Markdown)
JavaScript
MIT
The exact definition of "Supports Markup" varies by tool but, in general, it means that the format is understood at a higher level than a regular plain-text file (for example, features like excluding code blocks from spell check).
Extensibility means that there's a built-in means of creating your own rules without modifying the original source code.
Benchmarks
This benchmark has all three tools configured to use their implementations of the write-good rule set and Unix-style output.
This benchmark runs Vale's implementation of proselint's rule set against the original. Both tools are configured to use JSON output.
This benchmark runs Vale's implementation of Joblint's rule set against the original. Both tools are configured to use JSON output.
This benchmark has all three tools configured to perform only English spell checking using their default output styles.
All benchmarking was performed using the open-source hyperfine tool on a MacBook Pro (2.9 GHz Intel Core i7):
hyperfine --warmup 3 '<command>'
The corpus IDs in the above plots—gitlab and ydkjs—correspond to the following files:
A snapshot of GitLab's open-source documentation (1,500 Markdown files).
A chapter from the open-source book You Don't Know JS.
About
📝 A markup-aware linter for prose built with speed and extensibility in mind.