Private Key to Address Converter

Derive the public address for a private key — entirely offline, in your browser.

Never enter a private key that holds — or will ever hold — real funds.

This runs entirely in your browser (view page source to check — there's no network call this could send a key through), but the safest rule for any tool, including this one, is to treat a key you’ve typed anywhere outside your own wallet software as compromised. Use this only for test/burner keys you’re willing to discard.

What this is actually for

Every Ethereum private key deterministically produces exactly one address, through elliptic-curve multiplication followed by a Keccak-256 hash. This tool exists for the cases where you need that derivation without your full wallet open — checking a test account, debugging a script that generates burner wallets, confirming a key you generated elsewhere resolves to the address you expect.

What this is not for

Never type in a private key for a wallet that holds, or will ever hold, real value — not here, not on any website. There is no legitimate reason a web tool needs your real key, and the standard practice for anything holding real funds is a hardware wallet or, at minimum, wallet software that never exposes the raw key to begin with.

How this tool works

Your input never leaves the page — there’s no server component to this tool at all. Derivation uses viem’s privateKeyToAccount, the same function used elsewhere across this site and much of the Ethereum tooling ecosystem.

Frequently asked questions

The honest answer is: treat any key you type outside your own wallet software as compromised, on principle, regardless of what a site claims. This tool never makes a network request with what you type — you can verify that yourself by opening your browser's Network tab, or by disconnecting from the internet entirely and reloading the page before using it. But the safest private key is one you never type into a browser at all — use this only for test or burner keys you're willing to discard.

A private key is a random 256-bit number. Elliptic-curve multiplication (secp256k1, the same curve Bitcoin uses) turns it into a public key; Keccak-256 hashing the public key and taking the last 20 bytes gives the address. Every step is deterministic — the same private key always produces the same address.

Mainly for development — confirming a test wallet's address matches what you expect, debugging a script that manages burner keys, or verifying an address before funding a local/testnet account. It's not needed for everyday wallet use; your wallet software already does this internally.

No. Derivation happens with viem's implementation entirely in memory in your browser tab. Nothing is written to storage, logged, or sent anywhere — reloading the page clears it completely.