npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

v4n1ty

v0.0.2

Published

Multi-threaded Ethereum vanity address generator with beautiful CLI

Downloads

7

Readme

V4N1TY - Ethereum Vanity Address Generator

A fast, multi-threaded Ethereum vanity address generator built with TypeScript and Bun.

🚀 Features

  • Multi-threaded: Utilizes all CPU cores for maximum performance
  • Multiple search modes: Find patterns at the start, end, anywhere, or specific positions
  • Case-sensitive/insensitive: Flexible pattern matching options
  • Real-time progress: Live performance statistics and progress updates
  • Difficulty estimation: Estimate time and probability before starting
  • Beautiful CLI: Modern, colorful command-line interface
  • Secure: Generates cryptographically secure private keys

📦 Installation

Prerequisites

  • Node.js 18+ (for npm installation)
  • Bun (recommended for development)

Install from npm (recommended)

# Install globally
npm install -g v4n1ty

# Or use npx (no installation required)
npx v4n1ty dead

Install from source

git clone <repository-url>
cd v4n1ty
bun install
bun run build

Global installation from source

bun install -g .

🎯 Usage

Basic Usage

Generate an address starting with "dead":

v4n1ty dead

Search Modes

  • start (default): Pattern at the beginning
  • end: Pattern at the end
  • anywhere: Pattern anywhere in the address
  • position: Pattern at a specific position
# Address starting with "cafe"
v4n1ty cafe --mode start

# Address ending with "beef"
v4n1ty beef --mode end

# Address containing "1337" anywhere
v4n1ty 1337 --mode anywhere

# Address with "dead" at position 5
v4n1ty dead --mode position --position 5

Options

Options:
  -m, --mode <mode>        Search mode: anywhere, start, end, position (default: "start")
  -p, --position <number>  Position for position mode (0-indexed)
  -c, --case-sensitive     Case sensitive search (default: false)
  -w, --workers <number>   Number of worker threads (default: CPU cores)
  -v, --verbose            Verbose output (default: false)
  -e, --estimate           Only estimate difficulty (don't generate) (default: false)
  --no-color               Disable colored output
  -h, --help               Display help for command

Examples

# Case-sensitive search for "CaFe"
v4n1ty CaFe --case-sensitive

# Use 8 worker threads
v4n1ty dead --workers 8

# Find "1337" at position 10
v4n1ty 1337 --mode position --position 10

# Estimate difficulty before starting
v4n1ty deadbeef --mode start --estimate

🔍 Difficulty Estimation

Use the --estimate flag to check how difficult your target is:

v4n1ty <target> --estimate [options]

This will show:

  • Probability of finding the pattern
  • Estimated time to find
  • Recommendations for difficult targets

⚡ Performance

Performance depends on:

  • Target length: Longer targets are exponentially harder
  • Search mode: "anywhere" is generally faster than "start" or "end"
  • Case sensitivity: Case-insensitive is typically faster
  • CPU cores: More threads = better performance

Typical performance: 50,000+ addresses/second on modern hardware.

🔐 Security

  • Uses cryptographically secure random number generation
  • Private keys are generated using the viem library
  • Important: Keep your private keys secure and never share them
  • This tool is for educational/vanity purposes only

🛠️ Development

Scripts

# Run in development mode
bun run dev <args>

# Build for production
bun run build

# Run built version
bun run start <args>

Project Structure

src/
├── index.ts      # Main entry point
├── cli.ts        # CLI interface and argument parsing
├── generator.ts  # Main generator class
├── worker.ts     # Worker thread logic
├── utils.ts      # Utility functions
└── types.ts      # TypeScript type definitions

📊 Examples

Easy targets (< 1 minute)

v4n1ty a        # ~1 in 16
v4n1ty ab       # ~1 in 256
v4n1ty abc      # ~1 in 4,096

Medium targets (1-10 minutes)

v4n1ty dead     # ~1 in 65,536
v4n1ty cafe     # ~1 in 65,536
v4n1ty 1337     # ~1 in 65,536

Hard targets (10+ minutes)

v4n1ty deadbeef # ~1 in 4,294,967,296
v4n1ty cafebabe # ~1 in 4,294,967,296

⚠️ Important Notes

  1. Vanity addresses are for fun/branding only - they don't provide additional security
  2. Never reuse private keys - generate fresh keys for each use
  3. Backup your keys - loss of private key = loss of funds
  4. Test first - try with small amounts before using for significant funds
  5. Consider hardware wallets - for storing large amounts

🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

MIT License - see LICENSE file for details.

🙏 Acknowledgments

  • Built with Viem for Ethereum utilities
  • Uses Bun for fast JavaScript runtime
  • CLI powered by Commander.js
  • Styling with Chalk
  • Progress indicators with Ora