ForgotWalletPassword.com

Method guide · the real key to wallet password recovery

Your memory is the password list. Build it on purpose.

Tools like btcrecover and hashcat only test what you give them. The difference between a 20-minute recovery and a wasted week is the list you build from your own memory — this page is the method, in the exact formats both tools need.

By Robbert Bink · ~6 min read · Published 7 August 2026 · Last reviewed: 14 August 2026

The headline

The tool is stupid. Your list is everything. A good password hint list — every name, year, number, symbol and pattern you actually used — is what turns “let the GPU run overnight” into a 20-minute recovery. This page is the method for building that list, in both formats the tools eat: btcrecover token files and hashcat wordlists/masks.

Want to see how a token list is built? Try the demo.

The builder below is a practice demo with example datajump straight to it. For your real fragments, download the offline builder: a single file that works without internet, so nothing ever leaves your machine.

Step 0 — dump everything before you filter anything

Your memory of the password is a reconstruction, and reconstructions need raw material. Work the 68-place search checklist first and write down every candidate password you find — old emails, notebooks, browser autofill, password managers, app backups, notes files. Then walk where old passwords hide and how your memory made the password to surface the patterns you don’t notice yourself using. Only then do you start building the list below.

Step 1 — extract the pieces

Go through your memory and write down, in four buckets:

  • Words: names (yours, partner’s, kids’, pets’), nicknames, cities, the wallet’s own name, the exchange you bought through, words from a hobby or job.
  • Numbers: years that mattered (birth year, the year you bought the crypto, the current year then), day-month patterns, house numbers, phone fragments.
  • Symbols and habits: did every password end in !? Did you use @ for “a”? A 1 for an i? The punctuation habits are the most personal — and the most powerful clues.
  • The shape: “capital first, then lowercase, then two digits at the end”. Even if you can’t recall the content, the shape is a hashcat mask.

Also list every old password you’ve used anywhere — most people reuse or transform them. That’s a separate hunt: where old passwords hide.

When you only remember part of it

Most forgotten passwords aren’t a total blank — they’re a handful of fragments with gaps. The gap is the search space, and the trick is to write down exactly what you’re sure of before you try to fill anything in. Four patterns cover almost every partial memory:

  • A remembered fragment with an unknown middle: you know it starts with Markus and ends with a year, but the middle could be anything. In btcrecover: Markus%1,6a2019 (one to six lowercase ASCII letters — use %ia if the unknown positions could be lower- or uppercase; tokens on one line are alternatives, so keep the fixed parts inside the same token without spaces). Preview the candidates that are actually generated first: python btcrecover.py --listpass --tokenlist tokens.txt. In hashcat: a mask like Markus?a?a?a?a?a?a?d?d?d?d.
  • Fixed length, mixed content: “ten characters, a capital somewhere”. Use a mask with a wildcard for the capital position — or list a few positions: ?u?l?l?l?l?l?l?l?l?d and ?l?l?l?l?u?l?l?l?l?d.
  • Numbers you’re sure about: a year or amount you remember is a strong anchor. Put it in a token line of its own (2019), or in a mask position (?d?d?d?d only if you’re sure it was four digits — otherwise give the mask four separate runs).
  • A remembered ending: “it ended in !23”. Anchor the end with btcrecover’s $: %1,4a!23$ (no space — a space would make it an alternative, not a fixed suffix), or in hashcat fix the last mask positions: ?a?a?s?d?d. Preview the candidates that are actually generated first: python btcrecover.py --listpass --tokenlist tokens.txt.

The honest limit: every unknown position multiplies the search. Three unknown letters at ~26 options each is ~17,600 candidates (seconds); three unknown symbols at ~30 options each is ~27,000; a whole unknown 10-character segment at ~95 options per character is roughly 10¹⁹ — beyond any list. If more than a few characters are fully unknown, focus on recovering more memory (see how your memory made it) instead of widening the mask.

Put each pattern you remember into its own token line — Step 2 shows the syntax, and the btcrecover walkthrough has the full wildcard reference.

Step 2 — build the btcrecover token file (tokens.txt)

Each line of the file is a group of alternatives; btcrecover assembles one piece from each line into every password guess. The syntax that matters:

# comment lines start with # # one token per line · space-separated tokens on a line = alternatives # + before a line = that piece must appear in every guess # ^ = only at the start · $ = only at the end # wildcards: %d digit · %1,3d 1–3 digits · %a lowercase letter · %A uppercase letter · %ia lower or uppercase · %[abc] chars · %y any symbol Markus markus MARKUS # name, three spellings 2019 2020 2018 # year, three candidates %0,1y # maybe one symbol at the end

The most useful wildcards: %d (one digit), %1,3d (one to three digits), %a (one lowercase letter), %[chars] (one of the listed characters), %y (any one symbol), %0,1y (zero or one symbol). Full details and more wildcards are in the btcrecover walkthrough. Always check your list before a long run:

python btcrecover.py --listpass --tokenlist tokens.txt

Try the token list builder — demo with example data

This is a practice version: type anything (or load the example below) and watch how the generator combines pieces into a ready-to-run tokens.txt. Everything lands on one line, so each entry is tried as a complete password — the same rule as the example above. For your real fragments, use the offline builder instead.

Privacy: this demo runs entirely in your browser — no server, no network request, nothing stored. Close the tab and your fragments are gone. What to enter — and what not to ↓

Output for:

The same fragments produce different files: btcrecover wants a token list; hashcat and John the Ripper want a flat wordlist (one candidate per line). Pick your tool and the builder formats the output for it.

What you should and shouldn’t enter: fragments and variations of your password are fine — the generator only combines them into candidates on your own machine. Never paste your full password, and never a seed phrase — those are worth more than any clue list, and no tool on this site ever needs them. The generated file is your candidate list: keep it offline with your wallet files and never upload it to a public checker or unknown website.

The offline builder — for your real fragments

Download token-builder.html — a single file that works completely without internet. Save it, double-click it on your own computer, and build your real tokens.txt there. Nothing you type on this website needs to be real.

Step 3 — build the hashcat wordlist and mask

Wordlist: put every word, name and number from step 1 into a plain file, one per line — that’s words.txt. Then let rules do the mangling (append years, digits, symbols, case swaps):

hashcat -m 11300 -a 0 wallet.hash words.txt -r rules/best66.rule

Mask: when you remember the shape instead of the content. Mask characters: ?l lowercase, ?u uppercase, ?d digit, ?s symbol, ?a anything. “Capital, five lowercase, two digits”:

hashcat -m 11300 -a 3 wallet.hash '?u?l?l?l?l?l?d?d'

Full details in the hashcat walkthrough. Before spending GPU time, verify what your wordlist + rules actually generate — hashcat prints the candidate stream with --stdout.

Step 4 — the password-manager angle (check this before anything runs)

Wallet passwords are rarely only in your head — most were saved somewhere. If the password manager you used back then is itself locked, recovering the manager recovers the wallet password. These formats are crackable with the same tools:

Managerhashcat modeNote
KeePass 1/213400 (AES-KDF, KDBX ≤ 3); 34300 / 34301 (KDBX 4)Identify the version and KDF first: KDBX 4 may be AES-KDF or Argon2 (hashcat 34300/34301); a keyfile makes it much harder.
LastPass6800Needs your account’s hash — exportable before you lose access.
1Password6600 / 8200agilekeychain / cloudkeychain vaults.

Same rules apply: a human-chosen master password with clues is recoverable; a randomly generated one is not. And the search-first rule always wins — check old exports and backups of the manager before cracking it. Where stored passwords hide.

Step 5 — run small, then widen

  • Start tiny. The most-likely 100 combinations first — many cases end here in minutes.
  • Watch the ETA. The tool tells you the timeline. If it says weeks, read how long to crack a password? and decide whether the case even makes sense.
  • Iterate. Each “exhausted” run teaches you: a year was wrong, a spelling differs, a symbol sits elsewhere. Widen one dimension at a time — that’s how recoveries actually succeed.
  • Know the line. If the math says impossible, no tool changes it. Treat that verdict as final: spend the effort on better clues or a complete backup, not on more GPU time.

Ready to run? The full command-level walkthroughs: btcrecover step by step · hashcat step by step. Both tools are free; if they help you, the developers accept tips.

Sources & references

  1. btcrecover — tutorial
  2. hashcat — example hashes (wallet formats & modes)
Missing something, or spot an error? Tell us — every correction is checked and applied.
Was this guide helpful?

Keep going — it’s all free

Not sure what you lost or what’s possible?

Take the quick diagnosis for a first verdict — it stops early when the answer is already clear — then work the search checklist. Everything here is informative, runs offline, and is free to use.