Cats are more complex than dogs.
A phrase-password generator that draws from 16,913 embedded cat names, sprinkles in digits and symbols, scores five candidates with Shannon entropy and a stack of complexity heuristics, and hands you the best one. Pure C11. Single binary. Linux + macOS. White-hat.
Marketing site: https://spacetrucker2196.github.io/MeowPasswordC/
- 16,913 cat names embedded directly in the binary — no data files, no network
- OS-grade randomness (
getrandom()//dev/urandom) with rejection sampling - Best-of-five candidate selection scored across four metrics
- Catified analysis labels in the CLI (Tail Size, Ball of Yarn Entropy, Mashing Resistance, Shiny Foil Ball Uniqueness, Organic NonGMO Catnip)
--analyzemode to score any existing string--psssstsilent mode: copy the winner without ever displaying it--updateself-updater that checks GitHub Releases- Clipboard via
pbcopy(macOS),xclip, orwl-copy(Linux) - Pure C11. Zero runtime dependencies.
make
./meowpasscmake -B build
cmake --build build
./build/meowpasssudo make install# default — generate, score, show, hint to copy
meowpass
# tune the recipe
meowpass --numbers 4 --symbols 3 --max-length 30
# silent mode — copy winner to clipboard, print nothing
meowpass --psssst
# audit a string you already have
meowpass --analyze "MyP@ssw0rd!"
# run the test suite
meowpass --test
# self-update
meowpass --update| Flag | What it does | Range / default |
|---|---|---|
--numbers N |
Random digits inserted into the phrase | 1–10 · default 1–4 |
--symbols N |
Letter→symbol substitutions | 1–10 · default 2 |
--max-length N |
Cap on final password length | 15–50 · default 25 |
--copy |
Copy winner to clipboard after display | pbcopy / xclip / wl-copy |
--psssst, -p |
Silent mode — copy only, never print | — |
--analyze, -a S |
Score an existing string instead of generating | — |
--update |
Self-update from GitHub releases | requires curl |
--test |
Run bundled tests | — |
--help, -h |
Print help | — |
- Draw a handful of cat names from the embedded dictionary
- Join them lowercase into a phrase
- Randomly capitalize a few characters
- Insert digits at random positions
- Substitute symbols for select letters
- Repeat steps 1–5 five times to produce candidates
- Score each candidate; emit the one with the lowest (best) composite score
Internally these are the standard names; in CLI output they wear catified labels.
| Internal | CLI label | What it measures |
|---|---|---|
| Shannon entropy | Ball of Yarn Entropy | Bits of information per character |
| Compression ratio | Mashing Resistance | How repetitive the string is (lower = better) |
| Pattern complexity | Shiny Foil Ball Uniqueness | Substring uniqueness vs length |
| Character diversity | Organic NonGMO Catnip | Coverage of lower/upper/digits/symbols |
| Composite score | Overall Relavency | Weighted blend — lower is better |
- C11 compiler (gcc or clang)
- Linux or macOS
- Optional:
xcliporwl-copyon Linux, orpbcopyon macOS, for--copy - Optional:
curlfor--update
src/ core C — main, config, password, complexity, random, display, update
src/catnames.c embedded cat-name dictionary (16,913 entries)
tests/ unit tests run by --test
features/ BDD/behave feature files
docs/ marketing site (GitHub Pages)
MIT — see LICENSE.
Jeffrey Kunzelman
Original Swift implementation: MeowPassword.