Software for Building Puzzle Word Lists

xwordlist is a command line Python program designed to help you create, build and organize crossword puzzle word lists. As I started to think about constructing crossword puzzles with heavy themes — trying to make the entire puzzle themed, not just three or four long entries — I realized that I would need the ability to acquire and organize large amounts of text on very specific topics. After hacking around with a combination of search-and-replace text editors and Excel, I realized I needed to build someting more custom and thus xwordlist was born.

Besides helping with basic text functions such as deduping, alphabetizing and changing case, this program is able to pull content out of structured web pages and parse large blocks of text, including lists of web pages with similarly structured content. Although I first started using the software to grab the lyrics of songs, I have added regex and better html parsing functionality to make it easier to get data from Wikipedia and less structured sites.

For an example of a themed 5x5 mini puzzle built with a word list assembled using this software, see my personal website. For one of the original inspirations for this project, see Malaika Handa’s Crosswift puzzle using only Taylor Swift’s lyrics.


It helps to have some familiarity with Python and terminal programs to install xwordlist but it is not a requirement. If your environment is all set up and you know pip is both installed and up-to-date, skip down to the pip instructions below. Most Macs and Linux users will find that pip is installed but probably needs to be updated. Most Windows users will need to install pip first (see Windows Special Instructions below). In other words, unless you really know what you are doing, you probably need to continue to follow the next paragraph or the special Windows instructions.

Search for terminal and your operating system should show you the name and how to launch your default terminal program. The first thing you will need to do is make sure your Python is up-to-date (required) and that you have activated a virtual environment (recommended). See Installing Python Packages for helpful instructions on how to do both as well as how to install and upgrade pip. Follow the instructions on that page down to the section labeled Installing from PyPI.

From there, you can install xwordlist by typing

pip install xwordlist

Be sure to type xwordlist as there is other software called wordlist (without the “x”) which is not what you want. To see if your installation was successful, type

xwordlist --version

If properly installed, the software should respond with its name and the installed version.

Windows Special Instructions

Regardless of whether Python is already installed on your Windows computer, I would highly recommend a fresh install of an up-to-date version from’s Windows downloads page. In the Stable Releases column are a number of Windows installers that are compatible with versions of Windows going back to XP and compatible with 32-bit and 64-bit Intel machines or 64-bit ARM. Find the most recent version of Python that is compatbile with your version of Windows and the type of processor you have and download that.

When you launch the installer, select “Customize Installation” and make sure the boxes next to “Pip” and “Py launcher” are selected. Hit the “Next” button and make sure the boxes next to both “Create shortcuts for installed applications” and “Add Python to environment variables” are selected. Finally, hit the “Install” button.

From there, you should be able to follow the original instructions above by typing

pip install xwordlist

Manual Installation

To install the software manually, copy the xwordlist code to your local working environment by either cloning the GitHub repository or downloading and unpacking the zip archive into a new directory. To install the dependencies required to make xwordlist work, use your terminal program to find the directory in which you have copied the files and type

python3 -m pip install -r requirements.txt

To see if your installation was successful, type

python3 --version

If properly installed, the software should respond with its name and the installed version.


As an early stage project, xwordlist is likely to be updated often — including new features and bug fixes. For a record of changes and to see the most current version number, see the changelog. Remember that you can always check which version you have by typing xwordlist --version.

To update your installation using pip, type

pip install --upgrade xwordlist

To upgrade a manual installation, it is best to repeat the installation process replacing old files with the new ones downloaded from GitHub. In general, you will only need to replace the file named


If you have installed the software using pip, you should be able to run the program by simply typing xwordlist or xwl. For manual installs, you will need to type python3 The rest of the documentation assumes you have installed via pip and uses the short form.

For quick help instructions on the command line, type

xwordlist --help

For an example of how to use the software as well as a reference to all options, see the expanded help page.


This software is available as open source under the terms of the MIT License.