Where to find dictionaries

Star on GitHub

Look for domain vocabulary — a field's jargon — not for dictionaries of languages. Harper only checks English, so an English dictionary is the only kind it can use, and it already knows general English: 99.7% of a standard 49,555-word English dictionary, measured. A field's terminology is where the gaps actually are.

weirsmith links straight to upstream projects and never hosts, mirrors, proxies or fetches a dictionary for you. It ships no word data of its own, so the licence of whatever you convert travels with your pack and is yours to honour — the same position a compiler is in. Check it before publishing anything built from someone else's dictionary.

1 Software and computing

The best-served domain by a distance. The cspell-dicts project publishes about 60 technical dictionaries as @cspell/dict-* packages, plain one-word-per-line text, nearly all MIT.

Every figure below was measured by probing the package against a real Harper in all five dialects on 2026-07-25. "New" means no dialect recognised the word. Re-measure yours by dropping the files into weirsmith.

How much of each dictionary Harper does not already know
PackageUsable wordsNew to Harper%
dict-cpp32,26218,32657%
dict-python8,6133,84145%
dict-software-terms4,0821,88146%
dict-typescript3,67183823%
dict-cryptocurrencies62745472%
dict-latex66731748%
dict-k8s85031337%
dict-data-science30318561%
dict-aws1,52215210%
dict-rust28811339%
dict-gis4108120%
dict-terraform1184740%

Also published, unmeasured: dict-java, dict-csharp, dict-golang, dict-php, dict-ruby, dict-scala, dict-haskell, dict-elixir, dict-lua, dict-r, dict-swift, dict-kotlin, dict-dart, dict-clojure, dict-sql, dict-bash, dict-powershell, dict-docker, dict-google, dict-npm, dict-node, dict-html, dict-css, dict-django, dict-vue, dict-svelte, dict-fullstack, dict-companies, dict-filetypes, dict-gaming-terms, dict-public-licenses.

A high percentage is not permission to take it all

dict-cpp is the trap. 57% of it is new to Harper — and it is 18,326 words, most of them API identifiers like Conv1d, basic_streambuf or wcscspn. Those are not prose. Importing them all would widen Harper's accepted set by more than a third of its own dictionary and degrade its suggestions for everything else, which is the failure this tool exists to prevent.

The same applies to dict-data-science, whose new words are largely model names — Codestral, BLOOMRM, CKPT, Dahoas. Useful in a changelog, noise in a dictionary that has to last.

High novelty means the dictionary is on-topic, not that every word in it earns a place. The tagging step is where you cut it down. Pick the vocabulary that appears in your prose — a design doc, a postmortem, a policy — rather than in your code.

2 Maths, science and finance: mostly a gap

This is the honest answer rather than a list of links. If you need finance, pure maths or lab-science vocabulary, there is very little you can just download.

Maths and science

@cspell/dict-scientific-terms-us looks like exactly the right thing and is currently unusable. Its two files are custom_scientific_US.trie.gz — a compiled trie weirsmith cannot decode — and mathematics_US.txt.gz, which contains one word (GMRES). All the content is inside the trie.

What does work: @cspell/dict-latex (667 words, 48% new) covers the notation and environment names that appear in mathematical writing, and @cspell/dict-data-science covers applied statistics and ML. Neither is a mathematics vocabulary.

Finance

Nothing on npm worth recommending. The closest is @cspell/dict-cryptocurrencies (627 words, and 72% new — the highest novelty of anything measured here), which is a narrow slice of it.

For finance, accounting, law or any regulated field, the realistic source is your own writing. Pull the distinct words out of a few hundred of your own documents, drop that list in, and let the probe throw away the 90-odd percent Harper already knows. A term that appears in your documents is one you actually need, which is a better filter than anyone else's word list.

Medicine and life sciences

@cspell/dict-medicalterms exists and is GPL-3.0-or-later — its tarball carries the full GPLv3 at package/LICENSE, unlike the MIT of its siblings. Converting it privately is your business; publishing a pack built from it means honouring the GPL.

MeSH (US National Library of Medicine) is a large controlled vocabulary, free with a licence agreement and attribution. Mostly multi-word headings, so expect weirsmith to skip a lot: Harper matches single tokens.

3 Hunspell dictionaries: for the affixes

A .dic with its .aff is the richest format weirsmith reads — supply both and the affix flags are translated into Harper's own, so plurals and verb forms keep working instead of being dropped. 17 of dictionary-en's 23 flags map exactly.

But format is not content. The hunspell dictionaries you can download are general-language dictionaries, and those are the least useful thing here — see the next section. Reach for hunspell when your own domain list happens to come with an affix table, not as a source of vocabulary.

wooorm/dictionaries

Hunspell dictionaries for ~90 languages, packaged for npm. English is dictionary-en, dictionary-en-gb, dictionary-en-au. Licence varies by language — the English ones are (MIT AND BSD); others are GPL, LGPL or CC-BY-SA.

SCOWL and en-wl/wordlist

What most English hunspell dictionaries are generated from, with size-graded lists, a builder and the ESDB variant database. Useful if you want a specific frequency cut, or to reason about dialect variants rather than accept someone's packaged choice.

4 What not to bother with

Other languages — Harper only checks English

Harper ships five dialects: American, British, Australian, Canadian and Indian. All English. There is no French or German mode, so a French dictionary has nothing to be correct in.

Measured rather than assumed: converting dictionary-fr yields a 256 KiB pack of 76,923 words, and loading it into Harper swallowed no English typos — 16 of 20 caught before, the same 16 after. So the objection is not that it breaks Harper. It is that it buys nothing and quietly pollutes suggestions: with French loaded, Harper offered achaine for acheive where it had offered achene, and added concis to its guesses for concious. Dead weight with a small ongoing cost.

General-English dictionaries

Harper already knows 99.7% of dictionary-en — 49,412 of 49,555 entries. The 143 left over are mostly abbreviations. Every redundant word widens the spell checker's accepted set and feeds its suggestion engine, so this is effort spent making Harper slightly worse.

Compiled tries

cspell's language dictionaries — @cspell/dict-en_us and friends — and dict-scientific-terms-us ship .trie.gz with no plain list beside it. weirsmith does not decode that format and says so rather than silently reading nothing.

Hyphenated and multi-word entries

Harper looks up single tokens, so blue-green and low hanging can never match — the tokenizer has already split the text by the time the lookup happens. weirsmith drops them and reports how many.

5 Tagging references

WordNet

A lexical database with a part of speech for 147,478 single-word entries (MIT, packaged as wordnet-db). A natural candidate for pre-filling tags, and weirsmith deliberately does not ship it: measured against the words that actually survive probing, WordNet has a tag for two thirds of them — but they are abbreviations like APR and Btu that shape guessing already handles. On genuinely technical vocabulary it tagged 3 of 18. Six megabytes of index for that is a bad trade, so weirsmith guesses from word shape and makes correcting the guess quick.