About this anagram solver

A small, dependency-free tool for two jobs: finding every full rearrangement of a set of letters, and finding every shorter word buildable from a subset of them. No account, no upload, and what you type never leaves your device to run a search.

Why it exists

Anagram-finding is a solved algorithmic problem with a clean, well-known trick at its core — a sorted-letter key — but plenty of implementations either scan the whole dictionary on every search (slow past a few thousand words) or bolt the two different questions, “what rearranges these letters exactly” and “what can be spelled from a subset of them,” into one confusing mode. This tool keeps the two modes explicit and makes the fast case (exact anagrams) actually fast, by paying the cost of building the lookup once instead of on every keystroke.

How the search is implemented

Exact anagrams use a precomputed index: every word in the dictionary is reduced to a key (its own letters, sorted alphabetically — “silent” and “listen” both become eilnst) and grouped under that key. Your input is reduced to the same kind of key, and the result is whichever group already sits under it — one lookup, not a scan. Building that index over the full ~204,000-word dictionary takes roughly 150ms on a typical laptop; it happens once, the first time exact-anagram mode is used, and is reused for every search after that.

All words (sub-anagram) mode asks a different question with no single key to look up: which dictionary words can be spelled using no more of each letter than the input provides. Your input is turned into a 26-letter frequency count, and each candidate word is checked by walking its letters and subtracting from a copy of that count — the check exits immediately the moment a word asks for a letter it has run out of. It's a full scan of the dictionary every search, but the per-word check is cheap enough that even a 24-letter input, the maximum this tool accepts, resolves in single-digit milliseconds.

Both modes de-duplicate and alphabetically sort their results before grouping them by length for display, and the display itself is capped at 500 words per search so a very permissive all-words query doesn't have to render thousands of list items.

How it was verified

The pure search logic lives in its own file with no DOM code in it, with a module.exports hatch so it can run under Node outside the browser. Before shipping, it was checked against fixed cases with known answers:

Verification cases and results
CaseExpectedResult
Exact anagrams of “listen”Includes “silent” and “enlist”present
Exact anagrams of “act”“cat” and “act”match
All-words search on “cat”Also includes “at” and “ta”present
Empty inputZero results, no errormatch
Duplicate entries in the source listOutput de-duplicated and alphabetically sortedmatch
Full 204,217-word dictionary, exact modeIndex builds once, then sub-millisecond lookupsmeasured

The full-dictionary timing was measured directly: building the exact-anagram index took roughly 150ms, a subsequent lookup for a six-letter word took about 1ms, and an all-words scan of the entire dictionary for an 11-letter input — the more expensive of the two modes — completed in single-digit milliseconds.

The dictionary this tool uses

Roughly 204,000 lowercase English words, shared across every word-game tool on this site, derived locally from a public-domain source dictionary and filtered to plain a–z entries of length 2–15 with proper nouns excluded. It is a general dictionary, not any specific word game's official validity list — see the caveat on the main tool page before relying on a result for competitive play.

How the site is built

  • Static HTML, one small stylesheet, two small scripts. No framework, no build step, no bundler.
  • The solver needs nothing from the network once loaded. The dictionary ships as a static file with the page; there is no API call per search. The favicon is an inline SVG data URI, not a fetched file.
  • System font stack. Your operating system's UI font, so nothing has to download and nothing shifts as it loads.
  • Nothing you type is transmitted. Searching happens against the dictionary already sitting in your browser; nothing is uploaded to run it.
  • Dark mode follows your system setting via prefers-color-scheme.

Scope and honesty about limits

This finds single dictionary words, not multi-word phrase rearrangements — it will not turn “eleven plus two” into “twelve plus one”. It works on the 26 English letters only; other scripts and accented characters are stripped before searching. And its dictionary, while broad, is general-purpose: it includes archaic and dialectal words a specific word game would reject, and it may be missing recent coinages or a particular game's own additions. Treat results as a starting point for exploration, not as a ruling on what any specific game will accept.