Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


libpuz -- A PUZ crossword file library
Copyright (c) 2006-2010 Josh Myer <>
                        Chris Casinghino <>

libpuz is a library for reading and writing files in the binary PUZ
file format, and reading the textual format.  It is intended for
programmers to use, not for normal users.

NOTE: This library does not currently handle the text format
correctly.  It is very handy for the binary format, but reading
puzzles in the text format currently has at least two bugs (clues
appear in the wrong order and the notes section is ignored).

This version of libpuz is thought to be quite stable.  It is used as
the main interface to puz files in the end-user application hcross,
leading to a variety of bug fixes and additional features.  While some
obscure bugs surely still remain, it has handled reading and saving
the daily NYT puzzle without choking for some time.

All of the crucial checksum fields have been worked out, so you can
interoperate with commercial crossword software for basic crosswords.
Most advanced features (circles, timers, some rebus parts) have been
worked out as well, and are handled in this version.  

The last major missing pieces are the RUSR section (which stores
user's multi-letter answers in rebus squares - not entirely essential
since entering just the first letter works) and the unscrambling for
locked puzzles (although this verison can be used to check if a puzzle
is solved, even if its solution is scrambled).  These features are
documented on the puz project page (,
but haven't yet been implemented here.

The utils/ directory contains readpuz.c, a sample puzzle reader and
writer.  It can be used to read any PUZ file, and also to compile the
text format down to binary form.  It uses almost the entire read API;
we don't have a good PUZ writing example at the moment.

Patches, constructive criticism, or general feedback are welcomed.
You can’t perform that action at this time.