Frequently Asked Questions

Where are my puzzles saved?

By default, puzzles are stored in the cloud and can be accessed from any online computer. However, it is possible to save puzzles locally in the persistent storage provided by your browser. To do this, select 'Save As' from the File menu and check the 'Store locally' box in the resulting dialog. Note that when this option is used, you can only access puzzles from the browser in which they were saved and that if you clear your browser's cache, the puzzles are lost for good.

Where are my word list edits saved?

Changes to word scores and sample clues are all stored locally in persistent storage provided by your browser. This means these changes are only accessible using the browser in which the edits were made. However, it is possible to export your word list at any time. If you are using the app to tweak your word list we recommend that, for backup purposes, you periodically export your word list to a safe location on your computer. Your exported word lists can then be imported on any computer/browser.

What are acceptable word list formats?

Word lists can be unscored or scored. An unscored word list is just a text file where each line contains a word list entry. Entries can only include alphanumeric characters; Special characters are not allowed. For scored lists, each line would consist of a word and a number separated by a semi-colon, comma, or tab.

Words can also contain sample clues that are displayed when showing the results of fill operations. In the default word list included with this app, most entries have a sample clue. Sample clues can be included in a word list by adding a third component to each line. So, for a scored word list with sample clues, each line would consist of an entry, a number, and a sample clue with these items being separated by a semi-colon, comma, or tab.

How are word scores used?

Scores are primarily used to sort lists of slot options. Higher scored entries, which presumably correspond to better fill options, are shown first. It is also possible to set minimum score filters when searching for fill. These filters can be set globally for the entire grid or at the slot level.

How can I modify word scores?

Any place in the app that you see a word score, whether it be in the lookup tab or slot option lists, you can simply click on the existing score and enter a new value. These edits are applied immediately and will persist within the browser where the edits were made.

What's up with the default word list?

Most of the entries (≈ 93%) in the default word list come from puzzles that have appeared online. We've been downloading puz files for years and cleaning the results, removing punny or otherwise inappropriate answers. This dataset is used by the lookup tool to provide sample clues and word occurrence statistics. The remaining entries came from some miscellaneous sources including a word frequency list based on a corpus of scrapped internet content as well as some manual additions.

The three-, four- and five-letter words have all been manually scored. The criteria used for scoring is as follows:

80Sparkle, i.e. longish, in-language words and phrases, or well known/topical proper nouns
50Solid English words or phrases and well known proper nouns
30Words that are acceptable, but less than ideal, e.g. word derivatives, common crossword entries, etc.
10Cruddy words often needed as glue to make the grid work, e.g. partials, abbreviations, foreign words, etc.
5Words to be avoided at almost all costs, e.g. esoteric words, Roman numerals, weird abbreviations, etc.

Scoring for words that are six-letters or longer is a bit of a hodgepodge. Some of them have been manually scored, but the majority have been given a score (in the range of 5 to 50) based off their occurrence counts. While using occurrence counts to score words can lead to some flawed results (overestimating long-established crosswordese and underestimating fresh, new entries), it does provide some means of sorting a long list of slot options.

Obviously, word scoring is subjective. One person's crud could be completely acceptable to someone else. If you don't agree with how a particular word is rated, you are free to change it. Just click on the score that is shown in either the Fill pane or the Lookup pane, and enter a new value. This change will be saved to persistent local storage in your browser.

To see which version of the default list you have stored locally, click "Default word list info" from the Word Lists menu. From there, you can also get the latest version of the list. New words are added and scoring edits are made almost daily, so feel free to refresh frequently. And don't worry about losing any local score edits. Any changes that you might have made to the default list word scores will not be lost during a refresh.

Is there a way to add more than one block at a time?

Yes there is. If you click on multiple squares while holding down the control key (or for Mac users, the command key), the app will select those squares. You can then perform bulk operations on them, such as toggle block, toggle circle, or toggle shaded square.

How can I see the top candidates list for a particular slot?

If you right-click on a square in the grid, it will bring up a context menu that, in general, will show the top 10 candidates for both the across and down slots containing the square. The exception is when a slot is completely unfilled. In that case, the context menu will just include the number of candidates from your word list that match the slot length.

Is there an easy way to add an item from a slot option list to the grid?

Yes. When viewing slot option word lists, either in the Fill pane or a context menu, there are two actions that can be initiated with the mouse. A single click will look the word up in the clue database and display the results, while a double click will add the word to the grid.

What do the colored slots mean?

When you open up the fill tab, the app performs lookups on each slot based on the characters currently in the grid. If there are 10 or fewer candidates, the slot will be highlighted in yellow. If there is a single option, the slot is highlighted in yellow and the sole candidate is shown in grey. And if there are no candidates, the slot is highlighted in red.

These colors are intended to show you the constrained and unfillable slots, although it is important to note that these colors are based on candidates, not valid options. You can only tell if a candidate is valid by performing a fill operation.

What does a greyed out letter mean?

If the app has identified that there is only one letter option for a particular square, it will show that letter in grey. To accept all the "single-option" letters shown in the grid, use the keyboard shortcut Alt + Shift + Enter. If you just want to accept the options being shown in the active slot, use Shift + Enter.

How are the letter distribution charts computed?

On the fill and lookup panes, you will sometimes see bar chart icons (i.e., ) displayed in the slot squares. Clicking on these will bring up a bar chart with letter distributions for that particular slot position. How the letter distribution counts are calculated depends on which pane you are viewing.

In the lookup pane, the letter counts are based on the list of matching entries. In the initial chart that is displayed, the bars take into account the word scores. If you want to see an unweighted bar chart based solely on word counts, you can click on the chart to toggle the display.

The letter distribution charts in the fill pane are a bit more complicated. First off, the charts depend upon whether or not you have successfully searched for valid slot options. When valid search options have been found, the bar chart icon will be green (i.e., ) and the letter distribution graphs are based on the search results. If you have not performed a slot option search, the letter distribution graphs are based on the potential candidates for both the displayed slot and the crossing slot. In other words, the height of the bar for each letter will be proportional to the number of matching candidate pairs that fit in the slot and its crosser.

How can I fill just one region of the grid?

For many grids, the black squares and the completed slots break up a puzzle into multiple isolated regions in which the fill can be tackled independently. You can control which region is filled by changing the active slot on the grid before starting a new fill operation. If that slot has unfilled squares, the application will limit the search to the region containing that slot. On the other hand, if the active slot is completely filled in, or a black square is selected, the application will attempt to fill the entire grid.

Is there anything I can do about a really slow slot option search?

In general, slow searches happen when the search space (i.e., the set of possible options for all unfilled slots) is large. Crosserville performs exhaustive searches, so it will keep churning as long as there are unexplored possibilities that include an unvalidated slot option.

While several factors affect the size of the search space, the most critical is the number of unfilled slots in the search region. Roughly speaking, if there are N unfilled slots, each with M options, then the total number of possibilities is M raised to the Nth power.

So one thing you can do to speed up slot option searches is to effectively reduce the number of slots that need to be included in the search. This can be achieved by breaking your puzzle into independent regions. And in many cases, this may only involve filling in just a few squares. An example of this is given in the tutorial video.

The other thing that can speed up searches is to limit the number of slot options. So, if the app is churning away on a particular slot, you might be able to reduce the search time by creating filters on the surrounding slots.

What is a seed entry and do I really need one to find fill?

A seed entry is a starting point for building a grid. Most commonly, it is used to refer to one of the initial long entries that constructors add to a themeless grid, although it can be used more generally to include theme and revealer entries. Regardless, they are a required starting point for the puzzle's construction. Similarly, Crosserville requires at least one seed entry to serve as the starting point for the search process.

However, in this app the term is used even more generally to refer to anything that constrains possible fill solutions. This could be a filled-in slot, but it could also just be one character in a single square. Or it could be slot filter, defined as either an include list or a minimum score threshold. In fact, specifying your seed entry as a slot filter is a particularly useful approach for starting a themeless puzzle.

What are grid scores?

After searching for slot options, you have the opportunity to evaluate the results. The evaluation process produces a grid score: a value proportional to the cumulative score of the most optimal fill in the neighboring slots. The reported grid scores are normalized to a value close to 1.0, so they are only meaningful in a relative sense.

The evaluation process does not look for fill solutions that cover the entire grid as, in general, that would be too time-consuming. Instead, it just considers the neighboring slots, which include the crossers and the crossers of the crossers.

What is the recommended Crosserville strategy for filling grids?

Unfortunately, there is no simple answer to this question. Becoming adept at filling a crossword takes time and practice. And the precise approach that you take will likely depend upon many factors, such as the size of the region you are trying to fill and the rough number of available fill options.

With that said, one of the keys to using Crosserville is getting comfortable with slot filters. In contrast to the guided fill approach, where candidates are explored one at a time, a slot filter allows you to consider multiple candidates at once. They can be used to gradually pare down the list of possible solutions to a manageable set that contains your best overall options. And once you have reached this point, you can either iterate through the possibilities and choose the one you like best or go slot-by-slot and test out the different options. But even if you use the slot-by-slot approach, there won't be as much backstepping as in a traditional guided fill as, by setting up filters, you have already removed the worst entries.

In practice, this means more work upfront to set up your slot filters, but less time spent iterating through possible fill solutions. Like everything in crossword construction, it's a trade-off.

The guiding principle for creating slot filters is to configure them such that, once you have visited each slot in the fill region, you are left with a reasonable set of acceptable options. This means that for grids that are easy to fill (i.e., there are many possible solutions), you can be strict with your filters. A strict filter might be one with a high minimum score threshold, or a short "include list" filter, or the most strict slot filter of all: filling it with a particular entry. For hard-to-fill grids, you will need to be more flexible with your slot filters by including options that are less than ideal. In this situation, it might also make sense to revisit the grid design and see if moving your themers and/or blocks could release the pressure somewhat.

You can also reduce the amount of work needed by starting with the slots having the fewest candidates, as these filters tend to have the most impact on the size of the search tree. If a slot has, say, 3 candidates and you remove 1 of them, this could reduce the total number of fill solutions by 33%. In practice, it's impossible to predict how much of the search tree will be pruned with the removal of a particular candidate. But in general, removing a candidate from a short list of possibilities will have more impact than removing one from a longer list. So starting with the slots highlighted in yellow, or the longer slots with specified crossers is an efficient strategy.

It's also a good idea to be thinking in terms of breaking up your grid into subregions that can be filled independently. In general, you will find that in the early stages when the app is attempting to fill many interconnected slots, searches will be slow and may not finish. You can improve this behavior by filling in certain slots or individual squares that create isolated regions. These edits will improve search performance, but keep in mind that they come at the expense of eliminating fill options. So, it is best to fill in these "dividing squares" with letters that leave you with the most candidates going forward. The letter distribution graphs are helpful when making these decisions.

In many cases, you will not need to create a unique word list filter for each slot in the region. As the 3, 4, and 5-letter words in the default word list have all been manually scored, you can feel comfortable setting a global filter for these slot lengths. For example, if your slot option searches are returning hundreds of possibilities, you could try increasing the minimum score of all 5-letter slots to, say, 30 and see how that affects the result sets. If there are still plentiful options, you could play around with the 3 and 4-letter score thresholds. Again, at this stage, you are just trying to pare down the search tree to a more manageable size by removing the worst options.

Focusing on slot filters is by no means the only way to use the app. You can use the more traditional guided fill approach (although the UI is not as optimized for this method compared to other apps), or you can run autofill and use the "Exclude From" buttons to remove unwanted entries until to get something that you like. Or you can combine different methods. But keep in mind that this is a challenging problem and developing the skills to design and fill crossword puzzles takes time. Don't get discouraged!

What browsers does this work with?

The app has been tested in the latest desktop versions of Chrome, Firefox, and Edge. It is not mobile friendly at the moment, and there have been some problems reported with Safari (specifically, clue editing). Also, it uses some browser features released in the last year, so if you have not updated your browser in a while, you might encounter some issues.

The app also does not work in private windows on Firefox. The technology used to store word lists, indexedDB, does not function in that mode of browsing. By the way, for those concerned about privacy issues, Crosserville does no advertising nor uses third-party cookies of any kind. We only use cookies to maintain login state and to save puzzles and word lists locally.

I have a question, suggestion, gripe, and/or comment. What can I do?

Send us an email at We'd love to hear from you, gripes included.