Public Key Extractor
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
Public Key Extractor reads the user's current wallet address and network chain ID from the connected wallet, optionally reads ETH balance and token balances for the address via eth_getBalance and eth_call, and reads transaction history via eth_getLogs and eth_getTransactionCount if requested. The core function of the tool is to extract the uncompressed public key from a private key entered by the user. Given a private key (with or without the 0x prefix), the tool derives the corresponding public key using ethers.js's secp256k1 elliptic curve implementation, and also displays the derived Ethereum address for verification. It optionally compares the derived address against the connected wallet address to show whether the private key matches the currently connected wallet.
HOW TO USE
Connect your existing wallet using the "Connect" button — this establishes the wallet bridge and displays your current address, chain ID, and ETH balance. To extract a public key, enter a private key (64 hex characters, with or without 0x prefix) into the input field and click "Extract". The tool derives the uncompressed public key (64 bytes) and the corresponding Ethereum address. If your wallet is connected, the tool also shows whether the derived address matches your connected wallet. The tool also includes a placeholder "extract from address" function which explains that public keys cannot be derived from addresses alone — the private key is required.
MECHANISM — CLIENT-SIDE SECP256K1 PUBLIC KEY DERIVATION
This tool uses ethers.js's Wallet class, which wraps the underlying elliptic curve cryptography. When a private key is provided, the tool instantiates a new ethers.Wallet object with that key. The Wallet's publicKey property returns the uncompressed public key as a 64-byte hexadecimal string (the 0x04 prefix followed by the 64-byte curve point). The derivation uses the secp256k1 curve parameters and the elliptic library built into ethers.js. All computation happens within the browser's JavaScript engine — no network requests are made during the derivation, and no data leaves the user's machine. The address is derived from the public key by taking the Keccak-256 hash of the public key bytes and taking the last 20 bytes, then applying EIP-55 checksum formatting. The tool does not sign or broadcast any transactions; it only derives and displays the public key.
WHAT IT CANNOT SEE
This tool cannot extract the public key from a wallet that does not expose it directly (e.g., hardware wallets that only sign without revealing the full public key). It cannot recover a public key from an address alone without the corresponding private key or signature. It cannot verify that the extracted public key corresponds to the address entered without deriving it. It cannot detect if the public key has been compromised or is in use elsewhere. It cannot extract public keys from non-EVM chains. It cannot interact with the blockchain without the user's wallet being connected. It cannot prove that the user actually owns the private key beyond derivation. It cannot extract the public key from a private key if the key is invalid or malformed.
PLEASE NOTE
EVM chains only — supports Ethereum mainnet and all EVM-compatible networks. This tool optionally requires a real EVM wallet extension (such as MetaMask) to display connected wallet information and compare derived addresses. The private key is processed entirely in your browser; no data is sent anywhere. Never enter a private key on a site you do not trust, regardless of what the tool claims.