Ethereum Address Checksum (EIP-55)
Validate or apply the EIP-55 mixed-case checksum for any Ethereum address.
Overview
Ethereum addresses are 20-byte (160-bit) values rendered as 40 hex characters with a 0x prefix. Hex is case-insensitive on chain, so 0xabcd… and 0xABCD… refer to the same account. That created a real-world problem: a single mistyped hex character produces a different but still syntactically valid address, and the network has no way to flag it before funds disappear. EIP-55 fixes this by encoding a checksum into the case of each hex letter.
A validator applies the EIP-55 rule to confirm that the case pattern of an address matches the cryptographic hash of its lowercase form. If even one letter is in the wrong case the address is rejected. The same algorithm can also be used in reverse — given a lowercase address, the tool produces its canonical mixed-case form, which is what wallets, block explorers, and ERC-20 token contracts now display.
How it works
Strip the 0x and lowercase the 40 hex characters. Compute keccak-256 over those lowercase ASCII bytes and take the first 40 hex characters of the digest. For each position in the address: if the corresponding nibble of the hash is >= 8, the address letter at that position must be uppercase; otherwise it must be lowercase. Digits (0–9) have no case and pass either way. A valid EIP-55 address satisfies this rule at every alphabetic position.
Examples
- All-lowercase
0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359is accepted as a legal address (no checksum claimed) and the tool emits its canonical form0xfB6916095ca1df60bb79Ce92cE3Ea74c37c5d359. - All-uppercase hex with
0xprefix likewise has no case claim and is accepted but reformatted. - A mixed-case address
0xfB6916095ca1df60bb79Ce92cE3Ea74c37c5d359validates against the keccak rule. - The same string with one letter wrong-cased, e.g.
0xFB6916095ca1df60bb79Ce92cE3Ea74c37c5d359, fails the EIP-55 check.
FAQ
Does an EIP-55 address differ from a legacy one on-chain?
No. The case only matters to clients and wallets; the protocol sees the same 20 bytes either way.
What does EIP-55 actually catch?
Single-character transpositions of a hex letter. It cannot catch typos that swap two digits, since digits carry no case.
Are smart-contract addresses validated the same way?
Yes. EOAs and contract addresses are both 20-byte hex strings under the same rules.
Why do exchanges sometimes refuse my address?
Some exchanges enforce EIP-55 strictly and reject mixed-case addresses whose case pattern is wrong, even if the underlying bytes are valid.
Is EIP-55 the same as ICAP?
No. ICAP wrapped addresses in IBAN-style strings with a different checksum and saw very limited adoption.