Website

The Symmetric Delete spelling correction algorithm reduces the complexity of edit candidate generation and dictionary lookup for a given Damerau-Levenshtein distance. It is six orders of magnitude faster (than the standard approach with deletes + transposes + replaces + inserts) and language independent.

Opposite to other algorithms only deletes are required, no transposes + replaces + inserts. Transposes + replaces + inserts of the input term are transformed into deletes of the dictionary term. Replaces and inserts are expensive and language dependent: e.g. Chinese has 70,000 Unicode Han characters!

The speed comes from the inexpensive delete-only edit candidate generation and the pre-calculation. An average 5 letter word has about 3 million possible spelling errors within a maximum edit distance of 3, but SymSpell needs to generate only 25 deletes to cover them all, both at pre-calculation and at lookup time. Magic!

Implementations

Ports (from the README)

Most ports target SymSpell version 3.0. But version 6.1. provides much higher speed & lower memory consumption!

WebAssembly

https://github.com/justinwilaby/spellchecker-wasm

WEB API (Docker)

https://github.com/LeonErath/SymSpellAPI (Version 6.3)

C++

https://github.com/AtheS21/SymspellCPP (Version 6.5)

https://github.com/erhanbaris/SymSpellPlusPlus (Version 6.1)

Crystal

https://github.com/chenkovsky/aha/blob/master/src/aha/sym_spell.cr

Go

https://github.com/snapp-incubator/go-symspell

https://github.com/sajari/fuzzy

https://github.com/eskriett/spell

Haskell

https://github.com/cbeav/symspell

Java

https://github.com/MighTguY/customized-symspell (Version 6.6)

https://github.com/rxp90/jsymspell (Version 6.6)

https://github.com/Lundez/JavaSymSpell (Version 6.4)

https://github.com/rxp90/jsymspell

https://github.com/gpranav88/symspell

https://github.com/searchhub/preDict

https://github.com/jpsingarayar/SpellBlaze

Javascript

https://github.com/MathieuLoutre/node-symspell (Version 6.6, needs Node.js)

https://github.com/itslenny/SymSpell.js

https://github.com/dongyuwei/SymSpell

https://github.com/IceCreamYou/SymSpell

https://github.com/Yomguithereal/mnemonist/blob/master/symspell.js

Julia

https://github.com/Arkoniak/SymSpell.jl

Kotlin

https://github.com/Wavesonics/SymSpellKt

Objective-C

https://github.com/AmitBhavsarIphone/SymSpell (Version 6.3)

Python

https://github.com/mammothb/symspellpy (Version 6.7)

https://github.com/viig99/SymSpellCppPy (Version 6.5)

https://github.com/zoho-labs/symspell (Python bindings of Rust version)

https://github.com/ne3x7/pysymspell/ (Version 6.1)

https://github.com/Ayyuriss/SymSpell

https://github.com/ppgmg/github_public/blob/master/spell/symspell_python.py

https://github.com/rcourivaud/symspellcompound

https://github.com/Esukhia/sympound-python

https://www.kaggle.com/yk1598/symspell-spell-corrector

Ruby

https://github.com/PhilT/symspell

Rust

https://github.com/reneklacan/symspell (Version 6.6, compiles to WebAssembly)

https://github.com/luketpeterson/fuzzy_rocks (persistent datastore backed by RocksDB)

Scala

https://github.com/semkath/symspell

Swift

https://github.com/gdetari/SymSpellSwift


Tags: library   spellcheck  

Last modified 15 September 2025