Ethereum EIP-55 Checksum Explained

Ethereum addresses are 20-byte (40 hexadecimal character) values typically displayed with a 0x prefix. Unlike Bitcoin's Base58 formats, Ethereum originally used simple hexadecimal strings with no built-in error detection. This made typos dangerous—changing one character could create another valid-looking address, potentially leading to lost funds.

EIP-55 introduced a clever solution: mixed-case checksum encoding. The idea is simple yet effective. The address is first converted to lowercase, then hashed using Keccak-256 (Ethereum's version of SHA-3). Each nibble (4-bit segment) of the hash determines whether the corresponding character in the address should be uppercase or lowercase. If the nibble value is 8 or higher, the character is capitalized; otherwise, it remains lowercase.

How EIP-55 Works in Practice

When generating a checksummed address, the process follows these steps: remove the 0x prefix, convert to lowercase, compute the Keccak-256 hash, and then capitalize characters based on the hash nibbles. When validating, the tool compares the provided capitalization against what the hash dictates. Any mismatch indicates either a typo or incorrect checksum encoding.

Important Validation Rules

  • All-lowercase or all-uppercase addresses are accepted (no checksum enforcement)
  • Mixed-case addresses must exactly match the EIP-55 pattern
  • Invalid hexadecimal characters are rejected immediately
  • Addresses must be exactly 40 characters long (excluding prefix)

Real-World Examples

A famous example is the burn address 0x000000000000000000000000000000000000dEaD—its mixed case follows EIP-55 rules precisely. Changing even one letter's case incorrectly would make it invalid under checksum validation, alerting users to potential errors before sending funds.

Implementation Considerations

Validating EIP-55 requires access to a Keccak-256 implementation, as standard SHA-3 differs slightly. Client-side validators must include this hashing function to properly check mixed-case addresses while gracefully accepting all-lowercase versions commonly used in contracts and APIs.

This checksum mechanism significantly reduces the risk of sending ETH or tokens to wrong addresses due to typing mistakes, making it one of the most practical improvements in Ethereum's user experience.

Always copy-paste Ethereum addresses when possible—manual typing increases risk even with checksum protection.