EVM Opcode Reference
Free web tool: EVM Opcode Reference
| Opcode | Hex | Gas | Stack In | Stack Out | Category |
|---|---|---|---|---|---|
| STOP | 0x00 | 0 | 0 | 0 | Control |
| ADD | 0x01 | 3 | 2 | 1 | Arithmetic |
| MUL | 0x02 | 5 | 2 | 1 | Arithmetic |
| SUB | 0x03 | 3 | 2 | 1 | Arithmetic |
| DIV | 0x04 | 5 | 2 | 1 | Arithmetic |
| MOD | 0x06 | 5 | 2 | 1 | Arithmetic |
| EXP | 0x0A | 10 | 2 | 1 | Arithmetic |
| LT | 0x10 | 3 | 2 | 1 | Comparison |
| GT | 0x11 | 3 | 2 | 1 | Comparison |
| EQ | 0x14 | 3 | 2 | 1 | Comparison |
| ISZERO | 0x15 | 3 | 1 | 1 | Comparison |
| MLOAD | 0x51 | 3 | 1 | 1 | Memory |
| MSTORE | 0x52 | 3 | 2 | 0 | Memory |
| MSIZE | 0x59 | 2 | 0 | 1 | Memory |
| SLOAD | 0x54 | 2,100 | 1 | 1 | Storage |
| SSTORE | 0x55 | 20,000 | 2 | 0 | Storage |
| JUMP | 0x56 | 8 | 1 | 0 | Control |
| JUMPI | 0x57 | 10 | 2 | 0 | Control |
| JUMPDEST | 0x5B | 1 | 0 | 0 | Control |
| REVERT | 0xFD | 0 | 2 | 0 | Control |
| PUSH1 | 0x60 | 3 | 0 | 1 | Stack |
| PUSH32 | 0x7F | 3 | 0 | 1 | Stack |
| DUP1 | 0x80 | 3 | 1 | 2 | Stack |
| SWAP1 | 0x90 | 3 | 2 | 2 | Stack |
| POP | 0x50 | 2 | 1 | 0 | Stack |
| CALL | 0xF1 | 100 | 7 | 1 | System |
| DELEGATECALL | 0xF4 | 100 | 6 | 1 | System |
| CREATE | 0xF0 | 32,000 | 3 | 1 | System |
| CREATE2 | 0xF5 | 32,000 | 4 | 1 | System |
| SELFDESTRUCT | 0xFF | 5,000 | 1 | 0 | System |
| CALLER | 0x33 | 2 | 0 | 1 | System |
| CALLVALUE | 0x34 | 2 | 0 | 1 | System |
| BALANCE | 0x31 | 100 | 1 | 1 | System |
About EVM Opcode Reference
The EVM Opcode Reference is a searchable, filterable cheat sheet covering the core opcodes of the Ethereum Virtual Machine. Each entry shows the opcode mnemonic, its hexadecimal encoding, gas cost, the number of stack items it consumes (Stack In), and the number of items it pushes back (Stack Out). Categories include Arithmetic (ADD, MUL, SUB, DIV, MOD, EXP), Comparison (LT, GT, EQ, ISZERO), Memory (MLOAD, MSTORE, MSIZE), Storage (SLOAD, SSTORE), Control (JUMP, JUMPI, JUMPDEST, REVERT, STOP), Stack (PUSH1, PUSH32, DUP1, SWAP1, POP), and System (CALL, DELEGATECALL, CREATE, CREATE2, SELFDESTRUCT, CALLER, CALLVALUE, BALANCE).
Ethereum smart contract developers, Solidity auditors, and EVM researchers rely on this reference when writing low-level assembly (Yul/inline assembly), analyzing bytecode, or optimizing gas usage. Understanding exactly how much each opcode costs — for example, SSTORE at 20,000 gas versus ADD at only 3 gas — is critical when writing gas-efficient contracts and estimating transaction fees accurately.
The reference runs entirely in the browser with no server round-trips. You can type an opcode name like "CALL" or a hex value like "0xF1" directly into the search box to jump to the matching row instantly. The category filter lets you isolate opcodes by functional group so you can study one area at a time, making it equally useful for beginners learning EVM internals and experienced auditors doing security reviews.
Key Features
- Full opcode table: mnemonic, hex encoding, gas cost, stack inputs, stack outputs, and category
- Real-time search by opcode name or hex value (e.g. "SSTORE" or "0x55")
- Category filter: Arithmetic, Comparison, Memory, Storage, Control, Stack, System
- Gas cost data reflecting EIP-2929 cold/warm storage access rules (SLOAD 2100, SSTORE 20000)
- System call opcodes: CALL, DELEGATECALL, CREATE, CREATE2, SELFDESTRUCT with correct stack depths
- Bilingual interface — full English and Korean support with seamless locale switching
- 100% client-side — no server requests, no data sent anywhere, instant results
- Dark mode and mobile-responsive table layout for comfortable use on any device
Frequently Asked Questions
What is the EVM and why do opcodes matter?
The Ethereum Virtual Machine (EVM) is the sandboxed runtime that executes smart contracts on Ethereum and compatible chains. Every Solidity or Vyper function compiles down to a sequence of EVM opcodes — low-level bytecode instructions. Understanding opcodes is essential for gas optimization, bytecode analysis, writing Yul assembly, and performing security audits.
How do I search for a specific opcode?
Type the opcode mnemonic (e.g. "SLOAD") or its hex code (e.g. "0x54") into the search box at the top. The table filters live as you type, narrowing down to matching rows immediately.
What do Stack In and Stack Out mean?
Stack In is the number of items the opcode pops from the EVM stack before executing. Stack Out is the number of items it pushes back onto the stack after execution. For example, ADD has Stack In = 2 (it pops two values) and Stack Out = 1 (it pushes their sum).
Why does SSTORE cost so much gas (20,000)?
SSTORE writes a value to contract storage, which is persisted to the Ethereum state trie — a globally replicated data structure. The high gas cost (20,000 for writing a new non-zero value) reflects the permanent disk and network burden imposed on every Ethereum node worldwide.
What is the difference between CALL and DELEGATECALL?
CALL executes code from another contract in that contract's own storage context. DELEGATECALL also executes external code, but it runs in the calling contract's storage context — msg.sender and msg.value are preserved, and state changes affect the caller's storage. This distinction is critical for proxy and upgradeable contract patterns.
What does the REVERT opcode do?
REVERT halts execution and rolls back all state changes made during the current call frame. It takes two stack arguments: a memory offset and size for an optional error message. Unlike STOP (which also halts), REVERT refunds unused gas and signals failure to the caller.
How is CREATE2 different from CREATE?
CREATE deploys a new contract with an address determined by the deployer's address and nonce. CREATE2 uses a user-supplied salt instead of the nonce, making the deployment address deterministic and predictable before deployment — useful for counterfactual contract patterns and layer-2 protocols.
Is this opcode reference up to date with recent Ethereum upgrades?
The reference covers the core EVM opcodes defined in the Ethereum Yellow Paper and reflects gas costs updated through EIP-2929 (Berlin) for storage access. Newer EIPs such as EIP-3855 (PUSH0) are not yet included. For the most authoritative specification, cross-reference with the official Ethereum execution specs.