Recode Stamper
A small Python utility that encodes UTF-8 text into a 12- or 24-word mnemonic (RECODE) and decodes it back.
Install from PyPI
pip install recode-stamper
Quick start
After installation, use the CLI entry point:
recode --encode "MyPassword123!"
recode --decode "artist scavenge intimate airdrop humdrum curfew hexagon candy comedy bunion brevity aardvark"
Subcommands also work:
recode encode "MyPassword123!"
recode decode "artist scavenge intimate airdrop humdrum curfew hexagon candy comedy bunion brevity aardvark"
For interactive use, the CLI can also prompt for text securely without echoing it in the terminal:
recode --encode
recode encode
This is useful for avoiding accidental exposure in shell history or terminal logs.
Show help:
recode --help
If you are running directly from the repository checkout instead of the installed package:
python recode.py --encode "MyPassword123!"
python recode.py --decode "artist scavenge intimate airdrop humdrum curfew hexagon candy comedy bunion brevity aardvark"
How the format works
The RECODE format uses a fixed 4096-word list.
- Each word is mapped to a 12-bit value
- 2^12 = 4096 unique values
- A word index is therefore a number from 0 to 4095
The format automatically selects between 12 and 24 words:
- up to 16 bytes of data -> 12 words
- 17 to 32 bytes of data -> 24 words
- more than 32 bytes -> rejected
This keeps the output compact while preserving enough space for metadata and a checksum.
You can also force the format explicitly:
recode --encode "MyPassword123!" --plates 12
recode --encode "MyPassword123!" --plates 24
Why UTF-8
The encoder accepts UTF-8 text and converts it to bytes before packing the bit stream. This means it works for regular ASCII strings as well as non-ASCII text, while preserving deterministic behavior and a fixed wordlist layout.
Wordlist source
The file wordlist4096.txt is based on the public wordlist from:
https://raw.githubusercontent.com/kklash/wordlist4096/main/wordlist4096.txt
License
This project is licensed under the MIT License. See LICENSE for the full text.
The included wordlist is derived from the upstream source referenced above. Please check the original repository and license terms for the wordlist itself before using it in production or redistribution.
This repository does not claim to replace or relicense the upstream wordlist; it only references the source used for the local copy included here.
Metadata
Release files for recode-stamper 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| recode_stamper-0.1.5.tar.gz | 24.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| recode_stamper-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 47.9 kB
Release files / recode_stamper-0.1.5.tar.gz
| Download URL | recode_stamper-0.1.5.tar.gz |
|---|---|
| Size | 24.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5767d4f14afa358c9be04b7d1056f7bf92a6d000fbdfff721ef0b8a6b11edff7
|
|
BLAKE2b-256 checksum How to use checksums |
cad2019b84812df819b9976563a81075fdd287e79a9025ed46466994d8a72715
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / recode_stamper-0.1.5-py3-none-any.whl
| Download URL | recode_stamper-0.1.5-py3-none-any.whl |
|---|---|
| Size | 23.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5ea96c9bbc64f5218e2f8a9e04075bb4fe34f69ea3db53062c39c515fe124ca2
|
|
BLAKE2b-256 checksum How to use checksums |
0c1f3ca073f7aea9d05a643d39f745cfd023313a0fef3268a23920ae1c9a6381
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|