The essential Scrabble aid

Scrabaid Home







Developer Info



Scrabaid is a lightweight Java program which indexes a wordlist for fast pattern searching, and uses these indexes to suggest words to the user. Given any scrabble board, and tray of available letters, Scrabaid will return you almost every possible combination of letters, ordered by score, to enable you to kick some serious butt in Scrabble games.

Pattern Searching

The searching/indexing algorithm used in Scrabaid is essentially a hash table. The size of the hash tables vary depending on the maximum length of words that Scrabaid can suggest. Personally, I use Scrabaid to search words of up to 13 characters in length, and this requires about 363 MB of disk space. If indexes for words of up to 10 characters in length are used then only 90 MB of disk space is required.

In practise, I've found this hash-table method to provide a good way of searching on patterns, with the number of mismatching words typically small (mostly less than 10 for words with less than 8 characters). Scrabaid can suggest solutions given a board within about 5 seconds generally. More time is taken if you have a blank or two in your tray (as there are a far greater number matches).

Current status

Scrabaid currently returns virtually all combinations of words available given a board configuration. The only known limitation is:

  • Scrabaid requires that blank squares, once laid on the board, be assigned a letter.

How good is Scrabaid?

Scrabaid is currently only an aid. It does not decide on which moves you should make - you have that decision. One simple strategy would be to always pick the highest scoring move available. However, this is not necessarily the best strategy - in many circumstances picking the highest scoring move will "open up" opportunities for your opponenet to lay tiles across 3 word multiplier and 3 letter multiplier tiles.

Building some level of intelligence, possibly using probabilistic move look-ahead and/or heuristics would be the next step in the development of Scrabaid.

In the meantime, I'm happy to report that against ordinary human beings, Scrabaid can help you score 450 points or more, whilst the human opponent will score somewhere around 200 to 250. When playing two Scrabaided players against each other, scores are in the high 300s. A typical game is shown in the screenshots section.

Scrabaid has also challenged the Networdz computer, with 100% intelligence, and won half the time. Details of the challenge can be found on the challenge page.

Why write Scrabaid?

I wrote Scrabaid for two reasons:

  • I do not have an especially large vocabulary, and thus my performance at the game against workmates was not up to the level that I had desired (I only won about 50% of the games). Now with Scrabaid, I consistently thrash my workmates, sometimes more than doubling their scores. On the downside, fewer and fewer people actually want to play against me now.
  • I'd booked myself in for a Java certification exam, and 4 days before the exam I realised that I knew no AWT. Instead of writing some crappy hello world programs, I decided to write Scrabaid to teach myself AWT and prepare for the exam.