FUGUSEED-WORDS(1) General Commands Manual FUGUSEED-WORDS(1)

fuguseed-wordsbuild the printed word sheet, and check a built one

fuguseed-words build list [--date YYYY-MM-DD]

fuguseed-words check sheet list

fuguseed-words builds the printed word sheet of a word list, and it proves a built sheet against that list. The sheet is the address space of three dice: one throw selects one word of the list, and the person does no arithmetic.

fuguseed-words sees no seed word. It reads no word of a person and it prints none, so it can run on any computer. The offline procedure that uses the sheet lives in fuguseed(7).

Both verbs take a word list file. fuguseed-words computes the SHA-256 of that file, and it refuses every list but the English word list of BIP39. fuguseed-words --help names the path of the shipped list.

fuguseed-words build list writes the sheet as HTML to standard output. The sheet is one standalone file: the build inlines the style sheet.

The option --date YYYY-MM-DD sets the build date of the two footers. Two builds of one list on one date give one file, byte for byte. Without the option, the build takes the date of the day, in UTC.

fuguseed-words check sheet list proves that sheet is the sheet of list. The verb reads the whole sheet as one strict grammar, from the first byte to the last. It compares the inlined style sheet with the shipped one byte for byte, and it compares each caption, each header, and each of the 2048 cells with the text of its position.

The verb is silent on success. On a failure it prints one line for each defect on standard error. A line names the offset of the first unexpected byte, or the block, the row, and the column of a cell.

The sheet holds two sides for A4 paper. Side 1 holds the YELLOW blocks 1 to 4, and side 2 holds the YELLOW blocks 5 to 8. Each block is one table of 16 BLUE rows and 16 RED columns, so the eight blocks hold the 2048 words of the list.

Each side holds a legend that names the three dice, and a footer that names the side, the standard, the SHA-256 of the list, and the build date.

Print the sheet on A4 paper, on both sides of one sheet, at 100 percent scale, and in color. The color of a label is a second name of the die: the captions are YELLOW, the column headers are RED, and the row headers are BLUE. A black print keeps the names, because each label holds the name of the color as a word.

Check the print against the file before you use it. Each table must hold 16 rows and 16 columns, and no word may run over two lines.

0
fuguseed-words wrote the sheet, or the check found no defect.
1
fuguseed-words could not read a file, the list had another SHA-256, or the check found a defect. fuguseed-words printed one line for each reason on standard error.
2
The command line held no verb, a wrong argument count, or a malformed option value. fuguseed-words printed the usage line on standard error.

Build the sheet of the shipped word list:

$ fuguseed-words build english.txt > sheet.html

Build the sheet of one date, twice, and compare the two files:

$ fuguseed-words build --date 2026-01-01 english.txt > a.html
$ fuguseed-words build --date 2026-01-01 english.txt > b.html
$ cmp a.html b.html

Check a sheet before you print it:

$ fuguseed-words check sheet.html english.txt

fuguseed-qr(1), fuguseed(7)

The word list comes from BIP39, the mnemonic code for the generation of a deterministic key. The sheet is HTML5.

Dick Olsson <hi@senzilla.io>

The check proves the sheet, not the print. A printer can drop a color, cut a margin, or scale a page, and no program sees that. Compare the print with the file.

September 19, 2026 OpenBSD