What MetaMask is
MetaMask is a non-custodial wallet available as a browser extension and a mobile app. It lets you store private keys locally, manage multiple addresses, and interact with decentralized applications (dApps) across Ethereum and EVM-compatible networks. Because you control the Secret Recovery Phrase, MetaMask provides true self-custody — responsibility and risk sit with you.
Core ideas in one paragraph
Think of MetaMask as a secure bridge between your browser and the blockchain: it holds your keys, signs transactions locally, and asks for your approval each time a website requests access. It supports tokens and NFTs, allows network switching, and can connect to hardware wallets for stronger protection.
Quick setup (very short)
Install MetaMask from metamask.io or your browser’s official extension store, create a wallet with a strong password, write down the 12-word Secret Recovery Phrase on paper, and fund the wallet with ETH to pay gas. That’s it — ready to connect to dApps.
Essential safety guidance (three simple points)
- Protect your seed phrase: Store it offline — never in screenshots, cloud notes, or chats.
- Use hardware for large holdings: Connect a Ledger or Trezor to MetaMask and approve transactions on the device.
- Review approvals: When a dApp requests access or asks to move tokens, read the details and limit allowances whenever possible.
Using dApps — what to watch for
When connecting, MetaMask shares only your public address. Transactions require your explicit approval. Before confirming any signing request, verify the destination address, token contract, and gas fees. If unsure, pause and inspect the contract on a block explorer like Etherscan.
Common problems & quick fixes
If a dApp won’t connect, check that MetaMask is enabled for the site and that you’re on the right network. For stuck transactions, try increasing the gas or use MetaMask’s transaction history to speed or cancel. If UI behavior looks wrong, update the extension and restart the browser.
Developer note (two lines)
Detect MetaMask by checking window.ethereum, then request accounts with ethereum.request({ method: 'eth_requestAccounts' }). Use a provider library like ethers.js for robust handling.