MetaMask Recovery Guide

MetaMask Wallet Recovery — Mobile vs Desktop Differences

MetaMask is the most popular self-custody Ethereum wallet, available as a browser extension (Chrome, Firefox, Brave, Edge) and as a mobile app (iOS, Android). While both versions generate wallets from the same BIP39/BIP44 standard, the vault encryption, file storage, and recovery workflows differ substantially. This guide covers the technical differences between mobile and desktop MetaMask vaults, how password recovery works on each platform, and the practical implications for anyone trying to regain access to a forgotten MetaMask wallet.

How MetaMask stores wallets — desktop vs mobile

Desktop MetaMask (browser extension) stores the encrypted vault in the browser's local storage: specifically, IndexedDB at the key '72fc6897-0cef-4c7b-9b55-ae845a1b1e82' under the extension's origin. The vault contains all key material encrypted with the user's password via the Key Derivation Function.

Mobile MetaMask stores vault data in the device's secure storage subsystem: on iOS, this is the Keychain (encrypted with the device UID and user passcode); on Android, it's Android Keystore backed by hardware-backed TEE (Trusted Execution Environment). The mobile vault is also encrypted with the user's MetaMask password, but the storage layer has platform-native encryption wrapping it.

This difference is critical for recovery: on desktop, the encrypted vault blob can be extracted from IndexedDB and attacked offline with hashcat (mode 26600). On mobile, extracting the vault blob requires jailbreak (iOS) or root (Android), because the platform's secure storage prevents app-level data export.

Recovery implication

Desktop MetaMask vaults are recoverable via hashcat mode 26600 because you can extract the encrypted blob from IndexedDB. Mobile MetaMask vaults require either jailbreak/root to extract the blob or seed-phrase restore from backup.

Hashcat 26600 target differences

Desktop MetaMask vault format (mode 26600) consists of: salt (hex), iteration count (10000), the encrypted vault blob. When the user sets a password, MetaMask derives an encryption key through PBKDF2-HMAC-SHA256 with 10,000 iterations and uses this key to encrypt the wallet via AES-128-CTR or a similar symmetric cipher.

The low iteration count (10,000) is forced by the browser environment — MetaMask needs to decrypt the vault quickly when the user enters their password to unlock the wallet. Higher iteration counts would introduce perceptible delay on every browser startup and tab switch.

On mobile, MetaMask similarly uses PBKDF2 with 10,000 iterations, but the vault is double-encrypted by the platform's secure storage. iOS Keychain uses AES-256-GCM with the device's UID-derived key; Android Keystore uses AES-256-GCM with a key wrapped by the TEE. Even with the vault blob extracted, you would still need to decrypt the platform layer before reaching the MetaMask layer.

Seed phrase import on mobile vs desktop

Both platforms support importing an existing seed phrase (BIP39 mnemonic). Desktop: in MetaMask extension, navigate to Settings > Security & Privacy > Import Wallet. Enter your 12 or 24-word seed phrase, set a new password, and the wallet derives all keys anew.

Mobile: MetaMask app > 'Import using Secret Recovery Phrase' on the welcome/onboarding screen or Settings > Security > Import Wallet. The import flow is functionally identical. Both platforms derive Ethereum addresses using BIP44 path m/44'/60'/0'/0/0.

Key difference: on desktop import, the seed phrase is typed into a browser input field and is visible in DOM memory. Keyloggers or screen-capture malware can intercept it. On mobile import, the OS-level keyboard is used, and while mobile malware also exists, the attack surface is smaller in practice.

Password recovery feasibility by platform

Desktop MetaMask password recovery via hashcat (mode 26600) is the standard path. Since the encrypted vault can be extracted from IndexedDB, any password recovery service that supports 26600 can attack it. The low iteration count (10,000) means ~410,000 H/s on an RTX 4090 or ~632,000 H/s on an RTX 5090. A dictionary attack with 10 million words × 50 rules runs in hours, not days.

Mobile MetaMask password recovery is significantly constrained. Without the raw encrypted blob, the only password-recovery path is: (1) extract the blob via jailbreak/root and platform key access, (2) decrypt the platform wrapper, (3) attack the MetaMask PBKDF2 layer. This multi-step process is only viable for higher-value wallets because of the complexity.

Most mobile MetaMask recovery cases follow the seed-phrase restore path instead of password cracking: if the user has their 12-word seed phrase backed up, they can restore on any device without the original password. If the seed phrase is also lost, mobile recovery is substantially harder than desktop.

Exporting a desktop vault for recovery

To extract the MetaMask vault from a desktop browser (Chrome): open Developer Tools (F12), go to Application > IndexedDB > 72fc6897-0cef-4c7b-9b55-ae845a1b1e82 > keyvaluepairs. The 'keyringController' entry contains the encrypted vault JSON under a memStore field. Copy the entire value as a JSON string.

For Firefox: about:debugging > This Firefox > MetaMask > Inspect > Storage > IndexedDB. Select the same database and object store. Extract the keyringController data.

For Brave: follows Chrome's pattern (Chrome-based browser). Same IndexedDB location.

After extraction: the JSON contains 'ciphertext', 'salt', 'nonce', and 'KDF' fields. Format for hashcat mode 26600: the salt (hex-encoded) and iteration count prefix the ciphertext. Most recovery services accept the raw JSON export directly.

Mobile vault export (advanced, requires device access)

iOS jailbreak path: jailbreak the device (checkra1n or Palera1n for compatible iOS versions), install a file browser with Keychain access, navigate to the MetaMask data directory in /var/mobile/Containers/Data/Application/..., extract the encrypted vault blob from the app's secure storage sandbox.

Android root path: root the device (Magisk or KernelSU), install a root file manager, navigate to /data/data/io.metamask/..., extract the encrypted vault from the app-private directory. On newer Android versions (11+), scoped storage and TEE-backed key management may require additional extraction steps.

Note: even with the encrypted blob exported, the platform encryption wrapper must be unlocked using the device passcode/biometrics or the device's hardware key. This is technically complex and only practical for high-value scenarios where both the seed phrase and desktop vault are lost.

Recovery after getting back in

Regardless of platform or recovery method, once access is restored: (1) immediately change the MetaMask password to something strong and unique. (2) Write down the new seed phrase on a paper/steel backup. (3) If the original recovery used an exposed seed (typed into a computer), generate a completely new wallet and move all assets. A seed that has been entered on a potentially compromised device should not be reused.

For desktop users who recovered via hashcat: the vault file was already extracted and exposed to recovery software. After recovering the password, rotate to a new wallet by generating a fresh seed phrase in MetaMask and transferring all tokens/NFTs to the new wallet. This fully negates any potential vault extraction by third parties.

For mobile users who restored via seed phrase on a new device: change the MetaMask password on the new device, verify all token balances and connected dApps, and revoke any excessive token approvals via tools like Revoke.cash.

MetaMask recovery flow by platform

  1. 1

    Check seed phrase backup

    If you have the 12-word seed phrase, recovery is straightforward on any platform — import into fresh MetaMask on any device.

  2. 2

    Desktop only — extract vault

    Open Chrome/Firefox IndexedDB > keyringController, copy the encrypted vault JSON. This is the hashcat mode 26600 target.

  3. 3

    Mobile only — decide path

    Without seed phrase, mobile recovery requires jailbreak/root to extract the platform-encrypted vault. Seed-phrase restore is the preferred path.

  4. 4

    Run hashcat mode 26600 (desktop)

    Format the extracted JSON into a hashcat-compatible hash and run dictionary + rules attack. ~410K H/s on RTX 4090, ~632K H/s on RTX 5090.

  5. 5

    Sweep to fresh wallet after recovery

    Any vault exposure (exported JSON or typed seed) means the wallet should be retired. Generate fresh seed, transfer all assets.

Frequently Asked Questions

Can I recover a mobile MetaMask password without the seed phrase?
It is significantly harder than desktop. The vault is wrapped in platform secure storage (iOS Keychain / Android Keystore). Without the seed phrase, extraction requires jailbreak/root and platform key access.
Where does MetaMask store the vault on desktop?
In the browser's IndexedDB at origin 72fc6897-0cef-4c7b-9b55-ae845a1b1e82, key 'keyringController'. This is accessible via browser Developer Tools without any special permissions.
Does MetaMask mobile use the same encryption as desktop?
Both use PBKDF2-HMAC-SHA256 with 10,000 iterations, but the mobile vault is additionally wrapped by the device's hardware-backed encryption layer (iOS Keychain / Android Keystore).
Can I sync a MetaMask wallet between mobile and desktop?
Yes — if you set up both using the same seed phrase (Secret Recovery Phrase), they derive the same addresses. Password sync is separate: each platform stores credentials independently.
Why does desktop MetaMask have such low iteration count?
Browser performance constraint. Higher PBKDF2 iteration count would cause noticeable delay on every browser unlock. 10,000 iterations is the practical upper bound for a smooth UX in an extension context.
Is it safe to use a recovery service to retrieve the password?
Reputable services accept the encrypted vault without the seed phrase. The vault is already encrypted — the service attacks the password, not the key material. Choose services with pay-on-success pricing and a verifiable track record; avoid any that require the seed phrase.

Wallet recovery — free analysis

Forgotten password / passphrase / partial seed — run a free analysis to assess feasibility before any payment.

Run Free Analysis

Related Reading