Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

Ethereum Developer Tools

Wei and gwei conversion, Keccak-256, checksum addresses and calldata decoding, offline.

Developer No upload Works offline Free, no sign-up

Everything here works offline in your browser. It never needs a private key or a recovery phrase — never paste those into any website.

Ether units

Type in any field: the others follow, exactly (1 ether = 1018 wei, 1 gwei = 109 wei).

Transaction fee

Fee 0.00042 ETH 420000 gwei

Fee = gas used × gas price. Since EIP-1559 the gas price is the base fee plus your priority fee. A plain transfer of ether uses 21,000 gas.

Next steps

About the Ethereum Developer Tools

Five tools that come up while building on Ethereum, in one page that works offline. Units converts between wei, gwei, ether and the other units with exact integer arithmetic (no floating-point rounding), and works out a transaction fee from gas and gas price. Keccak-256 hashes text or bytes the way Ethereum does — not NIST SHA3-256, which gives a different result — and shows the 4-byte function selector. Checksum validates addresses and gives their EIP-55 mixed-case form, which catches typing mistakes.

Decode calldata reads the input data of a transaction, or the data of a failed call: it recognises the function from its selector (ERC-20, ERC-721, ERC-1155, permit, multicall, common router and wallet functions, revert reasons and panics are built in; paste the contract's ABI for anything else) and lists every argument with its type. Encode calldata does the reverse from a signature and values, following the Solidity ABI specification. None of this needs a wallet, a node or a key, and nothing is sent anywhere.

How to use it

  1. Choose a tool: Units, Keccak-256, Checksum, Decode calldata or Encode calldata.
  2. Units: type an amount in any unit; every other unit updates. Enter gas used and gas price to see the fee.
  3. Decode: paste the transaction’s input data (0x…) from a block explorer. If the function is not recognised, paste the contract ABI (JSON) or its signature, e.g. function swap(address token, uint256 amount).
  4. Encode: type the signature, fill in one field per argument (lists as [1, 2]), and copy the calldata.

Examples

Gwei to ether
Input
30 gwei
Result
0.00000003 ether = 30000000000 wei
The fee of a plain transfer
Input
Gas used 21000, gas price 20 gwei
Result
0.00042 ETH (420000 gwei)
Decode an ERC-20 transfer
Input
0xa9059cbb000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000de0b6b3a7640000
Result
transfer(address,uint256) — from ERC-20
to (address): 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
amount (uint256): 1000000000000000000

The amount is in the token's smallest unit: with 18 decimals (as most tokens use) it is 1 token.

A function selector
Input
Keccak-256 of transfer(address,uint256)
Result
0xa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b → selector 0xa9059cbb

Common uses

  • Checking what a transaction or a signature request really does before you approve it: which function, which recipient, which amount.
  • Reading why a call reverted from its Error(string) reason or Panic(uint256) code.
  • Building calldata for a multisig, a script or a test without writing code.
  • Validating addresses in a payout list, and converting gas settings and fees between gwei and ether.

Units

1 ether = 10^18 wei; the named units in between are kwei (10^3, also babbage), mwei (10^6, lovelace), gwei (10^9, shannon — the usual unit of gas prices), szabo (10^12) and finney (10^15). Wei is the smallest unit, so an amount with more decimals than its unit allows is reported, not rounded. Amounts may use thousands separators (1,000,000 or 10,00,000) or an exponent (2e9). Write decimals with a point: a comma that cannot separate thousands, as in 0,05, is refused rather than read as 5, and "1,234" is read as one thousand two hundred and thirty-four, with a note saying so.

How calldata is decoded

The first 4 bytes of calldata are the selector: the start of the Keccak-256 hash of the function's canonical signature (name and argument types, no spaces). The arguments follow as 32-byte words; dynamic values (bytes, string, arrays) are stored after the fixed part and referred to by offsets. The decoder checks every offset and length against the data, reports values that are not cleanly encoded (non-zero padding, a bool other than 0 or 1), shows addresses in their checksum form, and shows unknown data as 32-byte words with what each could be (an address, a number, an offset, text).

Selectors are only 4 bytes, so different functions can share one. A match against the built-in list is a strong hint, not proof; with the contract's own ABI the result is exact.

Keys and recovery phrases

No tool here needs a private key, a keystore file or a recovery (seed) phrase, and none asks for one. If you paste something with the shape of a private key (64 hex digits) or of a recovery phrase (12–24 words), the page warns you. Anyone who has your key or phrase controls the funds: never paste them into a website, a form or a chat, whatever it promises.

Limitations

  • Only offline tools: there is no lookup of balances, transactions, gas prices or token prices, and no connection to a node. Look up a transaction’s input data in a block explorer and paste it here.
  • The built-in signature list covers common standards; other functions need their ABI or signature. Events (topics and log data) are not decoded here.
  • Fixed-point types (fixed, ufixed) are not supported, as Solidity compilers do not support them either.
  • Addresses are checked against EIP-55 only, not against the chain-specific checksums of EIP-1191.

Privacy

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.

Frequently asked questions

Do I need to connect a wallet?

No. Everything runs in your browser from what you paste, without a wallet, a node or an account, and works offline once the page has loaded.

Why is my Keccak-256 hash different from SHA3-256?

Ethereum adopted Keccak before NIST finalised SHA-3, which then changed the padding. Ethereum (and Solidity's keccak256) keep the original, so their hashes differ from SHA3-256 of the same input. The tool shows both, so you can see which one a library used.

Is an address in lower case wrong?

No: addresses are not case-sensitive, so an all-lower-case (or all-upper-case) address is valid. It just carries no checksum, so a typo cannot be detected. A mixed-case address must match EIP-55 exactly; if it does not, a character may be wrong.

How do I find the calldata of a transaction?

In a block explorer, open the transaction and look for “Input Data” (switch it to the original or hex view). In a wallet's signing screen it is usually under “Data” or “Hex”. It starts with 0x and the 4-byte selector.

Can it tell whether a transaction is safe?

It shows what the calldata asks the contract to do — the function and its arguments — which is often enough to spot an unlimited approve or a transfer to an unexpected address. It cannot see what the contract’s code does with them, so for anything that matters, also check the contract itself.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.