Skip to content

Detecting typos with typos-cli

Published:

3 min read

Spell checking for typos in code, documentation, and blog sites can impair searchability, cause confusion, and introduce bugs. I have been using typos-cli for a while now to check for typos in my blog periodically and for work in the documentation site.

It’s a Rust based spell checker that can be used with any command line interface and includes many different options. In this post, I’ll explore some of the common use cases I have found using this CLI tool.

Getting started

Installing typos-cli as a command-line utility is straightforward. On macOS, it can be done with a package manager like Homebrew:

brew install typos-cli

If you are familiar with Rust, you can also install it using cargo. For other platforms, refer to typos-cli documentation.

Detecting typos in the CLI

Run the following command to check for typos in a particular file or a directory:

typos

The output of this command provides all the typos detected from different files:

typos
error: `recieved` should be `received`
  --> ./src/api/handlers.js:15:10
    |
15  | // Data recieved from the server
    |         ^^^^^^^^

error: `succesfully` should be `successfully`
  --> ./docs/guide.md:42:8
    |
42  | Data succesfully processed
    |      ^^^^^^^^^^^

One thing to note here is that typos-cli is file extension agnostic. It works for JavaScript, TypeScript, Markdown (both .md and .mdx), and other common file extensions.

The above output shows:

Fixing typos automatically

typos-cli can also fix typos automatically. It has a --write option (shorthand: -w) to automatically correct detected typos:

typos -w
replacing `recieved` with `received`
replacing `succesfully` with `successfully`

In a typical documentation source code, I use this option with a caution. It’s always a good idea to review the detection to ensure there aren’t any false positives.

Reviewing changes before applying

typos-cli provides --diff option to view what changes will be made before applying them:

typos --diff
-The _RCTBridge required dispatch_sync to load RCTDevLoadingView_ has become a common occurence when developing React Native apps with version `0.64` and `0.65`.
+The _RCTBridge required dispatch_sync to load RCTDevLoadingView_ has become a common occurrence when developing React Native apps with version `0.64` and `0.65`.
--- ./src/content/blog/setup-macbook-m1.md	original
+++ ./src/content/blog/setup-macbook-m1.md	fixed

Formatting output

There are output format arguments available such as brief or long, which can be used to customize the format of the output by passing them as an argument to the --format option:

typos --format brief

./src/content/blog/atom-an-editor-of-21st-century.md:17:335: `Coffe` -> `Coffee`
./src/content/blog/build-a-progressive-web-app-using-react.md:388:60: `frome` -> `from`

Checking specific files and directories

To target a specific file or a directory, pass the name of the file or the path of the directory:

# File
typos README.md

# Directory
typos pages/

## Possible to check multiple files or directories
typos README.md GUIDE.md
typos src/pages src/content

Wrapping up

typos-cli can integrate well with GitHub Actions and VS Code. It also offers a different approach than other spell checkers out there, resulting in fewer false positives and is well suited for my use case right now.


Previous Post
Week notes 05
Next Post
Week notes 04

I'm a software developer and technical writer. On this blog, I share my learnings about both fields. Recently, I have begun exploring other topics, so don't be surprised if you find something new here.

Currently, working as a documentation lead at Expo.