Get started with Vale, a syntax-aware linter for prose built with speed and extensibility in mind.

Package Managers

In general, the recommended approach on all platforms is to use a package manager such as Homebrew (macOS) or Chocolatey (Windows):

choco install vale

See Chocolatey for more information.

brew install vale

See Homebrew for more information.

snap install --edge vale

See Snapcraft for more information.

brew install vale

See Linuxbrew for more information.

On Fedora, you can use the mczernek/vale COPR repository:

sudo dnf copr enable mczernek/vale && sudo dnf install vale

See the community documentation for more information.

This will ensure that Vale is available on your $PATH and allow you to stay up to date with new releases.

GitHub Releases

Archives of precompiled binaries are available for Windows, macOS, and Linux. To use one of these, you’ll need to download the archive for your platform, extract it to a local directory, and (optionally) add the extracted directory to your $PATH.

An example of this process for Linux is given below:

mkdir bin && tar -xvzf vale_2.15.4_Linux_64-bit.tar.gz -C bin
export PATH=./bin:"$PATH"


Vale is available on Docker Hub at jdkato/vale:

docker pull jdkato/vale

Vale requires three components: a .vale.ini config file, a StylesPath directory (specified in the config file), and a document or directory to lint.

Here’s an example of calling Vale with locally-defined components (assuming $(pwd)/fixtures/styles/demo contains a config file):

docker run --rm -v $(pwd)/styles:/styles \
           --rm -v $(pwd)/fixtures/styles/demo:/docs \
           -w /docs \
           jdkato/vale .

By default, the image supports HTML, Markdown, AsciiDoc, and reStructuredText content. If you need support for DITA as well, you’ll need to add the relevant dependencies—for example,

# Choose a version to pin:
FROM jdkato/vale:v2.15.2

# Copy a local installation of the DITA Open Toolkit:
COPY bin/dita-ot-3.6 /
ENV PATH="/dita-ot-3.6/bin:$PATH"

ENTRYPOINT ["/bin/vale"]