Markdown-aware spell check?

I searched a lot and could not find a syntax-aware spell check for Markdown. This means it would ignore things within backticks, code blocks, URLs.

The most serious discussion is at Atom, specifically this Atom spell-check issue. It references several other issues that were consolidated into that one.

This is a major deficiency of the Markdown ecosystem.

I’m wanting to recommend coworkers write most things in Markdown, but only if it has spell checking.

When you use regular spell check on a Markdown file, there is too much noise. You have to ignore or add every single variable name or part of a file path or language keyword. It’s unusable. It needs to be syntax aware.

And one more general request to the universe: that people write their general tools like spell checkers as libraries/programs that could be used within the most other tools. Too much Markdown syntax aware tooling is locked behind specific editor plugin code. Way too much repetition of such a common need.


What OS are you looking for the editor on?

macOS and Linux would be nice

Here’s a lua filter for pandoc that can do the job.

If you wanted something lighter than pandoc you could write a similar filter for

Or you could write something in C that uses libcmark and its iterator interface. (Or in commonmark-js if JavaScript fits the project.) With this approach you could create a library that could be used anywhere.

1 Like

I use BBEdit (which can do this), but I’d assume any of the Markdown-focused text editors would likely be able to handle that.

most don’t

I’m glad to hear BBEdit does

It’s surprisingly hard to find out if any given editor has language-aware spell check

There is a plugin for VSCode called SpellRight which does this correctly.
It’s a bit limited regarding user-provided dictionary additions, though.

It also works with the LaTeX Workshop-plugin which allows you to write latex documents directly in VSCode.

1 Like

We now settled our documentation authoring workspace on using the vale writing style linter ( ) via the supporting VSCode plugin. It has built-in spellcheck support (hunspell based I think) but goes far beyond.

In addition or alternatively we use the above mentioned VSCode “spellright” plugin which is using the Operating System Spellcheck API which, at least on my mac, is better in its recommendations and detection than most open source implementations.