Private keys and seed phrases stay on your device. When a dApp needs to send a transaction or sign a message, MetaMask shows a detailed prompt — only after you explicitly approve will it sign using keys kept inside the extension or app.
MetaMask Wallet — Secure Non-Custodial Web3 Wallet
MetaMask is a widely used non-custodial wallet available as a browser extension and mobile app. It provides secure key storage, transaction signing, token swaps, NFT management, and a bridge to decentralized applications (dApps). Below is an accessible, detailed overview and guidance in HTML format.
What is MetaMask Wallet?
MetaMask is a software wallet that lets you manage crypto assets, interact with smart contracts, and connect to decentralized applications directly from your browser or smartphone. It stores private keys locally (encrypted), never transmits them to websites, and asks for user approval whenever a transaction must be signed. Because it is non-custodial, you retain full control of your funds—but you also carry sole responsibility for backing up and protecting your recovery phrase.
Key features
MetaMask supports Ethereum and many EVM chains (Polygon, BNB Chain, Arbitrum, Optimism, Avalanche, and more). Developers can add custom RPC endpoints and networks, and users can switch networks inside the wallet.
MetaMask can aggregate liquidity from several decentralized exchanges to offer token swaps inside the wallet—making small trades more convenient without leaving the app.
View and manage ERC-721 / ERC-1155 NFTs inside the wallet interface. For marketplaces and deeper gallery features, you may still use dedicated platforms like OpenSea or Blur.
MetaMask mobile apps offer wallet access on iOS and Android, QR scanning for dApp connections, and optional sync between devices using secure import options (never share your seed externally).
Install & Setup — Safe steps
Install only from the official site: visit metamask.io and follow the download links for your browser or mobile store. The official page directs you to the right extension store entry or app store listing.
- Add the extension or install the mobile app from the official sources.
- Create a new wallet or import an existing one using your Secret Recovery Phrase (seed)—do this only inside the extension/app UI.
- Write your Secret Recovery Phrase on paper or use a metal backup plate; never store it in cloud storage or as a screenshot.
- Choose a strong password for local unlocking and enable native device protections (biometrics on mobile, OS lock).
How to use MetaMask (user perspective)
Most dApps provide a “Connect Wallet” button. When clicked, the dApp will request account access from the wallet. MetaMask then prompts you to approve the connection and choose which account to expose. After connecting, the dApp may request additional operations such as message signing or transaction approvals — MetaMask always shows the details (method, value, gas) for your review before signing.
Best practice: use separate accounts for different dApps to reduce linkability and risk exposure. Confirm receiving addresses on-device or via trusted UI checks when copying addresses between systems.
Developer integration — minimal examples
Developers interact with MetaMask through the injected provider `window.ethereum`. Below are concise, secure examples for common tasks.
// Request account access (connect)
if (window.ethereum) {
try {
const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
console.log('Connected address:', accounts[0]);
} catch (err) {
console.error('User rejected connection or an error occurred', err);
}
} else {
alert('MetaMask is not installed. Visit https://metamask.io');
}
// Listen for changes
window.ethereum.on('accountsChanged', (accounts) => { /* update UI */ });
window.ethereum.on('chainChanged', (chainId) => { /* handle network change */ });
Important: never request or ask users to provide private keys or seed phrases. Use the provider to request signatures and present clear UX that explains what each transaction does.
Privacy & network considerations
Using MetaMask exposes your wallet address to any connected dApp, which can create linkability across services. To reduce privacy risk, use dedicated accounts per dApp and consider privacy tools where appropriate. Switching RPC endpoints can change which node sees metadata; choose reputable providers when adding custom RPCs.
Troubleshooting & common issues
If `window.ethereum` is undefined, the extension is not installed. Guide users to the official download page and provide a clear install CTA in your application UI.
Users can reject account requests or transactions. Always handle rejections gracefully and show recovery guidance or retry options.
If a dApp requires a specific chain, verify the user's chainId and prompt them to switch networks. Many wallets include UX to request network changes programmatically, but always explain the change to the user.