| Crates.io | vgen |
| lib.rs | vgen |
| version | 0.2.0 |
| created_at | 2025-12-17 20:06:54.022126+00 |
| updated_at | 2026-01-04 19:41:47.544559+00 |
| description | Bitcoin vanity address generator with regex pattern matching and GPU acceleration |
| homepage | |
| repository | https://github.com/oritwoen/vgen |
| max_upload_size | |
| id | 1991066 |
| size | 573,227 |
Bitcoin vanity address generator with regex pattern matching and GPU acceleration.
[!WARNING] This project is experimental. Do not use generated keys for storing real funds without thorough verification. Always prefer hardware wallets or well-established software for production use.
cargo install vgen
paru -S vgen
cargo install --path .
# Find address starting with "1Cat"
vgen generate -p "^1Cat"
# Case insensitive matching
vgen generate -p "^1cat" -i
# Bech32 address ending with "dead"
vgen generate -p "dead$" -f p2wpkh
# Ethereum address
vgen generate -p "^0xdead" -f ethereum
# CPU only (GPU is enabled by default)
vgen generate -p "^1Cat" --no-gpu
# Find multiple matches
vgen generate -p "^1Cat" -c 5
vgen estimate -p "^1CatDog"
# Scan puzzle #66 range
vgen range --puzzle 66 -p "."
# Custom range
vgen range -r "20000000000000000:3FFFFFFFFFFFFFFFF"
Use external data sources for pattern generation:
# Vanity with puzzle address prefix (6 characters)
vgen generate -p "boha:b1000:66" -l 6
# → Resolves to pattern: ^13zb1h
# Puzzle solving (exact address match + auto key range)
vgen range -p "boha:b1000:66"
# → Range: 2^65..2^66-1
# → Pattern: ^13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so$
# With prefix matching in range mode
vgen range -p "boha:b1000:66" -l 8
Supported providers:
boha:collection:id - boha puzzle library (b1000, gsmg, bitaps, etc.)# From WIF
vgen verify -k "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ"
# From hex
vgen verify -k "0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d"
# Verify against expected address
vgen verify -k "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ" -a "1GAehh7TsJAHuUAeKZcXf5CnwuGuGgyX2S"
# Default text output
vgen generate -p "^1Cat" -o text
# JSON output (pretty-printed)
vgen generate -p "^1Cat" -o json
# JSON Lines (one JSON object per line, for data pipelines)
vgen generate -p "^1Cat" -o jsonl
# CSV (with header, for data catalogs/Iceberg)
vgen generate -p "^1Cat" -o csv
# Minimal (just WIF)
vgen generate -p "^1Cat" -o minimal
# Write to file
vgen generate -p "^1Cat" -o jsonl --file results.jsonl
vgen generate -p "^1Cat" -o csv --file results.csv

The interactive TUI is enabled by default in terminal sessions. Disable with --no-tui.
Features:
GPU acceleration is enabled by default and falls back to CPU if no compatible GPU is found.
Patterns use Rust regex syntax:
| Pattern | Description |
|---|---|
^1Cat |
Starts with "1Cat" |
dead$ |
Ends with "dead" |
^1[Cc]at |
Starts with "1Cat" or "1cat" |
^1.*dead$ |
Starts with "1", ends with "dead" |
| Project | Language | GPU | Patterns | Notes |
|---|---|---|---|---|
| vgen | Rust | wgpu (Vulkan/Metal/DX12) | regex | TUI, range scanning, memory safe |
| VanitySearch | C++ | CUDA | prefix | Fastest (~7 Gkeys/s), NVIDIA only |
| vanitygen-plusplus | C++ | OpenCL | prefix/regex | 100+ cryptocurrencies |
| btc-vanity | Rust | - | prefix/regex | BTC/ETH/SOL, CPU only |
| nakatoshi | Rust | - | prefix | Simple, prefix only |
| supervanitygen | C | - | prefix | ASM optimizations (AVX2/SHA-NI) |
| vanitygen | C | - | prefix/regex | Classic, unmaintained |
Why vgen?
Generated private keys are cryptographically secure random numbers. Always verify the generated key produces the expected address before use.
MIT