ENS Namehash Calculator
EIP-137 namehash and labelhash derivation — all client-side
ENS name
Namehash
0x2d1b301ca7190a631be63cc5c5992836263a3de24788c3f03035c1be790876bbDerivation chain (EIP-137)
vitalik labelhash:
0xaf2caa1c2ca1d027f1ac823b529d0a67cd144264b2789fa2ea4d63a67c7103ccnode after this label:
0x55fa0b76d2f883883158a03d7f42dfdff9d91a35c1b6a01eca4e670ed3830d73eth labelhash:
0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0node after this label:
0x2d1b301ca7190a631be63cc5c5992836263a3de24788c3f03035c1be790876bbAbout the ENS Namehash
The Ethereum Name Service resolves human-readable names like vitalik.eth through the EIP-137 namehash algorithm: a recursive Keccak-256 construction that turns a dotted name into a 32-byte node used as the storage key in ENS registry contracts. Getting namehash right by hand is error-prone because every label is hashed separately and combined in order.
This calculator shows the full derivation chain — each label, its labelhash, and the node value after combining it — so you can verify exactly what the ENS registry will look up. Everything is computed locally in your browser.
How to use
- Type an ENS name such as vitalik.eth.
- The final namehash appears immediately at the top.
- Inspect the derivation chain to see each labelhash and intermediate node.
- Copy the namehash for use in your contract calls or tests.
Frequently Asked Questions
What is the difference between namehash and labelhash? ▾
A labelhash is the Keccak-256 of a single label like eth. The namehash combines labelhashes recursively from the root, producing the 32-byte node the ENS registry uses as its key.
Does the calculator normalize names? ▾
It lowercases labels and strips trailing dots, which covers standard names. Full ENS normalization (ENSIP-15) handles Unicode edge cases; for those, verify with the official ENS normalization library.
What is the ENS namehash algorithm? ▾
Defined by EIP-137, namehash recursively hashes labels from the rightmost part: namehash('foo.bar.eth') = keccak256(namehash('bar.eth') + keccak256('foo')). The root is the zero hash, and labels are hashed as UTF-8 bytes.
Why do I need namehash instead of just hashing the name? ▾
ENS stores records keyed by namehash in the registry — node lookups, resolver addresses, and reverse records all use it. Hashing the full string directly produces a value no contract recognizes.
Does normalization matter for namehash? ▾
Yes — labels must be ENS-normalized (lowercase, Unicode forms per UTS-46) before hashing. This tool applies the normalization step; skipping it yields hashes that do not match on-chain records.