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.
- Generate Bitcoin addresses matching custom regex patterns
- Support for multiple address formats:
- P2PKH (1...)
- P2WPKH / Bech32 (bc1q...)
- Ethereum (0x...)
- GPU acceleration via wgpu (Vulkan/Metal/DX12/OpenGL backends)
- Parallel CPU scanning with rayon
- Interactive TUI with real-time statistics
- Range scanning for Bitcoin Puzzle challenges
- Data providers for puzzle/bounty integration (boha)
- JSON and minimal output formats
cargo install vgenparu -S vgencargo 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 5vgen 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 8Supported 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.csvThe interactive TUI is enabled by default in terminal sessions. Disable with --no-tui.
Features:
- Real-time hashrate display
- Performance sparkline chart
- Luck indicator
- Found matches list
GPU acceleration is enabled by default and falls back to CPU if no compatible GPU is found.
- CPU: ~50,000-200,000 keys/sec (depends on CPU)
- GPU: ~500,000-2,000,000 keys/sec (depends on GPU)
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?
- Cross-platform GPU via wgpu (not locked to NVIDIA CUDA)
- Memory safe Rust implementation
- Full regex pattern support
- Interactive TUI with real-time statistics
- Bitcoin Puzzle range scanning built-in
- More cryptocurrencies (Litecoin, Dogecoin, Solana, etc.)
- GPU performance improvements (CUDA backend, shader optimizations)
- More data providers (mempool, blockchair, etc.)
Generated private keys are cryptographically secure random numbers. Always verify the generated key produces the expected address before use.
MIT
