Crossword Solver

Enter a crossword pattern with ? for each missing letter and see every matching word.

23 words

4 letters

baalbaelbailballbaulbawlbealbellbhilbiblbillbiolbirlboilbollboolboulbowlbualbuhlbullburlbyrl
AdvertisementAd slot #1 · below the result

What it does

Feed it the shape of a crossword answer — the letters you already have, with ? in every empty square — and this tool lists every word in its dictionary that fits. The pattern's length is the word's length; each ? can be any letter; every other character must match exactly.

How it works

The pattern is a tiny grammar with three rules: ? (or _, whichever is easier to type) stands for one unknown letter, any English letter is literal, and the total length equals the word's length. So b??l matches every four-letter word starting with b and ending with l — with anything in between.

Under the bonnet the tool converts ? to SQL LIKE's single-character wildcard _ and asks the database for words of the right length that match. The length column is indexed, so the query only touches the small band of words that share the pattern's length; a fixed-width LIKE over that subset returns in a few milliseconds even against ~280,000 dictionary entries. An offensive-word flag on each row is checked in the same query, so profanity never appears in the results.

The idea
pattern → fixed length + literal letters + wildcards for the rest

Worked example

Given the small demo list ball, bell, bill, bull, bald, balm, bells and the pattern b??l, the solver returns: ball, bell, bill, bull. Every four-letter word starting with b and ending with l matches; bald and balm end in the wrong letter, and bells is a letter too long. Against the full ~280,000-word dictionary the tool returns any real English word that fits the pattern.

Common uses

  • Cryptic and quick crosswords: resolve a half-filled answer without leafing through the paper's answer grid.
  • Wordle and Quordle end-game: once you have the greens locked in, list every word that could still complete the row.
  • Puzzle setters and teachers: check whether a template has enough real-word answers before printing it.

Frequently asked

Can I use a full stop or a dash instead of a question mark?

Only ? and _ are recognised as wildcards. Any other character is treated as a literal that must match — so c.t or c-t returns nothing, because the dictionary holds no words with a dot or a dash in them.

Is there a length limit?

Patterns from three to fifteen characters are accepted — the same range the dictionary stores. Anything shorter or longer rarely produces useful crossword results in any case.

Why don't I see rude words in the results?

Each row in the dictionary carries a flag for offensive entries, and the pattern query filters them out in the same statement. There is no toggle to include them.

See how we build and verify our tools.

AdvertisementAd slot #2 · after the explainer