Word finder · ENABLE1, 172,820 words · rack first, filters after

Every word your letters make, then only the ones that fit

Type your letters and the dictionary gives back everything they can spell. Hunting seven-letter pangrams with it has its own guide. Add a starting run, an ending run, or a run to hold inside, and only the matching words are kept. The rack is solved first and filtered second, and both counts are printed — so you can see what the filters took.

Racknone typed Starts withany Containsany Ends withany Rack solves Pattern keeps Longest DictionaryENABLE1 · 172,820 words

Up to 15 characters in the rack; ? is a blank, at most two. The filter boxes take letters only, each a literal run rather than a pattern.

The word index is not loaded yet. It ships as 14 plain-text shards, one per word length, totalling 3,204,287 bytes; a rack pulls only the shards it can reach, and the figure for your rack appears here after a search.

What is measured, how it is kept, and what it cannot tell you

What is measured. Two things, in that order. First, which entries of a named word list can be spelled from the letters you supplied, each no more times than you supplied it. Second, which of those words also begin with, contain, or end with the run you asked for. The second is a filter over the first, not a second question put to the dictionary — rack solves answers the letters alone, pattern keeps is what survived the boxes — and printing both is what stops a filter that removed nine tenths passing for a thin dictionary.

How it is kept. The list ships as a file, wordlist/enable1.txt, precomputed at build time into an anagram-key index: each word's letters sorted, used as the key to every word that shares them. It is split by word length, so a rack pulls only the lengths it could reach and those shards are fetched after the page loads, which is why they are not part of its weight. The filters need no index of their own — they are substring tests over what the rack produced — so none adds a request.

What it cannot tell you. Whether a word is legal in your game: that depends on a word list this site does not use and cannot ship. Whether a word is worth playing, since nothing here knows the board. Anything about words not in ENABLE1 — proper nouns, hyphenations, the 4,272 entries of 16 letters or more that are outside the index. And nothing about unknown squares, which a literal run cannot express.

Questions

What do the three filter boxes do?
They narrow the answer without changing the rack. Starts with keeps words beginning with those letters, ends with those finishing with them, contains those holding them inside. Each box is a literal run: a contains of ST is an S followed by a T.
Does adding a filter search the dictionary again?
No, and the readout shows it. The rack is solved first against the indexed dictionary; the filters then run over that answer, in the page, as substring tests. That is why the strip prints two numbers, and why tightening a filter fetches nothing.
The rack found words but the filters kept none. Is that broken?
No, and the page names which step emptied the list: how many words the rack built, that none match the filters, and the rack count left standing. An empty panel would be indistinguishable from an index that failed to load, which gets its own sentence.
Which dictionary is this, and how many words are in it?
ENABLE1, a public-domain English word list of 172,820 words. 168,548 of them are 2 to 15 letters long and sit in the index this page loads; the rest are 16 letters or longer, which no 15-character rack could build. It is served as plain text at /wordlist/enable1.txt, with a provenance note beside it.
Do the letters I type leave my device?
No, and it is the browser that stops them rather than a promise on this page. The page fetches the slices of its index your rack can reach, as plain text from this site, and does every lookup and every filter in your tab. The Content-Security-Policy pins connections to this origin alone, so a request carrying your letters elsewhere fails before it is made.

The rest of the sieve