Free online tools to generate, calculate,
convert, format, encode, and play.
 

4-Byte Selector Lookup

Compute 4-byte function selectors or 32-byte event topic hashes from a Solidity signature, or look up known signatures for a given selector hash. All processing runs locally in your browser.


Signature Input

The selector updates as you type.

Quick Examples


How It Works

In the Ethereum Virtual Machine (EVM), every function call to a smart contract begins with a 4-byte selector that identifies which function to execute. This selector is derived from the function's canonical signature using Keccak-256 hashing.

Function Selectors

A function selector is the first 4 bytes of the Keccak-256 hash of the function's canonical signature. The canonical form uses only parameter types (no names, no spaces), for example:

  • transfer(address,uint256)0xa9059cbb
  • approve(address,uint256)0x095ea7b3
  • balanceOf(address)0x70a08231

When you call a contract function, the transaction's input data starts with this 4-byte selector followed by the ABI-encoded arguments.

Event Topic Hashes

Events use a similar mechanism but with the full 32-byte Keccak-256 hash (not truncated to 4 bytes). This hash becomes the first topic (topic0) in log entries:

  • Transfer(address,address,uint256)0xddf252ad...
  • Approval(address,address,uint256)0x8c5be1e5...

Selector Collisions

Because selectors are only 4 bytes (232 possibilities), different function signatures can produce the same selector. This is called a collision. While rare for common functions, it is important when verifying which function a selector corresponds to. Public databases like 4byte.directory and OpenChain catalogue known signature-to-selector mappings.

Common Selectors

SelectorFunction SignatureStandard
0xa9059cbbtransfer(address,uint256)ERC-20
0x095ea7b3approve(address,uint256)ERC-20
0x70a08231balanceOf(address)ERC-20
0x23b872ddtransferFrom(address,address,uint256)ERC-20
0x18160dddtotalSupply()ERC-20
0xdd62ed3eallowance(address,address)ERC-20
0x42842e0esafeTransferFrom(address,address,uint256)ERC-721
0x6352211eownerOf(uint256)ERC-721

Embed This Util

You can embed this util on your own site as a widget. Adding ?embed=1 to the URL loads a compact version with just the tool itself; no header, menu, or documentation. Paste this snippet into your HTML:


    

Copy snippet Adjust the height to taste.



Feedback

Help us improve this page by providing feedback, and include your name/email if you want us to reach back. Thank you in advance.


Share with