How Crossword Clues Works

Understanding the two-tier solving approach

Crossword Clues uses a two-tier architecture to solve crossword clues. The first tier handles pattern-only lookups entirely in your browser using a local dictionary. The second tier sends the clue to an AI language model when understanding of language and crossword conventions is required. Here's exactly what happens from the moment you click Solve.

Tier 1 — Local Dictionary Matching

When you enter a letter pattern without any clue text (for example C?T or ???RIS), Crossword Clues solves the puzzle entirely in your browser. On your first pattern-only search, the app lazy-loads the ENABLE word list — a public-domain lexicon of more than 170,000 English words. It is cached in memory for the rest of your session, so subsequent pattern searches are instant.

The matching algorithm iterates over every word in the list and checks two conditions: (1) the word's length matches the target length, and (2) every revealed letter in the pattern aligns with the corresponding letter in the word. Wildcards (? or _) match any letter. Because this runs in the browser with no network round trip, it returns results in milliseconds even on mobile devices.

Confidence for pattern-only results is determined by how constrained the pattern is: zero wildcards yields High confidence (the word either exists or it doesn't), one wildcard yields Medium, and two or more wildcards yield Low.

Tier 2 — AI Language Model Solving

When a clue is present, Crossword Clues sends the clue text, optional length, and optional pattern to the backend Cloudflare Worker, which calls an OpenAI-compatible language model (currently DeepSeek Chat) via a structured prompt.

The System Prompt

The model receives a detailed system prompt covering all major crossword conventions:

  • Definition clues — the clue is a plain synonym or definition of the answer.
  • Anagram indicators — words like "mixed", "scrambled", "arranged", or "confused" signal that the letters in part of the clue are rearranged.
  • Hidden word clues — the answer is literally hidden within consecutive letters of the clue (often signalled by "in", "within", "part of").
  • Abbreviation clues — common crossword shorthands like R for River, ST for Saint or Street, E for East, etc.
  • Wordplay (?) indicators — a trailing ? signals a pun, joke, or non-literal definition.
  • Double definitions — two separate definitions separated within the clue, both pointing to the same answer.

The model is asked to return strict JSON only — no prose, no markdown — containing up to three candidate answers, each with the word in uppercase, a confidence level, and a one-sentence explanation. The temperature is set to 0.2 to minimise hallucination while preserving some flexibility for wordplay.

Defensive Parsing and Retry

Language models occasionally wrap their output in markdown code fences or add preamble text. Crossword Clues's parser strips these artifacts and extracts the first valid JSON object from the response. If parsing fails, the request is retried once automatically. Only if both attempts fail does the server return an error to the user — this keeps the reliability high even when the model is behaving slightly unexpectedly.

Caching

Every successfully resolved clue is stored permanently in Cloudflare Workers KV, a globally distributed key-value store. Subsequent identical queries (same clue, length, and pattern) return the cached result instantly — typically in under 10 ms — with no LLM call at all. This dramatically reduces latency for popular clues and keeps operating costs low.

How We Post-Filter Results

After the LLM returns answers, the backend applies your length and pattern constraints as a hard filter — any answer that doesn't fit the grid is silently dropped. The frontend applies the same filter on the client side as a safety net. This means you'll never see an answer that contradicts the letters you've already filled in, no matter what the AI returned.

Honest Limitations

Crossword Clues is a tool, not an oracle. Here are the cases where it struggles:

  • Highly local or niche proper nouns — names of minor local landmarks, regional slang, or niche technical vocabulary that may not appear in the model's training data.
  • Very recent events — language models have a knowledge cutoff date. Clues referencing recent news, films, or people may not resolve correctly.
  • Extremely ambiguous clues — a two-word clue with no length constraint and no pattern has many valid interpretations. Adding even one known letter dramatically narrows the search space.
  • Advanced cryptic devices — complex nested cryptics, alphabetical jigsaws, or thematic puzzles with unusual conventions may confuse the model.

For best results, always provide the answer length and any letters you already know. If the solver misses, try our guide to solving cryptic clues and rephrase the clue to highlight the indicator word.

You submit a clue

The form validates your input client-side before sending anything to the server.

Cache check

The Worker checks KV for a previously solved identical query — cached hits return in <10 ms.

LLM call

On a cache miss, the clue is sent to the AI with a structured crossword-aware prompt.

Filter & cache

Answers are filtered against your length/pattern constraints, then stored in KV permanently.

Results rendered

Up to 3 answers appear as letter-tile cards with explanations and confidence labels.