CREATE2 · EVM · offline

CREATE2 vanity contract address

When you deploy through a factory with CREATE2, the contract address is determined by deployer, salt, and init-code hash. vanity-address grinds salts until the predicted address matches your pattern — locally.

What you need

How to run

  1. Open /generate/ → Contract mode → CREATE2, or use the CLI.
  2. Paste deployer + init-code hash.
  3. Set your pattern and grind until a salt matches.
  4. Use that salt in your factory’s create2 call.
npx vanity-address --create2 \
  --deployer 0xYourFactory \
  --init-code-hash 0xYourHash \
  --prefix cafe

CREATE (nonce 0) vs CREATE2

If you do not have a factory and only care about the first contract from a fresh deployer, use EVM contract mode (evm-contract) instead — it grinds the deployer key, not a salt.

Hex difficulty for contract addresses

CREATE2 addresses are 20-byte values shown as 40 hex characters, so each fixed character multiplies the expected number of salts by 16. The tool re-computes the address from the exact inputs before showing a result.

Pattern lengthExpected attemptsAverage time @ 1M keys/s
116under a second
2256under a second
34,096under a second
465,536under a second
51.0 million1 second
616.8 million17 seconds
7268 million4.5 minutes
84.3 billion1.2 hours

Times assume one million keys per second and are illustrative.

Frequently asked questions

What exactly is ground in CREATE2 vanity?

The salt. The contract address is the last 20 bytes of keccak256(0xff ++ deployer ++ salt ++ init_code_hash), so you search salts until the address matches.

Can I change the contract code afterwards?

No. Changing the init code changes init_code_hash and therefore the address, so finalise the bytecode and constructor arguments before grinding.

Is a CREATE2 vanity address the same on every chain?

It can be, provided the same deployer, salt and init code are used on each chain.

How hard is a 6-hex-character prefix?

16⁶ ≈ 16.8 million salts on average.