Is it safe to keep Monero in a web wallet? It is the right question to ask, and most answers online are either marketing or copy-pasted warnings. Here is ours, written by people who build one, with every risk we know about, including the ones we cannot fix.
We use MonkStash as the worked example because we can show you exactly how it handles each threat. The same questions apply to any web wallet you are considering.
- The first question is who holds your keys. If it is a company, it can spend your money.
- A well-built web wallet keeps both keys in your browser. The node only sees requests.
- The biggest web-specific risk is the code itself: the server delivers it on every visit.
- Fine for everyday amounts. Keep savings on hardware or a desktop wallet with your own node.
The short answer
A Monero web wallet is safe enough for everyday amounts if it is non-custodial and keeps your keys on your device, if you reach it at its real address, and if your recovery words are backed up offline. Its weak spots are different from a desktop wallet's: the website delivers the wallet's code each time you open it, the browser is a busy place, and look-alike sites are everywhere. For large savings, use a hardware wallet or a desktop wallet with your own node.
Three kinds of web wallet
"Web wallet" covers three very different designs. Find out which one you are using before anything else.
- Custodial. An exchange-style account. The company holds the keys, so it can freeze, lose or spend your coins. Convenient, but it is their wallet, not yours.
- Light wallet server. You keep your spend key, but you give a server your view key so it can find your payments for you. It cannot spend, but it can see every payment you receive. MyMonero worked this way. Our light wallet guide explains the trade-off.
- Local scan. Both keys stay in your browser, and the wallet downloads blocks and checks them for your payments itself. MonkStash works this way, using monero-ts, the official Monero code compiled to run in a browser.
Who sees what in MonkStash
Your recovery words and keys are created in your browser and encrypted with your wallet password before they are stored there. To find your payments, the wallet reads blocks through a Monero node. Most public nodes cannot be reached directly from a web page, so by default those requests pass through our relay. As our privacy policy states, the relay sees your IP address and which blocks and outputs your wallet asks about, and the transactions you send on their way to the network. It never sees your keys or your balance. Connect your own node in Settings and the relay drops out.
PBKDF2-SHA256 with 600,000 rounds turns your password into a key, and AES-256-GCM encrypts your wallet with it, through the browser's built-in Web Crypto. The round count follows the OWASP recommendation for this algorithm.
The threats, one by one
| Threat | What could happen | What protects you | What is left |
|---|---|---|---|
| Fake wallet site | You type your words into a clone and lose everything | One official address, wallet.monkstash.com; a bookmark; the wallet asks for recovery words only to restore a wallet or sweep another one in | You must check the address bar. See our phishing guide |
| Someone steals the stored wallet | They copy your browser's encrypted wallet | Strong encryption with your password; optional 2FA code on your device | A weak password can be guessed offline. Use a long one |
| Someone uses your unlocked device | They send your money | Every payment asks for your password; auto-lock after 10 minutes idle, or soon after you leave the tab | A device left unlocked with the wallet open |
| Clipboard malware | It swaps the address you paste | A look-alike alarm marks addresses that start and end like one you used but differ in the middle | Check the address before you confirm |
| Injected or third-party scripts | A script on the page reads your data | A strict Content Security Policy on wallet pages: only scripts with a fresh per-request nonce, no third-party code, no framing | A malicious browser extension can still read pages. Keep extensions few |
| Content pages reading wallet storage | A bug on a guide page reaches the wallet | The wallet lives on its own origin, so the browser keeps its storage apart from the content site | None known |
| Relay or node spying | They link your IP address to your wallet activity | Keys and balance never leave your device; the relay keeps IP addresses in memory for a minute and no access logs | Your IP is visible to the relay. Use your own node, a VPN or Tor |
| Losing the browser data | Clearing site data or a lost phone deletes the stored wallet | Backup confirmation at setup, a security checkup and a printable emergency kit | Without your 25 words, nobody can restore it |
The big one: the code your browser runs
Here is the risk that is special to web wallets, and the one most sites do not mention. A desktop wallet is installed once. A web wallet's code is sent by its server every time you open it. If that server were broken into, or its operator forced to, it could send a version that copies your words when you unlock. Encryption does not help against your own wallet's code turning on you.
Nobody can make that risk zero. What a web wallet can do is make it visible and hard to hide:
- Open source. Every line is public, so anyone can read what the wallet is supposed to do.
- Reproducible builds. The same source always produces byte-identical files. The live site publishes a fingerprint of every file, and anyone can rebuild it and compare, or run the one-minute checker. A swapped file would show up.
- No inline code on wallet pages. Every script the wallet runs is a file in that published build, so the check covers all of them.
- The extension option. The browser extension installs the code once and shows its fingerprint in Settings, so it is not reloaded from our server on every visit. Its updates are a risk of their own, which is why each release lists its fingerprints.
What no web wallet can fix
- Malware on your device. If your computer or phone is compromised, any wallet on it is exposed: web, desktop or mobile. A hardware wallet is the answer to this one.
- Your recovery words in the wrong hands. Anyone with the words owns the wallet. A real wallet asks for them only when you restore.
- A lost backup. Non-custodial means nobody can reset it for you, us included.
- Mistyped payments. Monero payments cannot be reversed. Check, send a small test, then send the rest.
A five-minute safety checklist
- Open the wallet from a bookmark, and check the address bar says wallet.monkstash.com.
- Write your 25 words on paper, confirm them, and store them offline. The backup guide shows how.
- Use a long wallet password, and turn on the 2FA code in Settings if you like.
- Remove browser extensions you do not need, or use a separate browser profile for the wallet.
- Start with a small amount, send a test payment, and run the security checkup in the wallet.
For more privacy from the network, connect your own node. Our guide to running a Monero node covers it.
When to use something else
A web wallet is for convenience: paying, getting paid, checking a balance from any device. If you hold an amount that would hurt to lose, move it to a wallet built for savings. Our safest Monero wallet guide matches the setup to the amount, from a web wallet for pocket money to a hardware wallet and offline signing for savings. For the bigger picture, see is Monero safe?
Next steps
- Try it with a small amount: open MonkStash.
- Check the build yourself on the verify page.
- Learn to spot fakes in how to spot a fake Monero wallet.
Frequently asked questions
Is a Monero web wallet safe?
A non-custodial web wallet that keeps your keys in your browser can be safe for everyday amounts. The real risks are a compromised website serving bad code, phishing clones, malware on your device and a lost backup. For large savings, a hardware wallet or a desktop wallet with your own node is safer.
Can MonkStash steal my Monero?
Not from what it stores: your keys are created and encrypted in your browser and never reach our server. The honest caveat is that a web wallet's code is delivered by its server, so if that server were ever compromised it could serve bad code. That is why our builds are reproducible and checkable, and why we say to start with small amounts until an independent audit is done.
Does a web wallet see my balance?
It depends on the kind. A light wallet server holds your view key and can see your incoming payments. MonkStash scans blocks in your browser, so our relay sees which blocks your wallet asks for and your IP address, but not your keys or your balance.
What happens if I clear my browser data?
The encrypted wallet stored in that browser is deleted. Your money is not: it stays on the Monero network, and your 25 recovery words restore the wallet anywhere. Without the words, it is gone, so back them up before you receive anything.
Is a browser extension wallet safer than a web wallet?
Partly. An extension's code is installed once instead of loaded on every visit, which removes the risk of a server swapping the code between visits. But extensions update themselves, and fake store listings are a real problem, so install only from the official link.
How much Monero should I keep in a web wallet?
Treat it like the cash in your pocket: amounts you would be upset but not ruined to lose. Keep long-term savings on a hardware wallet or in a desktop wallet you control.
Sources
Primary sources behind the facts in this guide.
- OWASP Password Storage Cheat Sheet (PBKDF2-HMAC-SHA256 work factor)
- MDN: Content Security Policy (CSP)
- MDN: Same-origin policy (storage is separated by origin)
- monero-ts: the official Monero code compiled to WebAssembly
- Moneropedia: View key
- Reproducible Builds: definition and why it matters
- MonkStash source code (BSD-3-Clause)