English OpenList
A word list with its own rules and its own record of where each entry came from. Inside the universe it is a dated subset, fixed at 1 revision of its list.
Its valid list held 345,103card:model_basis_entries entries at revision c1139698, and
version 1.0 ships 344,713rows.eol of them. The license rules keep the
other 390 out of the public version.
The universe reads the English OpenList at that 1 revision and never writes to it. A row's eol column says
whether the list held it then: a fact about the list at a date, never a verdict of the universe's.
What it is
The English OpenList is a free English word list for word games and apps, for researchers and teachers, for developers who need a list they can drop into their code, and for anyone who wants to download one. It began in 2026 because good English word lists are often paywalled, restrictively licensed, or stale copies of unknown origin. Projects built on it include Ars Magna, Amordle, and Anagram Tiles.
Its entries came in by several routes: a tournament word list, a verification pipeline that used a language model, its synthetic engine, and a daily search for new words. Its later additions were checked against Merriam-Webster; the entries from its earlier intakes were not all checked. The charts below show how its entries came in.
It is deliberately not Scrabble-legal. At the pinned revision it holds 2card:eol_one_letter one-letter entries and 3card:eol_over_45 entries longer than 45 characters, the longest 47card:eol_longest characters long; tournament lists exclude both. Keep lengths 2 to 45 for a Scrabble-shaped subset.
It published a new list each day from January to September 24, 2026, the date of its last published list. In this
dataset it is a dated subset: version 1.0 holds its list at 1 revision, and a later version takes in what it adds
after that by moving the pin. The config keeps the English
OpenList's own name for its list, eol-valid; this site never calls an entry valid.
How it decided its list
The English OpenList took strings in from many channels and ruled on each: valid or invalid. Its rules included a strong-attestation rule, a string that 8 of its 12 sources list; a verification pipeline that used a language model, Google Gemini 3 Flash Preview; and a synthetic engine.
The synthetic engine made 330,386card:generated_rows of the universe's rows. Its code does not survive, and
its own per-row record of the method is empty, but its author describes the methods: affixes applied without a
part-of-speech filter to the list as it then stood (plurals, past tenses, gerunds, agent nouns, comparatives and
superlatives, and prefixed forms); chemical names varied by substituent, and short chains of root, infix, and suffix,
made by substitution over a hand-written list of substituents and roots, with no tool that derives a name from a
formula; medical and scientific prefixes; and Greek plurals. It gave each base word a domain label, and it used NLTK,
lemminflect, and spaCy. The universe infers each generated row's method from its form, in
eol_synthetic_engine_inferred, and keeps the recorded category in eol_synthetic_category.
The universe keeps both of its lists, the valid and the invalid, and records what decided each valid row in
model_or_engine. The charts below are computed from every one of its rows in version 1.0.
Getting it
-
Compose it as a list
Its rows of version 1.0, with the code that reproduces them, and any criterion of your own on top.
-
Profile it
Every dimension of its rows, charted, with every filter of the profile.
-
Its own dataset
The list as the English OpenList last published it, at
ryanjosephkamp/english-openlist. -
Its own site
Search and filter the list as the English OpenList published it.
-
Its own repository
Its code, its rule, and its nightly run, at
ryanjosephkamp/english-openlist.
The English OpenList keeps its own site, repository, and dataset. This page shows its dated subset in version 1.0.