vgen
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.
Features
- 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
Installation
From crates.io
Arch Linux (AUR)
From source
Usage
Generate vanity address
# Find address starting with "1Cat"
# Case insensitive matching
# Bech32 address ending with "dead"
# Ethereum address
# CPU only (GPU is enabled by default)
# Find multiple matches
Estimate difficulty
Scan key range (Bitcoin Puzzles)
# Scan puzzle #66 range
# Custom range
Data providers
Use external data sources for pattern generation:
# Vanity with puzzle address prefix (6 characters)
# → Resolves to pattern: ^13zb1h
# Puzzle solving (exact address match + auto key range)
# → Range: 2^65..2^66-1
# → Pattern: ^13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so$
# With prefix matching in range mode
Supported providers:
boha:collection:id- boha puzzle library (b1000, gsmg, bitaps, etc.)
Verify private key
# From WIF
# From hex
# Verify against expected address
Output formats
# Default text output
# JSON output (pretty-printed)
# JSON Lines (one JSON object per line, for data pipelines)
# CSV (with header, for data catalogs/Iceberg)
# Minimal (just WIF)
# Write to file
TUI

The 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
Performance
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)
Pattern syntax
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" |
Comparison
| 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
Roadmap
- More cryptocurrencies (Litecoin, Dogecoin, Solana, etc.)
- GPU performance improvements (CUDA backend, shader optimizations)
- More data providers (mempool, blockchair, etc.)
Security
Generated private keys are cryptographically secure random numbers. Always verify the generated key produces the expected address before use.
License
MIT