Ethereum address checksum

Paste any Ethereum address to validate its EIP-55 checksum and copy the correctly capitalised form.

Verdict
Paste an address above to check it.

Everything runs in your browser: nothing is sent anywhere and no balances are checked. Never type a seed phrase or private key into any website, including this one.

What the strange capitalisation means

An Ethereum address is 40 hexadecimal characters after the 0x prefix, and hexadecimal does not care about case: 0xAB and 0xab are the same value. That spare degree of freedom is exactly what EIP-55, proposed in 2016 by Vitalik Buterin and Alex Van de Sande, puts to work. The mixed capitalisation you see in a modern Ethereum address is not decoration, it is a checksum woven into the letters themselves. Wallets that understand it can refuse a mistyped address before any money moves, and because the underlying characters are unchanged, software that knows nothing about EIP-55 still accepts the address as plain hex.

This tool checks both directions: paste a mixed case address and it verifies the capitalisation is exactly right, or paste an all lower case (or all upper case) address and it produces the properly checksummed form for you to copy. Everything runs locally in your browser and nothing is uploaded.

How the checksum is computed

hash = keccak256(lower case address without 0x)

Take the address in lower case, without its 0x prefix, and hash those 40 characters as text with keccak-256. Then walk the address one character at a time: digits stay as they are, and each letter is capitalised if the hex digit in the same position of the hash is 8 or above. That is the whole algorithm. On average about 15 of the 40 characters are letters, so a mistyped address has multiple chances to break the pattern; the EIP-55 specification puts the odds of a random mistake still passing at just 0.0247%.

keccak256 of an empty string
c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed (no checksum)
0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed (checksummed)
0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359 (no checksum)
0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359 (checksummed)

The last two are the worked examples from the EIP-55 specification itself, and the empty string digest is the classic test vector for a correct keccak-256 implementation. All three are reproduced by the code running on this page.

Keccak-256 is not SHA-3

A detail that trips up developers constantly: Ethereum's hash function is Keccak as originally submitted to the SHA-3 competition, not the SHA-3 standard NIST later published. Ethereum launched before the final standard landed, and NIST's version changed the padding byte (0x06 instead of Keccak's 0x01), so the two produce completely different digests for the same input. If you compute SHA3-256 of an address and your checksums never match, this is why. The implementation on this page is genuine keccak-256, with the full keccak-f[1600] permutation running in JavaScript in your browser, verified against the reference vectors above.

What this cannot tell you

A passing checksum proves transcription, nothing more. It does not tell you who controls the address, whether it is a contract or a personal wallet, or whether it is the right address on the right network; tokens sent to a valid address on the wrong chain, or to a contract that cannot handle them, can be lost just as thoroughly as tokens sent to a typo. Clipboard swapping malware also produces perfectly valid addresses, so compare the first and last few characters against your source, and consider a small test transfer before a large one.

Never type a seed phrase or private key into any website, including this one. Addresses are public and safe to check anywhere; seed phrases belong only in your wallet. This page is technical guidance, not financial advice, and UK regulators class cryptoassets as high risk with little consumer protection, as the FCA's cryptoassets guidance explains.

Frequently asked questions

Is my address sent anywhere when I check it?

No. The keccak-256 hashing and the checksum comparison run entirely in your browser with JavaScript. Nothing is transmitted, logged or stored, and the tool works with no connection at all once the page has loaded.

Why do Ethereum addresses mix capital and small letters?

The hex letters a to f mean the same thing in either case, so EIP-55 uses capitalisation as a free checksum. Each letter is capitalised or not according to the keccak-256 hash of the address, which lets wallets spot typos without changing the address itself.

My address is all lower case. Is it wrong?

No. An all lower case address is perfectly valid and every wallet accepts it; it simply carries no checksum, so a typo cannot be detected. Copy the checksummed form this tool produces and you get exactly the same address with typo protection built in.

Does a passing checksum mean the address is safe to send to?

No. It only proves the characters have not been mistyped. It says nothing about who controls the address, whether it is a contract, or whether it makes sense on the network you are using. Verify the address with its owner and consider a small test transfer first for large amounts.

Should I ever type my seed phrase into a website to check it?

Never. No legitimate website, wallet support team or airdrop needs your seed phrase or private key, and anyone who asks for one is trying to steal your funds. This tool accepts public addresses only, which are safe to share.

Related tools