Ethereum Address Generator
Generate valid Ethereum addresses with private keys using secp256k1 curve and Keccak-256 hashing. EIP-55 checksum compliant, fully offline.
About
An Ethereum address is a 20-byte identifier derived from the last 20 bytes of a Keccak-256 hash of the public key. The public key itself is a point on the secp256k1 elliptic curve, computed by multiplying the generator point G by a 256-bit private key k. Mishandling key generation - using weak randomness, reusing keys, or exposing private material - results in permanent, irrecoverable loss of funds. There is no password reset on a blockchain. This tool performs real secp256k1 scalar multiplication and genuine Keccak-256 hashing entirely in your browser. No data leaves your machine. Addresses are encoded with EIP-55 mixed-case checksums to catch transcription errors.
Limitations apply. This generator assumes your browser provides cryptographically secure randomness via crypto.getRandomValues. It does not protect against compromised operating systems, clipboard hijackers, or screen-capture malware. For high-value storage, use dedicated hardware wallets. This tool is suitable for development, testing, and educational purposes. For production wallets holding significant value, verify generated keys against a second independent implementation before depositing funds.
Formulas
The private key k is a random integer sampled uniformly from the range [1, n โ 1], where n is the order of the secp256k1 curve. The corresponding public key is the elliptic curve point:
where G is the generator point of secp256k1. The uncompressed public key is serialized as 0x04 || Qx || Qy (65 bytes). The Ethereum address is then derived as:
The notation [12:] means taking bytes from index 12 to 31 (the last 20 bytes of the 32-byte hash). EIP-55 checksum encoding applies mixed-case formatting. Let h = Keccak256(lowercase(addr)). For each hex character addr[i]:
Where h[i] refers to the i-th nibble (4-bit value) of the hash. The secp256k1 curve is defined by y2 โก x3 + 7 (mod p), where p = 2256 โ 232 โ 977. Point addition uses standard affine coordinate formulas with modular inverse computed via Fermat's little theorem: aโ1 โก ap โ 2 (mod p).
Reference Data
| Parameter | Value | Description |
|---|---|---|
| Curve | secp256k1 | Elliptic curve used by Ethereum and Bitcoin |
| Field Prime p | 2256 โ 232 โ 977 | Prime modulus of the finite field |
| Curve Order n | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 | Number of points on the curve |
| Generator Gx | 79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798 | x-coordinate of base point |
| Generator Gy | 483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8 | y-coordinate of base point |
| Private Key Size | 256 bits (32 bytes) | Random integer in range [1, n โ 1] |
| Public Key (Uncompressed) | 65 bytes | Prefix 0x04 + x (32 bytes) + y (32 bytes) |
| Hash Function | Keccak-256 | Pre-standardization SHA-3 variant (different padding than NIST SHA-3) |
| Address Length | 20 bytes (40 hex chars + 0x prefix) | Last 20 bytes of Keccak-256 hash of public key |
| Checksum Standard | EIP-55 | Mixed-case encoding for error detection |
| Keccak Rate | 1088 bits | Sponge construction rate parameter |
| Keccak Capacity | 512 bits | Sponge construction capacity parameter |
| Keccak Rounds | 24 | Number of permutation rounds |
| Curve Equation | y2 โก x3 + 7 (mod p) | Short Weierstrass form with a = 0, b = 7 |
| Cofactor | 1 | Every point (except identity) is a generator |
| Key Space | ~2256 | Approximately 1.16 ร 1077 possible keys |
| Collision Resistance | 2128 | Birthday bound for 256-bit hash |
| Address Collision | 280 | Birthday bound for 160-bit address |
Frequently Asked Questions
crypto.getRandomValues(), which provides cryptographically secure pseudorandom numbers seeded by the operating system's entropy pool (e.g., /dev/urandom on Linux, CryptGenRandom on Windows). The generated 256-bit value is validated to fall within the range [1, n โ 1] where n is the secp256k1 curve order. Values of 0 or โฅ n are rejected and regenerated. This matches the security guarantees of hardware wallet random number generators.