Typo.js
A client-side JavaScript spellchecker that uses Hunspell-style dictionaries.
Install / Use
/learn @cfinke/Typo.jsREADME
Typo.js is a JavaScript/TypeScript spellchecker that uses Hunspell-style dictionaries.
Usage
To use Typo in a Chrome extension, simply include the typo.js file in your extension's background page, and then initialize the dictionary like so:
var dictionary = new Typo("en_US");
To use Typo in a standard web application you need to pass a settings object that provides a path to the folder containing the desired dictionary.
var dictionary = new Typo("en_US", false, false, { dictionaryPath: "typo/dictionaries" }),
If using in node.js, load it like so:
var Typo = require("typo-js");
var dictionary = new Typo([...]);
or
import Typo from "typo-js"
var dictionary = new Typo("en_US", false, false, { dictionaryPath: "/node_modules/typo-js/dictionaries" })
Your path to node_modules may vary.
To check if a word is spelled correctly, do this:
var is_spelled_correctly = dictionary.check("mispelled");
To get suggested corrections for a misspelled word, do this:
var array_of_suggestions = dictionary.suggest("mispeling");
// array_of_suggestions == ["misspelling", "dispelling", "misdealing", "misfiling", "misruling"]
Typo.js has full support for the following Hunspell affix flags:
PFXSFXREPFLAGCOMPOUNDMINCOMPOUNDRULEONLYINCOMPOUNDKEEPCASENOSUGGESTNEEDAFFIX
It also supports the Typo-specific flag PRIORITYSUGGEST. This allows you to specify that certain words should be given priority in the suggestions list when correcting a mispelled word. If you add the following to your .aff file (ideally on the line after NOSUGGEST):
PRIORITYSUGGEST @
and then add the @ flag to your new words in your .dic file, like
skibidi/@
rizz/@
then those words will be prioritized above other suggestions if they already appear in the suggestions list.
Note: The manifest.json file in the root directory of the project is there to simplify testing, as it allows you to load all of the files in the Typo project as a Chrome extension. It doesn't have any purpose if you're using Typo.js in your own project.
Demo
There's a live demo of Typo.js at http://www.chrisfinke.com/files/typo-demo/ and a complete Node.js example file at examples/node/index.js.
Development
The full TypeScript source code and unit test suites are available in the official Typo.js repository at https://github.com/cfinke/Typo.js
To modify Typo.js, make your changes to ts/typo.ts and then run build.sh to generate the JavaScript file typo/typo.js.
IRL
Typo.js has been been used all over in real-world projects, but here are a few examples:
- Parola, a mobile word puzzle game
- A number of NPM packages
Licensing
Typo.js is free software, licensed under the Modified BSD License.
Related Skills
node-connect
352.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
