How your keys are protected
- Keys stay on your device. A real Monero engine (monero-ts, compiled to WebAssembly and bundled with the extension) creates keys, scans the blockchain and signs transactions locally. The content security policy allows only the extension’s own scripts plus WebAssembly, so no remote code can be loaded.
- Encrypted at rest. Each wallet is stored in a vault encrypted with AES-256-GCM. The encryption key is derived from your password with PBKDF2-SHA256 at 600,000 iterations, and every save uses a fresh random salt and IV. Your password itself is never saved.
- Unlocked only while in use. Decrypted keys exist only in the memory of the extension’s hidden (offscreen) document and its worker. They are removed when you lock the wallet, when the auto-lock timer runs out (1–60 minutes of inactivity, 5 by default, once active work finishes), and whenever the browser restarts.
- Isolated from websites. The extension has no content scripts and no access to the pages you browse. The popup talks to the wallet engine over a private channel that web pages cannot reach.
- Network only with your consent. The extension connects only to the node you selected after reading a privacy notice: one from the built-in list, or your own node. Access to your own node is granted by Chrome for that single address when you select it. Redirects are refused.
- Recovery phrase on request only. Showing the phrase or the private view key requires your wallet password. The phrase is hidden again after 60 seconds or as soon as you switch away from the wallet. The private spend key is never displayed.
- Optional password for every payment. You can require the wallet password before each payment is broadcast.
How sending is protected
- Fresh data first. A payment can be prepared only after a completed synchronization that is no more than two minutes old.
- Address checks. Addresses are checked as you type (checksum, network and address type) and validated again by the Monero engine before anything is signed.
- Sign, then review. The transaction is signed locally with broadcasting disabled. You then see the full recipient address, the amount, the fee and the transaction ID, and confirm in a separate step.
- One-shot drafts. A reviewed payment can be confirmed only once and expires after five minutes. Changing the node, synchronizing or locking the wallet cancels it.
- No blind retries. A recovery record is written before the transaction is broadcast. If the outcome is uncertain, for example because the connection dropped, the wallet does not retry automatically. It shows the transaction ID and asks you to check it first.
Monero transactions are irreversible. These safeguards help you catch mistakes before you confirm; they cannot undo a payment afterwards.
Honest limitations
No wallet is perfectly secure. Please weigh these limits before you keep significant funds in Monero Wallet:
- Not independently audited. The code is open for review and covered by automated unit, browser and private-network tests, but no independent security firm has audited it.
- Public nodes are untrusted. A node sees your IP address and connection times, and it may be unavailable or return inaccurate data. A malicious node can serve bad decoy data that weakens a transaction’s privacy, but it cannot steal funds. Synchronizing through someone else’s node is not the same as validating the blockchain with your own full node.
- It is a hot wallet. Keys are used on an internet-connected computer. Malware on your device, a compromised browser profile or a malicious extension with broad permissions can capture your password or keys while the wallet is unlocked. Hardware wallets are not supported.
- Clipboard hijackers exist. Some malware swaps copied addresses for its own. Always compare the entire address on the review screen, not just the first and last characters.
- Some nodes use plain HTTP. With HashVault and the stagenet and testnet nodes, your internet provider or Wi-Fi operator can see the same traffic the node sees. Prefer an HTTPS node on mainnet.
- Your password matters. Encryption slows down guessing, but it cannot protect a weak password if someone copies your browser profile or an exported backup.
- Browser data is fragile. Removing the extension or clearing its data erases saved wallets. There is no password reset; only your recovery phrase, or an encrypted backup with its password, can restore access.
- Your own node is only as trustworthy as its address. The wallet treats every node, including your own, as untrusted and does not pin it to an IP address. Use an address and network path you control.
Good practices
- Start on stagenet, then use small amounts on mainnet.
- Keep your recovery phrase on paper, offline, and never type it into websites or chats.
- Use a long, unique password and keep an encrypted backup in a safe place.
- Lock the wallet when you step away, and keep Chrome and your operating system up to date.
- Use a VPN or Tor if you want to hide your IP address from nodes.
Verifying your download
Before you install a release archive, compare its SHA-256 checksum with the value published in the download section:
- Linux:
sha256sum monero-wallet-extension.zip - macOS:
shasum -a 256 monero-wallet-extension.zip - Windows (PowerShell):
Get-FileHash monero-wallet-extension.zip -Algorithm SHA256
If the values differ, do not install the file. Chrome does not update a manually installed archive, so download new versions from this website and verify each one.
You can also build the extension yourself from the source code (monero-wallet-source.zip):
- Install Node.js 22.13 or newer.
- Run
npm ci, thennpm run build. - Load the resulting
distfolder inchrome://extensionswith Developer mode turned on (“Load unpacked”).
Your own build will not necessarily be byte-for-byte identical to the published archive (file timestamps differ, for example), so its checksum may differ. What you gain is that you run code you can read. The source code also includes SECURITY.md, a detailed technical description of the threat model.
Reporting a vulnerability
If you believe you have found a security issue, please report it privately by email: support@xmrtab.com. Please include:
- the extension version (shown in Settings), your browser and your operating system;
- a description of the issue and its possible impact;
- clear steps to reproduce it, and a proof of concept if you have one.
Please give us reasonable time to investigate and publish a fix before you disclose the issue publicly. Test only with wallets you own, ideally on stagenet, and do not attack public nodes or other people’s funds.
Never send us the recovery phrase, private keys or password of a real wallet. If reproducing the issue truly requires wallet data, create a new stagenet wallet for it. There is currently no bug bounty program.
See also the Privacy Policy and the Terms of Use.