Introduction
rsspell is a fast and efficient spell checker designed for modern development workflows. It supports multiple file formats and provides a simple, command-line interface for checking documents for typos.
Key Features
- Fast & Efficient: Optimized for speed using Rust and the Hunspell-style affix compression system.
- Markdown & SVG Support: Specifically handles text within Markdown and SVG files.
- Extensible: Easily install additional dictionaries from the CLI.
- Offline First: Includes a built-in
en-USdictionary for immediate, offline use.
Usage
rsspell is easy to use from the command line. Below are the most common commands and flags.
Scanning for Typos
To scan all Markdown and SVG files in the current directory (and its subdirectories):
rsspell scan
To scan a specific directory or file:
rsspell scan path/to/your/files
To specify a language (e.g., for installed dictionaries):
rsspell scan --lang de-DE
To ignore specific words via the command line:
rsspell scan --ignore word1 word2
.rsspellignore File
You can also create a .rsspellignore file in the root of your project to skip words automatically. Each line should contain one word to ignore. Lines starting with # are treated as comments.
Example .rsspellignore:
# Project-specific technical terms
rsspell
zspell
veltzer
Managing Dictionaries
rsspell includes a built-in en-US dictionary. You can manage additional dictionaries with the dicts subcommand.
List Installed Dictionaries
rsspell dicts list
List Dictionaries Available for Download
rsspell dicts list-remote
Install a New Dictionary
To install a dictionary from the wooorm/dictionaries repository:
rsspell dicts install de-DE
Show Dictionary Path
To see where dictionaries are stored on your system:
rsspell dicts path
Other Commands
Show Version Information
rsspell version
Generate Shell Completions
rsspell complete <SHELL>
Where <SHELL> is one of bash, elvish, fish, powershell, or zsh.
Design Decisions
rsspell is built with speed and simplicity in mind. This section covers key design choices made during development.
Built-in en-US Dictionary
The rsspell tool includes the en-US dictionary (dictionaries/en_US.aff and dictionaries/en_US.dic) embedded directly in the binary. This choice was made for several reasons:
- Immediate Value: The tool works out-of-the-box for the most common use case (English spell-checking) without requiring any initial setup or dictionary downloads.
- Offline Functionality: Users can perform spell-checks in English even without an active internet connection.
- Robust Fallback: The embedded dictionary serves as a reliable default if external dictionary management fails or is not used.
Dictionary Structure (Hunspell Format)
The dictionary is split into two files (dictionaries/en_US.aff and dictionaries/en_US.dic) following the Hunspell standard. This dual-file approach is used for affix compression, which significantly reduces the dictionary’s footprint:
.dic(Dictionary File): Contains a list of base words (stems) along with flags that indicate which rules apply to them..aff(Affix File): Defines the grammatical rules for prefixes and suffixes (e.g., how to handle plurals, tenses, and possessives).
By separating the rules from the word list, rsspell can recognize hundreds of thousands of word variations without needing to store them all explicitly, keeping the binary size small and memory usage efficient.
Supported Formats
rsspell currently focuses on file formats where textual content is mixed with structured data.
Markdown
rsspell uses the pulldown-cmark library to parse Markdown documents. This ensures that only the text content is checked, while Markdown syntax like links, code blocks, and headers are properly ignored or parsed.
SVG
For SVG files, rsspell parses the XML structure and checks text elements. This is useful for diagrams and icons where typos can often go unnoticed.
Release Info
This page is generated automatically by the docs deployment workflow.
- Version:
0.1.11 - Git tag:
v0.1.11 - Git commit:
8baf04f5f07c33db64f4e16bee7f25fe199906c0 - Released at:
2026-10-16 18:16:00 UTC - Workflow:
CIrun #70