Welcome to evm.slots!
A storage explorer for smart contracts on EVM chains. Peek into your contract's variables.
๐ก Inspect contract storage across multiple EVM chains and fetch on-chain values from RPC.
Why do we need a slot explorer? Well, not everything is exposed by the ABI. Slot explorers let you read internal state variables that are not accessible via contract methods.
Other storage explorers exist โ so why EVM.SLOTS?
| Feature | EVM-Storage.codes | EVMole | EVM.SLOTS (Ours) |
|---|---|---|---|
| All EVM chains support | โ (name-based search only) | โ (limited) | โ + add custom chains |
| Fetch on-chain slot values | โ | โ | โ |
| Variable name | โ | โ | โ |
| Type, Slot & offset info | โ | โ | โ |
| Mapping slot explorer | โ | โ | โ |
| Dynamic array explorer | โ | โ | โ |
| Proxy storage support | โ | โ | โ (transparent proxy) |
| Unverified contract support | โ | โ (by decoded bytecode only) | โ (raw slots) |
Sourcify API
Fetches verified contract metadata.
storage layout, compilation, and deployment metadata.
https://sourcify.dev/server/v2/contract/<chain>/<address>?fields=allRaw Slot Reading
Reads storage from the EVM using the JSON-RPC method getStorageAt(address, slot)
Inspect internal states, even for unverified contracts, by querying the value stored at a slot.
Mapping Slots
Each key is hashed together with the base slot to derive its storage location.
slot = keccak256(key . slot)Array Slots
Dynamic arrays store their length at the base slot, while elements are stored contiguously starting from a hashed location.
slot = keccak256(slot) + index x elementSizeAre you ready to get an insider view of a contract's storage?
Explore