codeword solver
Pattern notation: Type known letters in their exact position. Use . for any unknown, unlinked letter. Use the same digit (1–9) for positions that share a codeword grid number — the solver enforces that those positions must be the same letter. A digit only links positions when it appears more than once in your pattern; a digit used just once behaves like an unknown letter. Use # for a position you know is a vowel.
Examples: 11.E matches "ooze" — positions 1 and 2 are the same unknown letter. 1.T1. matches words where positions 1 and 4 are the same letter and position 3 is T. Use the Remove field to exclude letters you have decoded elsewhere in the grid.
Full guide with worked examples →
What is a codeword solver?
A codeword puzzle replaces every letter in a crossword-shaped grid with a number from 1 to 26. You are given a small set of pre-revealed letter–number pairs to start from. The rule that makes it solvable: every square carrying the same number must contain the same letter throughout the entire grid.
This solver takes a pattern that describes what you know about a word — its length, any decoded letters in their exact positions, and which positions share a grid number — and returns every word from the selected dictionary that satisfies all of those constraints simultaneously. No post-filtering is needed: every result is already guaranteed to be consistent with your pattern.
Pattern notation quick reference
The solver uses four types of character. Combine them freely in a single pattern:
A–Z- A known letter. The solver returns only words with this exact letter in this exact position.
.- An unknown, unlinked position. Any letter is accepted here, with no constraint relative to other positions.
1–9- An unknown, linked position. Every box using the same digit must contain the same letter — this is how you encode the codeword grid rule. Use the same digit wherever a codeword number repeats within this word.
#- A vowel position. Matches A, E, I, O, or U only. Useful when a grid number appears exclusively in vowel positions across several words.
For worked examples of each notation type, see the full instructions guide.
Single pattern or two patterns together?
Use this page for the majority of your solve — one word at a time. Enter a pattern, review the results, choose the candidate consistent with your other decoded letters, then move to the next word.
Switch to the two-pattern solver when two crossing entries share a decoded letter and you want to find a pair that satisfies both entries at once. Instead of manually checking every candidate from word A against every candidate from word B, the two-pattern solver returns only the combinations that work. This is most useful near the end of a solve when each word has a short candidate list but you still cannot commit to either.
Choosing the right dictionary
- Pocket (~20k words)
- Everyday common vocabulary. Use this when Original returns too many candidates and you want to filter down to the most familiar words first. If Pocket returns nothing, the word almost certainly exists in Original.
- Original (~111k words)
- Standard British English. The right starting point for most solvers and most puzzles. Most mainstream UK codewords are solvable entirely within Original.
- Big (~362k words)
- Adds rare, archaic, technical, and specialist entries. Use only after Original returns nothing useful. Expect a longer result list and more manual filtering. Common in specialist publications and challenging broadsheet supplements.
What to do when you get too many results
- Add more known letters. If you have decoded additional letters since entering the pattern, include them. Each positional letter narrows the list significantly.
- Use digits instead of dots for linked positions. If two positions share a codeword number, replace their dots with the same digit. The solver will then exclude all words where those positions differ.
- Use the Remove field. Enter any letters you have decoded elsewhere in the grid that you know are absent from this word. Each additional exclusion typically cuts the candidate list by 60–80%.
- Try Easy. If Normal or Hard is selected and results are unwieldy, switching to Easy restricts the search to the most common vocabulary first.
What to do when you get no results
- Check the word length. Being one square off is the most common cause of no results. Recount the squares in the grid carefully.
- Loosen the pattern. Temporarily replace one or two known letters with dots to confirm the pattern shape is plausible, then add them back one at a time.
- Review the Remove field. An overly aggressive exclusion list can eliminate the correct word. Clear it or reduce it and retry.
- Try a harder dictionary. If Normal returns nothing and the puzzle is from a specialist or broadsheet publication, switch to Hard.
- Check your digit consistency. If you entered digits for linked positions, ensure you are using the same digit in every position that shares a grid number. A mismatch creates an impossible constraint.
Common mistakes to avoid
- Using dots when positions are linked. A dot means "any letter, independently of every other position." If two positions share a codeword number, use the same digit — not a dot — or the solver cannot enforce the linking rule.
- Solving long words first. A 9-letter word with only two known letters returns hundreds of candidates. Decode short words first to build up your letter set, then return to long words with a richer pattern.
- Jumping to Hard before exhausting Normal. Hard includes many obscure entries unlikely to appear in mainstream puzzles. Start on Normal and escalate only when Normal genuinely returns nothing.
- Skipping cross-checks. Every time you decode a letter, verify it is consistent with every other word in the grid carrying the same number. One incorrect assumption compounds rapidly.
- Ignoring the Remove field. Once you have decoded several letters and know they are absent from a word, adding them to Remove can reduce a long list to a handful of candidates instantly.
How this differs from a crossword or anagram solver
Crossword solvers match a pattern to a dictionary but treat every position independently — they return every word that fits the length and known letters, with no concept of linked positions, leaving the solver to filter manually. Anagram tools rearrange a complete set of letters you already know, which is the inverse of the codeword problem where you have positions but unknown letters.
This solver was built specifically for codeword logic: it enforces both positional letters and number-linking constraints in a single pass. Every result returned already satisfies all the rules you have described. For a full explanation of how the matching algorithm works, see the methodology page.