BTCRECOVER / REFERENCE

Estimate recovery time without inventing a success rate

Separate candidate counts from wallet-checking speed, record a meaningful benchmark, and understand what an ETA cannot promise.

Two measurements, two different jobs

The size of your candidate set and the rate at which your setup checks that set determine a rough exhaustive runtime. A candidate preview using --listpass measures generation behavior; it does not measure the expensive wallet verification step. Our candidate-lab counts therefore cannot be used as a wallet benchmark.

Use the upstream benchmark documentation and GPU support notes for your specific workflow. A speed from another wallet format, a different derivation range or another computer is not automatically transferable.

The simplest runtime model

With N candidates and a sustained rate r candidates per second, exhaustive runtime is approximately N/r seconds. For 1,000,000 candidates at an assumed 100 checks/second, that is 10,000 seconds, or about 2 hours 47 minutes. This is an illustrative calculation, not a measured BTCRecover benchmark.

The search-space calculator lets you change independent fixed-position choice counts and an optional rate. It deliberately does not attempt to simulate arbitrary tokenlist permutations, overlapping typo rules or seed derivation work.

When halfway is misleading

“Half the exhaustive time on average” assumes exactly one matching candidate exists, its position is uniformly distributed and the checking rate is stable. Those assumptions rarely describe the full uncertainty of a real recovery. If the right password is missing from the candidate set, completing the search will not recover it at any speed.

Prioritized guesses also violate the uniform-position assumption. A carefully ordered search can find a likely guess early, but there is no justified numerical success probability without evidence about the candidate distribution. This website does not assign one.

What to record with a benchmark

  • BTCRecover commit, Python version and relevant dependencies.
  • Wallet format and the exact checking mode.
  • CPU/GPU model, worker count and acceleration settings.
  • Candidate rules, duplicate handling and address range when applicable.
  • Observed steady checking rate and how long it was observed.

Keep wallet-specific details private. Compare one change at a time and distinguish startup/counting time from steady checking. A published benchmark should say whether it used synthetic or actual wallet data; never include private wallet material.

Correctness comes before acceleration

Start with a tiny controlled search whose expected behavior is known. Verify support for your wallet and chosen backend, then consider acceleration. Increasing hardware spend before checking coverage can make the wrong search finish faster without improving the chance of a match.

Sources and evidence

How this material was prepared and tested. Upstream instructions can change; check your installed revision.

WALLET RECOVERY HELP · KEYCHAINX

Stuck? Talk to KeychainX.

Tell us the wallet application, the type of backup you have, and where you are stuck.

For the first message, leave out seed phrases, private keys and passwords.

Email KeychainX for recovery helpVisit keychainx.io ↗