{"id":51513188,"url":"https://github.com/gamepunk/vanitygen-cli","last_synced_at":"2026-07-08T08:30:49.349Z","repository":{"id":367213589,"uuid":"1279775167","full_name":"gamepunk/vanitygen-cli","owner":"gamepunk","description":"Bitcoin vanity address generator — find your perfect address.","archived":false,"fork":false,"pushed_at":"2026-06-25T03:52:41.000Z","size":200,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-25T05:05:54.590Z","etag":null,"topics":["bitcoin","cargo","linux","macos","rust","vanity","windows"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/vanitygen","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gamepunk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-25T02:18:08.000Z","updated_at":"2026-06-25T04:10:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gamepunk/vanitygen-cli","commit_stats":null,"previous_names":["gamepunk/vanity","gamepunk/vanitygen"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/gamepunk/vanitygen-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamepunk%2Fvanitygen-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamepunk%2Fvanitygen-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamepunk%2Fvanitygen-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamepunk%2Fvanitygen-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gamepunk","download_url":"https://codeload.github.com/gamepunk/vanitygen-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamepunk%2Fvanitygen-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35258965,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-08T02:00:06.796Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","cargo","linux","macos","rust","vanity","windows"],"created_at":"2026-07-08T08:30:48.496Z","updated_at":"2026-07-08T08:30:49.342Z","avatar_url":"https://github.com/gamepunk.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vanitygen\n\n[![CI](https://github.com/gamepunk/vanitygen/actions/workflows/ci.yml/badge.svg)](https://github.com/gamepunk/vanitygen/actions/workflows/ci.yml)\n[![Crates.io](https://img.shields.io/crates/v/vanitygen.svg)](https://crates.io/crates/vanitygen)\n[![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n\n[中文版](README.zh-CN.md)\n\n**Bitcoin vanity address generator — find your perfect address.**\n\nGenerate custom Bitcoin addresses with a chosen prefix\n(e.g. `1Bit`, `1Pizza`, `bc1qninja`).  Supports all 4 address formats.\n\nAll cryptographic primitives are delegated to the audited\n[`rust-bitcoin`](https://github.com/rust-bitcoin/rust-bitcoin) crate\n(backed by `libsecp256k1` — the same C library Bitcoin Core uses).\n\n---\n\n## Install\n\n### Prerequisites\n\n- **Rust 1.70+** — install via [rustup](https://rustup.rs) (all platforms)\n- Nothing else — no OpenSSL, no system libraries\n\n### Build\n\n```bash\ncargo build --release\n./target/release/vanitygen 1Bit\n```\n\nOr install globally:\n\n```bash\n# From crates.io (recommended):\ncargo install vanitygen\n\n# Or build from source:\ncargo install --git https://github.com/gamepunk/vanitygen.git\n\n# Then run:\nvanitygen 1Bit\n```\n\n### Platform notes\n\n| Platform | Build | Bark notifications |\n|----------|-------|-------------------|\n| macOS    | ✅ native | ✅ uses system `curl` |\n| Linux    | ✅ native | ✅ uses `curl` |\n| Windows  | ✅ native | ❌ not supported (no `curl`) |\n\nBark is optional and purely cosmetic — the tool works fully on all platforms\nwithout it.\n\n---\n\n## Commands\n\n### `vanitygen` / `vanitygen search` — Search for a vanity address\n\n**Default command.**  Find an address matching a pattern (prefix, suffix,\nanywhere, or regex).\n\n```\nvanitygen 1Bit\nvanitygen search 1Bit\n```\n\n**Options:**\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `-t, --address-type TYPE` | `legacy` | Address type |\n| `-i, --case-insensitive` | off | Match any letter case (faster) |\n| `-m, --mnemonic` | off | Use BIP39+BIP32 derivation (outputs seed phrase) |\n| `-u, --uncompressed` | off | Uncompressed public key (Legacy only) |\n| `-T, --threads N` | all cores | Worker threads |\n| `-q, --quiet` | off | Suppress progress output |\n| `--bark KEY` | — | Bark API key for iOS push notification |\n| `-p, --match-prefix` | (default) | Match pattern as prefix |\n| `-s, --suffix` | off | Match pattern as suffix |\n| `-a, --anywhere` | off | Match pattern anywhere in the address |\n| `-r, --regex` | off | Interpret pattern as a regular expression |\n| `--words N` | `24` | BIP39 word count: 12/15/18/21/24 (with `--mnemonic`) |\n| `-n, --count N` | `1` | Number of addresses to find |\n| `--input-file FILE` | — | Read patterns from file (one per line) |\n| `-o, --output-file FILE` | — | Append results to file |\n\n**Examples:**\n\nSearch Legacy, normal mode (fast, outputs WIF):\n```\n$ vanitygen 1Pizza -T 8\n\u003e\u003e Self-test passed\n\u003e\u003e Searching\n  prefix: 1Pizza\n  type: Legacy (P2PKH)\n  threads: 8\n\n\u003e\u003e Found vanity address\n  Address: 1Pizza5RqXnupPvn9KbK8cLTBPcVB8zFhE\n  WIF: L2VH7b3xpLkv1jN8bPNdw73tK8fH...   ← import this into your wallet\n  attempts: 10,317\n  elapsed: 11.2s\n\n\u003e\u003e Same-key addresses\n  Legacy (P2PKH): 1Pizza5RqXnupPvn9KbK8cLTBPcVB8zFhE\n  Nested SegWit (P2SH): 3Ji9hUqTq15rQd...\n  Native SegWit (P2WPKH): bc1qpy7y0...\n  Taproot (P2TR): bc1pxv50f...\n```\n\nSearch case-insensitive (faster, address letter-case will be random):\n```\nvanitygen 1bit -i -T 8\n```\n\nSearch with uncompressed public key (Legacy only):\n```\nvanitygen 1Pizza -u -T 8\n```\n\nSearch with mnemonic (slower, outputs BIP39 seed phrase, 24 words by default):\n```\n$ vanitygen 1Pizza -m\n\u003e\u003e Searching\n  prefix: 1Pizza\n  type: Legacy (P2PKH)\n  threads: 8\n  source: BIP39+BIP32\n\n\u003e\u003e Found vanity address\n  Address: 1Pizza5RqXnupPvn9KbK8cLTBPcVB8zFhE\n  WIF: L2VH7b3xpLkv1jN8bPNdw73tK8fH...\n\n\u003e\u003e BIP39 Mnemonic\n  abandon ability able about above absent...\n\n  derivation path: m/44'/0'/0'/0/0\n\n\u003e\u003e Wallet addresses (index 0)\n  Legacy (P2PKH): 1Pizza5RqXnupPvn9KbK8cLTBPcVB8zFhE  (path: m/44'/0'/0'/0/0)\n  Nested SegWit (P2SH): 3Ji9hUqTq15rQd...                      (path: m/49'/0'/0'/0/0)\n  Native SegWit (P2WPKH): bc1qpy7y0...                          (path: m/84'/0'/0'/0/0)\n  Taproot (P2TR): bc1pxv50f...                             (path: m/86'/0'/0'/0/0)\n```\n\nSearch other address types:\n```\nvanitygen bc1qbit -t segwit\nvanitygen 3Pizza -t p2sh\nvanitygen bc1pbit -t taproot\n```\n\n**Match modes:**\n\nBy default the pattern is matched as a **prefix** (the address starts with it).\nUse one of these flags to change the match behaviour:\n\n```bash\n# Suffix mode — address ends with \"pizza\"\nvanitygen pizza -s -t segwit\n\n# Suffix + case-insensitive\nvanitygen pizza -s -i -t segwit\n\n# Anywhere mode — address contains \"ninja\"\nvanitygen ninja -a -t segwit\n\n# Regex mode — any regex pattern supported by the regex crate\nvanitygen '^1[A-Z]{3}.*[0-9]{2}$' -r -t legacy\n\n# Regex + suffix-style via regex anchor\nvanitygen 'pizza$' -r -t segwit\n```\n\n**Mnemonic word count:**\n\n```bash\n# 12-word mnemonic (faster generation, still secure)\nvanitygen 1Pizza -m --words 12\n\n# Default: 24 words (256-bit security)\nvanitygen 1Pizza -m\n```\n\n**Batch mode (input / output files):**\n\nCreate a file with one pattern per line (blank lines and `#` comments are\nskipped). Each line can optionally include inline flags after the pattern:\n\n```bash\nvanitygen --input-file patterns.txt -o results.txt\n```\n\nThe input file format:\n```\n# My patterns\n1Bitcoin              # uses CLI defaults (prefix, legacy)\nninja -a -t segwit    # anywhere mode, segwit address\npizza -s -i           # suffix mode, case-insensitive\n^1A.*T$ -r            # regex mode\n```\n\nResults are appended to the output file in a structured format:\n```\n---\npattern: 1Bitcoin\nmode: Prefix\naddress: 1BitcoinXXXXXXXXXXXXXX\nwif: Lxxxxxxxxxxxxxxxxxxxxxxx\nattempts: 12345\nelapsed: 10.23s\n```\n\n---\n\n### `vanitygen verify` — Validate a WIF private key\n\nParse a WIF and show all four derived addresses.\n\n```\n$ vanitygen verify Kz6K83ge1AeeDi7fvE7kxGkyYws47sucXUZZwMXVTFG9q7u4ey12\n\u003e\u003e WIF Verification\n  network: Mainnet\n  compressed: true\n\n\u003e\u003e Derived addresses\n  Legacy (P2PKH): 1Ninja2TuXomkKakWbMzb9VBG8aj5krLbF\n  Nested SegWit (P2SH): 37nx7BGgtq28QbRfMAdHYg2zsjmGBiVtuQ\n  Native SegWit (P2WPKH): bc1qaeqa7easxmtfzr2jrpaqex9t6nudj0887p8cdq\n  Taproot (P2TR): bc1pm3xcsp9ys2y6f2elt0yqzycrdkssdv4xhznjudqn2r07k2ympvusdnazap\n```\n\n---\n\n### `vanitygen address` — Derive all address types from a key\n\nShows all four address formats from a single private key.\n\n```\n$ vanitygen address Kz6K83ge1AeeDi7fvE7kxGkyYws47sucXUZZwMXVTFG9q7u4ey12\n\u003e\u003e Addresses from private key\n  network: Mainnet\n  compressed: true\n\n\u003e\u003e Derived addresses\n  Legacy (P2PKH): 1Ninja2TuXomkKakWbMzb9VBG8aj5krLbF\n  Nested SegWit (P2SH): 37nx7BGgtq28QbRfMAdHYg2zsjmGBiVtuQ\n  Native SegWit (P2WPKH): bc1qaeqa7easxmtfzr2jrpaqex9t6nudj0887p8cdq\n  Taproot (P2TR): bc1pm3xcsp9ys2y6f2elt0yqzycrdkssdv4xhznjudqn2r07k2ympvusdnazap\n```\n\n---\n\n### `vanitygen mnemonic` — Generate a random BIP39 wallet\n\nCreates a 24-word BIP39 mnemonic (256-bit) and derives addresses\nfor all 4 standard BIP32 paths at index 0.\n\n```\n$ vanitygen mnemonic\n\u003e\u003e BIP39 Mnemonic (24 words, 256-bit)\n  abandon ability able about above absent abstract ...\n\n\u003e\u003e Legacy (P2PKH)\n  path: m/44'/0'/0'/0/0\n  WIF: L25wxdxzuhRbAZ5ScDf...\n  P2PKH: 1Htr2MgUzhxRLuzAb3HB6HxgEoBe2Cswmq\n  P2SH: 3MAJvD3BF4EvvponEDZQckPKc5TaY9oCSz\n  P2WPKH: bc1qh9gzvddydxcx7w2wh28sypt7xj0xlgcy9pngc6\n  P2TR: bc1p84pg4cl2zxda5k6lydugnh2umdsc8e5035303ss3f0pqvxmcdmqsc6r43y\n```\n\n⚠ Write down these 24 words.  Keep them offline.  Anyone with this phrase\ncan steal your funds.\n\n---\n\n### `vanitygen benchmark` — Measure performance\n\nDerives all 4 address types from random keys to measure throughput.\n\n```\n$ vanitygen benchmark\n\u003e\u003e Benchmark\n  threads: 8\n  iterations: 400000 (50000 per thread)\n\n\u003e\u003e Results\n  elapsed: 3.315s\n  keys derived: 400000\n  speed: 0.12 Mkeys/s\n  threads: 8\n  per thread: 15.08 kkeys/s\n```\n\n---\n\n## Address Types\n\n| Type | CLI name | Prefix | Encoding | BIP standard |\n|------|----------|--------|----------|-------------|\n| Legacy (P2PKH) | `legacy` | `1…` | Base58Check | BIP44 |\n| Nested SegWit (P2SH) | `p2sh` | `3…` | Base58Check | BIP49 |\n| Native SegWit (P2WPKH) | `segwit` | `bc1q…` | Bech32 | BIP84 |\n| Taproot (P2TR) | `taproot` | `bc1p…` | Bech32m | BIP86 |\n\n---\n\n## Performance\n\nTimings for **normal mode** on an M-series Mac (8 threads, ~1 Mkeys/s).\n\n| Effective chars | Avg tries | Normal mode | `--mnemonic` mode |\n|:---:|---:|---:|---:|\n| 2 | 3.3×10³ | \u003c 0.1s | ~1s |\n| 3 | 1.9×10⁵ | 0.2s | ~50s |\n| 4 | 1.1×10⁷ | 11s | ~50 min |\n| 5 | 6.5×10⁸ | 11 min | impractical |\n| 6+ | 3.8×10¹⁰ | ~10 h | impractical |\n\nUse `--mnemonic` for short prefixes (2–3 chars).  For longer prefixes use\nnormal mode and import the WIF directly.\n\n---\n\n## Notes\n\n**Base58Check encoding:** The second character of a P2SH address (`3…`) is\nalways uppercase (A–R) or a digit (1–9) — never lowercase.  For Legacy\naddresses (`1…`) it's lowercase only ~2% of the time.  The tool warns\nyou if you try an impossible prefix.\n\n### Push notification (Bark)\n\nReceive an iOS push notification when a match is found.\n\n**Setup:** Get your free API key from the [Bark app](https://bark.day.app/).\n\n```bash\n# Via CLI flag:\nvanitygen 1Pizza --bark YOUR_KEY_HERE\n\n# Or via config file (recommended):\n#   ~/.config/vanitygen/config.toml\n#   bark_key = \"YOUR_KEY_HERE\"\n```\n\nCLI flag overrides config file.\n\nUses system `curl` — zero deps.  Not available on Windows (no `curl`).\n\n---\n\n## Configuration file\n\n`vanitygen` loads settings from `~/.config/vanitygen/config.toml` (XDG standard).\n\n```toml\n# ~/.config/vanitygen/config.toml\n\n# Default thread count (overridable by -T / --threads)\nthreads = 8\n\n# Bark API key for iOS push notification\nbark_key = \"YOUR_KEY_HERE\"\n\n# Default address type (legacy, p2sh, segwit, taproot)\n# address_type = \"legacy\"\n```\n\nCLI flags always override config file values.\n\n---\n\n## Dependencies\n\n```\nvanitygen v0.4.0\n├── bip39       — BIP39 mnemonic generation\n├── bitcoin     — Bitcoin address / key types\n├── bs58        — Base58Check encoding (hot path)\n├── clap        — CLI argument parsing\n├── rand        — Cryptographic random numbers\n├── ripemd      — RIPEMD-160 hashing (hot path)\n└── sha2        — SHA-256 hashing (hot path)\n```\n\n---\n\n## Disclaimer\n\n**⚠ Use at your own risk.**\n\nThis tool generates Bitcoin private keys entirely on your local machine.\nPrivate keys and mnemonic phrases are displayed in plain text on your\nterminal.  Anyone with access to your screen, terminal history, or\nclipboard can steal your funds.\n\n- **Always move funds to a new address immediately** after the vanity\n  address is funded.\n- **Clear your terminal history** after generating a key\n  (`history -c` on Unix, or restart your terminal).\n- **Never** share your WIF, mnemonic phrase, or private key with anyone.\n- **Run on an offline (air-gapped) machine** for maximum security.\n- The authors assume **no liability** for any loss of funds or damages\n  arising from the use of this software.\n\nBy using this software you accept these terms.\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamepunk%2Fvanitygen-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgamepunk%2Fvanitygen-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamepunk%2Fvanitygen-cli/lists"}