{"id":234,"date":"2026-09-23T09:28:28","date_gmt":"2026-09-23T09:28:28","guid":{"rendered":"https:\/\/getbitcoin.guide\/articles\/?p=234"},"modified":"2026-10-10T15:12:35","modified_gmt":"2026-10-10T15:12:35","slug":"safest-way-to-store-crypto","status":"publish","type":"post","link":"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/","title":{"rendered":"Safest Way to Store Crypto: It Is a Setup, Not a Device"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>The safest way to store crypto is not a product you buy, it is an arrangement you can survive. Pick the threat you are actually defending against, then choose the setup that covers it. Most losses come from a copied recovery phrase, a single backup destroyed, or a custodian that failed, not from a cracked chip.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"safest-way-to-store-crypto\" data-minutes=\"12\">\n<style>.msq-audio{margin:1.25em 0 1.75em;padding:16px 18px;background:#EEF3F8;border:1px solid #CBD8E6;border-radius:12px}\n.msq-audio-lead{margin:0 0 8px;font-size:.95em}.msq-audio audio{width:100%;margin:0 0 12px;display:block}\n.msq-toc-title{margin:0 0 6px;font-weight:700}.msq-toc ol{margin:0;padding:0;list-style:none}\n.msq-toc li{display:flex;gap:10px;align-items:center;padding:6px 6px;border-bottom:1px solid #CBD8E6;border-radius:8px}\n.msq-toc li:last-child{border-bottom:0}.msq-toc li.is-active{background:#fff}\n.msq-toc-play{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:0;background:#1F4E79;color:#fff;font:inherit;font-size:.72em;line-height:30px;padding:0;cursor:pointer}\n.msq-toc-play.is-playing{background:#B4531A}\n.msq-toc-time{flex:0 0 auto;min-width:3.1em;font-variant-numeric:tabular-nums;color:#4A5560;font-size:.9em}\n.msq-toc a{color:#1B1F24;text-decoration:none;line-height:1.35}.msq-toc li.is-active a{font-weight:700;color:#1F4E79}\n.msq-audio-note{margin:10px 0 0;font-size:.82em;color:#4A5560}\nh2.wp-block-heading[id]{scroll-margin-top:24px}\n.msq-hplay{display:inline-block;vertical-align:middle;width:26px;height:26px;margin:0 0 0 10px;border-radius:50%;border:0;background:#1F4E79;cursor:pointer;padding:0;position:relative;top:-2px}\n.msq-hplay::before{content:'\u25b6\ufe0e';display:block;color:#fff;font-size:11px;line-height:26px;text-align:center}\n.msq-hplay.is-playing{background:#B4531A}.msq-hplay.is-playing::before{content:'\u2016';font-size:13px;font-weight:700}\n.msq-bar{position:fixed;left:0;right:0;bottom:0;z-index:9000;display:flex;align-items:center;gap:10px;padding:8px 12px;padding-bottom:calc(8px + env(safe-area-inset-bottom));background:#FFFFFF;border-top:1px solid #CBD8E6;box-shadow:0 -4px 16px rgba(0,0,0,.08);font-size:.92em;color:#1B1F24;transition:transform .2s ease}\n.msq-bar.is-hidden{transform:translateY(130%)}\n.msq-bar-play{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;background:#1F4E79;color:#fff;font:inherit;font-weight:700;padding:8px 14px 8px 12px;cursor:pointer;white-space:nowrap}\n.msq-bar-play.is-playing{background:#B4531A}\n.msq-bar-icon::before{content:'\u25b6\ufe0e';font-size:12px}.msq-bar-play.is-playing .msq-bar-icon::before{content:'\u2016';font-size:14px;font-weight:700}\n.msq-bar-chapter{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.msq-bar-time{flex:0 0 auto;font-variant-numeric:tabular-nums;color:#4A5560;font-size:.9em}\n.msq-bar-rate,.msq-bar-close{flex:0 0 auto;border:1px solid #CBD8E6;background:#fff;color:#1B1F24;font:inherit;font-size:.85em;line-height:1;border-radius:8px;padding:7px 9px;cursor:pointer}\n.msq-bar-close::before{content:'\u2715'}\n.msq-bar.msq-bar-pill{left:auto;right:14px;bottom:14px;padding:6px;padding-bottom:6px;border:1px solid #CBD8E6;border-radius:999px;box-shadow:0 6px 20px rgba(0,0,0,.15)}\n.msq-bar.msq-bar-pill .msq-bar-chapter,.msq-bar.msq-bar-pill .msq-bar-time,.msq-bar.msq-bar-pill .msq-bar-rate{display:none}\nbody.msq-has-bar{padding-bottom:76px}\n@media (max-width:600px){.msq-bar-time{display:none}.msq-bar{gap:8px;padding-left:10px;padding-right:10px}}\n.msq-s.msq-now{background:#EEF3F8;box-shadow:0 2px 0 #1F4E79;border-radius:2px}\ntr.msq-now td,tr.msq-now th{background:#EEF3F8;box-shadow:inset 0 -2px 0 #1F4E79}\n@media (hover:hover){.msq-s,tr[data-i]{cursor:pointer}.msq-s:hover{background:#EEF3F8}}<\/style>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"AudioObject\",\"@id\":\"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/#audio\",\"name\":\"Safest Way to Store Crypto: It Is a Setup, Not a Device, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 10 October 2026.\",\"contentUrl\":\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/safest-way-to-store-crypto-audio-202610102042.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT12M14S\",\"uploadDate\":\"2026-10-10\",\"inLanguage\":\"en-GB\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"Safest Way to Store Crypto: It Is a Setup, Not a Device\",\"startOffset\":0,\"endOffset\":34},{\"@type\":\"Clip\",\"name\":\"Why is the safest way to store crypto a question about setups, not products?\",\"startOffset\":34,\"endOffset\":86,\"url\":\"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/#why-is-the-safest-way-to-store-crypto-a-question-about-setup\"},{\"@type\":\"Clip\",\"name\":\"What are you actually defending against?\",\"startOffset\":86,\"endOffset\":143,\"url\":\"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/#what-are-you-actually-defending-against\"},{\"@type\":\"Clip\",\"name\":\"Where has each storage arrangement already failed?\",\"startOffset\":143,\"endOffset\":389,\"url\":\"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/#where-has-each-storage-arrangement-already-failed\"},{\"@type\":\"Clip\",\"name\":\"What do people who moved to self custody actually report?\",\"startOffset\":389,\"endOffset\":543,\"url\":\"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/#what-do-people-who-moved-to-self-custody-actually-report\"},{\"@type\":\"Clip\",\"name\":\"Does multisig make it safer, or just differently fragile?\",\"startOffset\":543,\"endOffset\":606,\"url\":\"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/#does-multisig-make-it-safer-or-just-differently-fragile\"},{\"@type\":\"Clip\",\"name\":\"What does a workable arrangement look like in practice?\",\"startOffset\":606,\"endOffset\":734,\"url\":\"https:\/\/getbitcoin.guide\/articles\/safest-way-to-store-crypto\/#what-does-a-workable-arrangement-look-like-in-practice\"}],\"contentSize\":\"5.1 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 12 minutes. A synthetic voice reads the article and announces each section title as it begins; tables are read row by row and the questions at the end are left out.<\/p>\n<audio class=\"msq-audio-player\" controls preload=\"metadata\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/safest-way-to-store-crypto-audio-202610102042.mp3\"><\/audio>\n<nav class=\"msq-toc\" aria-label=\"In this article\"><p class=\"msq-toc-title\">In this article<\/p>\n<ol>\n<li data-start=\"0.0\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"0.0\" aria-label=\"Play from: Safest Way to Store Crypto: It Is a Setup, Not a Device\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">Safest Way to Store Crypto: It Is a Setup, Not a Device<\/a><\/li>\n<li data-start=\"34.14\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"34.14\" aria-label=\"Play from: Why is the safest way to store crypto a question about setups, not products?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:34<\/span><a href=\"#why-is-the-safest-way-to-store-crypto-a-question-about-setup\">Why is the safest way to store crypto a question about setups, not products?<\/a><\/li>\n<li data-start=\"86.16\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"86.16\" aria-label=\"Play from: What are you actually defending against?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">1:26<\/span><a href=\"#what-are-you-actually-defending-against\">What are you actually defending against?<\/a><\/li>\n<li data-start=\"143.02\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"143.02\" aria-label=\"Play from: Where has each storage arrangement already failed?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">2:23<\/span><a href=\"#where-has-each-storage-arrangement-already-failed\">Where has each storage arrangement already failed?<\/a><\/li>\n<li data-start=\"389.36\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"389.36\" aria-label=\"Play from: What do people who moved to self custody actually report?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">6:29<\/span><a href=\"#what-do-people-who-moved-to-self-custody-actually-report\">What do people who moved to self custody actually report?<\/a><\/li>\n<li data-start=\"543.42\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"543.42\" aria-label=\"Play from: Does multisig make it safer, or just differently fragile?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">9:03<\/span><a href=\"#does-multisig-make-it-safer-or-just-differently-fragile\">Does multisig make it safer, or just differently fragile?<\/a><\/li>\n<li data-start=\"606.04\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"606.04\" aria-label=\"Play from: What does a workable arrangement look like in practice?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">10:06<\/span><a href=\"#what-does-a-workable-arrangement-look-like-in-practice\">What does a workable arrangement look like in practice?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 10 October 2026 from the article as published that day. Press a chapter to jump there; the highlighted line is what is playing. A play button sits beside every section heading, and once you scroll past this player a bar at the bottom of the screen keeps the controls in reach. Tap or click any sentence to hear the reading start from there.<\/p>\n<script>var MSQ_SENT = [[0.0,\"h\",\"safestwaytostorecryptoit\",42],[4.0,\"p\",\"thesafestwaytostorecrypt\",74],[9.08,\"p\",\"pickthethreatyouareactua\",73],[13.72,\"p\",\"mostlossescomefromacopie\",102],[22.68,\"p\",\"onthispageadetailedtable\",140],[34.14,\"h\",\"whyisthesafestwaytostore\",61],[38.74,\"p\",\"searchthisandthefirstpag\",85],[45.1,\"p\",\"allthreeanswerhardwarewa\",105],[53.18,\"p\",\"theansweriscorrectandinc\",59],[57.06,\"p\",\"ahardwarewalletkeepsapri\",61],[61.3,\"p\",\"thatisthewholeofwhatitdo\",26],[63.5,\"p\",\"itdoesnotdecidewheretheb\",143],[73.18,\"p\",\"thosearethepartsthatfail\",65],[77.54,\"p\",\"ifthedeviceitselfisstill\",114],[86.16,\"h\",\"whatareyouactuallydefend\",34],[88.24,\"p\",\"therearefivethreatsherea\",58],[92.12,\"p\",\"somebodyelsereachingyour\",92],[98.92,\"p\",\"youlosingyourownkeyfiref\",62],[105.44,\"p\",\"athirdpartyfailingwhileh\",61],[109.6,\"p\",\"coercionwheresomebodykno\",51],[113.88,\"p\",\"yourdeathorincapacitywhe\",56],[118.4,\"p\",\"hereistheawkwardpart\",20],[120.56,\"p\",\"defendingharderagainstth\",66],[125.16,\"p\",\"threecopiesofaphraseinth\",78],[131.52,\"p\",\"apassphraseonlyyouknowis\",81],[137.08,\"p\",\"noarrangementwinsonallfi\",72],[143.02,\"h\",\"wherehaseachstoragearran\",43],[145.74,\"p\",\"sohereisthetabletheranki\",41],[148.82,\"p\",\"onerowperarrangementeach\",90],[155.66,\"p\",\"starratingsarecheap\",19],[157.3,\"p\",\"courtjudgmentsandregulat\",39],[160.22,\"t\",\"coinsleftonanexchange\",434],[199.5,\"t\",\"hardwarewalletphrasesave\",442],[238.42,\"t\",\"hardwarewalletonemetalba\",355],[275.3,\"t\",\"phraseplusapassphrasethe\",337],[302.5,\"t\",\"multisigkeysheldinsepara\",403],[340.26,\"t\",\"anyoftheaboveboughtunder\",369],[372.62,\"p\",\"twothingsstandout\",17],[374.26,\"p\",\"notoneofthosefailureswas\",80],[380.26,\"p\",\"andthecustodialrowistheo\",130],[389.36,\"h\",\"whatdopeoplewhomovedtose\",47],[393.08,\"p\",\"testimonynotevidence\",20],[396.04,\"p\",\"ireadsixindividualpublic\",110],[403.88,\"p\",\"nobodyauditedtheseaccoun\",146],[413.48,\"p\",\"areviewerpostingasmbfrom\",162],[428.68,\"p\",\"thecauseisnotestablished\",44],[431.76,\"p\",\"ledgerspublicreplysaidit\",106],[438.92,\"p\",\"martinstephensonfromtheu\",236],[456.88,\"p\",\"trezorrepliedpubliclytha\",56],[460.6,\"p\",\"austingfromcanadaontrust\",201],[477.68,\"p\",\"nodramawhichisthepoint\",22],[479.48,\"p\",\"areviewerpostingasdantef\",167],[492.72,\"p\",\"anypaidserviceattachedto\",55],[496.88,\"p\",\"abitcointalkthreadopened\",117],[505.96,\"p\",\"oneposterinukrainedescri\",90],[512.6,\"p\",\"theanswersconvergedongeo\",66],[516.96,\"p\",\"wheretheaccountsagreewit\",122],[525.76,\"p\",\"wheretheypartcompanytheg\",79],[531.2,\"p\",\"theseaccountsdescribefra\",117],[539.76,\"p\",\"recognitionisnottherelia\",40],[543.42,\"h\",\"doesmultisigmakeitsafero\",47],[547.38,\"p\",\"multisigsplitsawalletacr\",83],[554.18,\"p\",\"itgenuinelyremovesthesin\",128],[562.62,\"p\",\"thatisarealimprovementan\",41],[566.02,\"p\",\"whatitaddsiscoordination\",24],[568.54,\"p\",\"morekeysmoreplacessoftwa\",107],[577.26,\"p\",\"thefailureitintroducesis\",42],[580.78,\"p\",\"theparitycaseinthetablei\",108],[587.78,\"p\",\"multisigmovesriskrathert\",37],[590.74,\"p\",\"thepassphrasecarriesthes\",43],[593.62,\"p\",\"itdefendsawrittenphraset\",110],[601.02,\"p\",\"treatitasasecondsecretne\",50],[606.04,\"h\",\"whatdoesaworkablearrange\",46],[609.24,\"p\",\"thereisnorankingtogiveyo\",82],[614.56,\"p\",\"whatdoestransferistheset\",111],[622.12,\"p\",\"canyourestorefromtheback\",67],[626.84,\"p\",\"ifyouhavenevertestedityo\",57],[630.52,\"p\",\"doesanysingleeventonefir\",65],[636.92,\"p\",\"isanycopyreachablefromth\",33],[639.44,\"p\",\"apasswordmanagervaultacl\",98],[647.68,\"p\",\"doessomebodyelseknowenou\",70],[653.72,\"p\",\"thatistheinheritanceprob\",50],[658.0,\"p\",\"wouldaletterwiththeright\",61],[661.48,\"p\",\"onthatlastonewrittenplai\",27],[664.0,\"p\",\"arecoveryphrasebelongsin\",98],[671.6,\"p\",\"nevertypeitintoawebsitea\",112],[680.64,\"p\",\"ledgersphysicalmailphish\",164],[694.56,\"p\",\"nolegitimaterecoveryserv\",93],[701.32,\"p\",\"moreonthemechanicsinhowa\",128],[709.76,\"p\",\"whichleavestheunglamorou\",35],[712.68,\"p\",\"anuntestedthreeoffivemul\",143],[722.52,\"p\",\"complexityyoucannotopera\",147]];\n(function(){\n  function init(){\n  var root = document.querySelector('.msq-audio'); if (!root) { return; }\n  var audio = root.querySelector('audio'), items = Array.prototype.slice.call(root.querySelectorAll('.msq-toc li'));\n  var starts = items.map(function(li){ return parseFloat(li.getAttribute('data-start')) || 0; });\n  var names = items.map(function(li){ return li.querySelector('a').textContent; });\n  var anchors = items.map(function(li){ var h = li.querySelector('a').getAttribute('href') || ''; return (h.charAt(0) === '#' && h !== '#top') ? document.getElementById(h.slice(1)) : null; });\n  var article = root.getAttribute('data-article') || location.pathname, minutes = root.getAttribute('data-minutes') || '';\n  var marks = {}, started = false, pausedAt = -1, closed = false, ended = false;\n  var RATES = [1, 1.25, 1.5], rate = 1;\n  try { var saved = parseFloat(localStorage.getItem('msq-audio-rate')); if (RATES.indexOf(saved) >= 0) { rate = saved; } } catch (e) {}\n  audio.playbackRate = rate;\n  function track(name, extra){ try { if (typeof gtag === 'function') { var p = { article: article }; for (var k in extra) { p[k] = extra[k]; } gtag('event', name, p); } } catch (e) {} }\n  function current(){ var t = audio.currentTime, idx = 0; for (var i = 0; starts.length > i; i += 1) { if (t + 0.25 >= starts[i]) { idx = i; } } return idx; }\n  function onScreen(){\n    var line = window.innerHeight \/ 3, idx = 0;\n    for (var i = 0; anchors.length > i; i += 1) { var el = anchors[i]; if (el && line >= el.getBoundingClientRect().top) { idx = i; } }\n    return idx;\n  }\n  function fmt(s){ s = Math.max(0, Math.round(s || 0)); var m = Math.floor(s \/ 60), r = s % 60; return m + ':' + (10 > r ? '0' : '') + r; }\n  function play(from, source){\n    if (from !== null) { audio.currentTime = from; }\n    var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n    track(from === null ? 'audio_resume' : 'audio_chapter', { chapter: names[current()], start: Math.round(audio.currentTime), source: source });\n  }\n  var hbtns = anchors.map(function(el, i){\n    if (!el) { return null; }\n    var b = document.createElement('button'); b.type = 'button'; b.className = 'msq-hplay'; b.setAttribute('aria-label', 'Play this section: ' + names[i]);\n    b.addEventListener('click', function(){\n      if (!audio.paused && current() === i) { audio.pause(); track('audio_pause', { source: 'heading' }); return; }\n      play(starts[i], 'heading');\n    });\n    el.appendChild(b); return b;\n  });\n  var bar = document.createElement('div'); bar.className = 'msq-bar msq-bar-pill is-hidden'; bar.setAttribute('role', 'region'); bar.setAttribute('aria-label', 'Audio player');\n  var playBtn = document.createElement('button'); playBtn.type = 'button'; playBtn.className = 'msq-bar-play';\n  var icon = document.createElement('span'); icon.className = 'msq-bar-icon'; icon.setAttribute('aria-hidden', 'true');\n  var label = document.createElement('span'); label.className = 'msq-bar-label';\n  playBtn.appendChild(icon); playBtn.appendChild(label);\n  var chap = document.createElement('span'); chap.className = 'msq-bar-chapter';\n  var clock = document.createElement('span'); clock.className = 'msq-bar-time';\n  var rateBtn = document.createElement('button'); rateBtn.type = 'button'; rateBtn.className = 'msq-bar-rate'; rateBtn.setAttribute('aria-label', 'Playback speed');\n  var closeBtn = document.createElement('button'); closeBtn.type = 'button'; closeBtn.className = 'msq-bar-close'; closeBtn.setAttribute('aria-label', 'Close the audio bar');\n  bar.appendChild(playBtn); bar.appendChild(chap); bar.appendChild(clock); bar.appendChild(rateBtn); bar.appendChild(closeBtn);\n  document.body.appendChild(bar);\n  function showRate(){ rateBtn.textContent = (rate === 1 ? '1' : String(rate)) + 'x'; }\n  showRate();\n  rateBtn.addEventListener('click', function(){\n    rate = RATES[(RATES.indexOf(rate) + 1) % RATES.length]; audio.playbackRate = rate; showRate();\n    try { localStorage.setItem('msq-audio-rate', String(rate)); } catch (e) {}\n    track('audio_rate', { rate: rate });\n  });\n  closeBtn.addEventListener('click', function(){\n    closed = true; if (!audio.paused) { audio.pause(); } paint(); track('audio_bar_close', {});\n  });\n  function mode(){\n    if (!audio.paused) { return 'pause'; }\n    if (ended) { return 'again'; }\n    if (!started) { return 'listen'; }\n    return (pausedAt === onScreen()) ? 'resume' : 'section';\n  }\n  playBtn.addEventListener('click', function(){\n    var m = mode();\n    if (m === 'pause') { audio.pause(); track('audio_pause', { source: 'bar' }); return; }\n    if (m === 'again') { ended = false; play(0, 'bar'); return; }\n    if (m === 'resume') { play(null, 'bar'); return; }\n    play(starts[onScreen()], 'bar');\n  });\n  function paint(){\n    var idx = current(), playing = !audio.paused, m = mode();\n    items.forEach(function(li, i){\n      var on = (i === idx) && playing, b = li.querySelector('.msq-toc-play'), a = li.querySelector('a');\n      li.classList.toggle('is-active', on); b.classList.toggle('is-playing', on);\n      b.textContent = on ? '\u2016' : '\u25b6\ufe0e';\n      b.setAttribute('aria-label', (on ? 'Pause: ' : 'Play from: ') + a.textContent);\n    });\n    hbtns.forEach(function(b, i){ if (b) { var on = (i === idx) && playing; b.classList.toggle('is-playing', on); b.setAttribute('aria-label', (on ? 'Pause this section: ' : 'Play this section: ') + names[i]); } });\n    playBtn.classList.toggle('is-playing', playing);\n    label.textContent = m === 'pause' ? 'Pause' : m === 'again' ? 'Play again' : m === 'resume' ? 'Resume' : m === 'section' ? 'Play this section' : 'Listen, ' + minutes + ' min';\n    playBtn.setAttribute('aria-label', label.textContent);\n    chap.textContent = started ? names[(playing || m === 'resume') ? idx : onScreen()] : '';\n    clock.textContent = started ? fmt(audio.currentTime) + ' \/ ' + fmt(audio.duration) : '';\n    bar.classList.toggle('msq-bar-pill', !started);\n    var show = !closed && (started || 0 > root.getBoundingClientRect().bottom);\n    bar.classList.toggle('is-hidden', !show);\n    document.body.classList.toggle('msq-has-bar', show);\n  }\n  root.addEventListener('click', function(e){\n    var b = e.target.closest ? e.target.closest('.msq-toc-play') : null; if (!b) { return; }\n    var li = b.parentNode, s = parseFloat(b.getAttribute('data-start')) || 0;\n    if (!audio.paused && current() === items.indexOf(li)) { audio.pause(); track('audio_pause', { source: 'index' }); return; }\n    play(s, 'index');\n  });\n  audio.addEventListener('play', function(){ ended = false; closed = false; if (!started) { started = true; track('audio_play', { minutes: Math.round((audio.duration || 0) \/ 60) }); } paint(); });\n  audio.addEventListener('pause', function(){ pausedAt = current(); paint(); });\n  audio.addEventListener('timeupdate', function(){\n    paint();\n    if (audio.duration > 0) {\n      var pct = Math.floor(audio.currentTime \/ audio.duration * 100);\n      [25, 50, 75].forEach(function(m){ if (pct >= m && !marks[m]) { marks[m] = true; track('audio_progress', { percent: m }); } });\n    }\n  });\n  audio.addEventListener('ended', function(){ ended = true; track('audio_complete', {}); paint(); });\n  var ticking = false;\n  function onScroll(){ if (ticking) { return; } ticking = true; setTimeout(function(){ ticking = false; paint(); }, 80); }\n  window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onScroll);\n  paint();\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }\n})();\n\n(function(){\n  function start(){\n    var root = document.querySelector('.msq-audio'), audio = root ? root.querySelector('audio') : null;\n    var map = (typeof MSQ_SENT !== 'undefined') ? MSQ_SENT : [];\n    if (!root || !audio || !map.length) { return; }\n    var scope = root.closest('main') || root.closest('article') || root.closest('.entry-content') || document.body;\n    var SKIP = '.msq-audio,.msq,.msq-tool,.msq-end,.msq-bar,script,style,noscript,figcaption,#rank-math-faq,.rank-math-block,nav,header,footer';\n    function norm(s){ return s.toLowerCase().replace(\/[^a-z0-9]+\/g, ''); }\n    var nodes = [], stream = '', walker = document.createTreeWalker(scope, NodeFilter.SHOW_TEXT, null), n;\n    while ((n = walker.nextNode())) {\n      var el = n.parentElement; if (!el || el.closest(SKIP)) { continue; }\n      var raw = n.nodeValue, keep = [], norms = '';\n      for (var i = 0; raw.length > i; i += 1) { var c = raw.charAt(i).toLowerCase(); if (\/[a-z0-9]\/.test(c)) { keep.push(i); norms += c; } }\n      if (!norms) { continue; }\n      nodes.push({ node: n, a: stream.length, b: stream.length + norms.length, keep: keep });\n      stream += norms;\n    }\n    var segs = [], cursor = 0, lastRow = null;\n    map.forEach(function(m, idx){\n      var kind = m[1], f = m[2], len = m[3];\n      if (kind === 't') {\n        var rows = scope.querySelectorAll('tr'), after = !lastRow;\n        for (var r = 0; rows.length > r; r += 1) {\n          var tr = rows[r];\n          if (!after) { if (tr === lastRow) { after = true; } continue; }\n          var cell = tr.querySelector('td,th');\n          if (cell && norm(cell.textContent).indexOf(f) === 0) { tr.setAttribute('data-i', idx); lastRow = tr; break; }\n        }\n        return;\n      }\n      var p = stream.indexOf(f, cursor); if (0 > p) { return; }\n      segs.push({ i: idx, a: p, b: Math.min(p + len, stream.length) }); cursor = p + len;\n    });\n    var si = 0;\n    nodes.forEach(function(nd){\n      var frag = document.createDocumentFragment(), raw = nd.node.nodeValue, rawPos = 0, any = false;\n      for (var k = si; segs.length > k; k += 1) {\n        var sg = segs[k]; if (sg.a >= nd.b) { break; } if (nd.a >= sg.b) { continue; }\n        var s = Math.max(sg.a, nd.a), e = Math.min(sg.b, nd.b);\n        var rs = nd.keep[s - nd.a], re2 = nd.keep[e - nd.a - 1] + 1;\n        if (rs > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos, rs))); }\n        var span = document.createElement('span'); span.className = 'msq-s'; span.setAttribute('data-i', sg.i); span.textContent = raw.slice(rs, re2);\n        frag.appendChild(span); rawPos = re2; any = true;\n        if (sg.b > nd.b) { break; }\n      }\n      while (segs.length > si && nd.b >= segs[si].b) { si += 1; }\n      if (!any) { return; }\n      if (raw.length > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos))); }\n      nd.node.parentNode.replaceChild(frag, nd.node);\n    });\n    var starts = map.map(function(m){ return m[0]; }), curIdx = -1, lastUser = 0, timer = null, autoUntil = 0, dragging = false;\n    function idxAt(t){ var lo = 0, hi = starts.length; while (hi > lo + 1) { var mid = (lo + hi) >> 1; if (t + 0.15 >= starts[mid]) { lo = mid; } else { hi = mid; } } return (t + 0.15 >= starts[0]) ? lo : -1; }\n    function setNow(i){\n      if (i === curIdx) { return; }\n      Array.prototype.forEach.call(scope.querySelectorAll('.msq-now'), function(el){ el.classList.remove('msq-now'); });\n      curIdx = i; if (0 > i) { return; }\n      var els = scope.querySelectorAll('[data-i=\"' + i + '\"]'); if (!els.length) { return; }\n      Array.prototype.forEach.call(els, function(el){ el.classList.add('msq-now'); });\n      var r = els[0].getBoundingClientRect(), now = Date.now();\n      if (!dragging && now > lastUser + 2500 && (80 > r.top || r.bottom > window.innerHeight - 140)) {\n        var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n        autoUntil = now + (reduce ? 400 : 1600);\n        els[0].scrollIntoView({ block: 'center', behavior: reduce ? 'auto' : 'smooth' });\n      }\n    }\n    function tick(){ if (!audio.paused) { setNow(idxAt(audio.currentTime)); } }\n    function userScrolled(){ lastUser = Date.now(); }\n    ['wheel', 'touchmove', 'keydown'].forEach(function(ev){ window.addEventListener(ev, userScrolled, { passive: true }); });\n    window.addEventListener('scroll', function(){ if (Date.now() > autoUntil) { userScrolled(); } }, { passive: true });\n    window.addEventListener('mousedown', function(e){ if (e.clientX >= document.documentElement.clientWidth) { dragging = true; userScrolled(); } }, { passive: true });\n    window.addEventListener('mouseup', function(){ if (dragging) { dragging = false; userScrolled(); } }, { passive: true });\n    audio.addEventListener('play', function(){ if (timer) { clearInterval(timer); } timer = setInterval(tick, 150); tick(); });\n    audio.addEventListener('pause', function(){ if (timer) { clearInterval(timer); timer = null; } });\n    scope.addEventListener('click', function(e){\n      if (e.target.closest('a, button, input, select, textarea, label, summary, .msq, .msq-tool, .msq-end, .msq-audio, .msq-bar')) { return; }\n      var sel = window.getSelection ? String(window.getSelection()) : '';\n      if (sel && sel.trim()) { return; }\n      var el = e.target.closest('[data-i]'); if (!el) { return; }\n      var i = parseInt(el.getAttribute('data-i'), 10); if (isNaN(i)) { return; }\n      if (!audio.paused && i === curIdx) { return; }\n      lastUser = Date.now();\n      audio.currentTime = starts[i];\n      var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n      try { if (typeof gtag === 'function') { gtag('event', 'audio_chapter', { article: location.pathname, source: 'sentence', start: Math.round(starts[i]) }); } } catch (err) {}\n    });\n    audio.addEventListener('seeked', tick);\n    audio.addEventListener('ended', function(){ setNow(-1); });\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); }\n})();<\/script>\n<\/div>\n\n\n\n<p class=\"msq-hook wp-block-paragraph\">On this page: a detailed table of documented custody failures, real-world case studies from regulatory reviews, a self-custody checklist, and a multisig safety breakdown.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"safest-way-to-store-crypto\" data-category=\"Self custody\" data-list=\"1\">\n<style>.msq,.msq-hook,.msq-box,.msq-end,.msq-tool{--msq-accent:#1F4E79;--msq-accent-text:#FFFFFF;--msq-line:#CBD8E6;--msq-warn:#B4531A;--msq-muted:#4A5560;--msq-tint:#EEF3F8;--msq-base:#FFFFFF}\n.msq{margin:1.25em 0 1.75em}\n.msq-hook{border-left:3px solid var(--msq-accent);padding:6px 14px;color:var(--msq-muted);font-size:.97em}\n.msq-box{background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px;padding:0}\n.msq-box>summary{cursor:pointer;list-style:none;padding:14px 18px;font-weight:700;color:var(--msq-accent)}\n.msq-box>summary::-webkit-details-marker{display:none}\n.msq-box>summary::before{content:\"+\";display:inline-block;width:1.1em;font-weight:800}\n.msq-box[open]>summary::before{content:\"\\00d7\"}\n.msq-body{padding:2px 18px 18px}\n.msq-intro{margin:0 0 12px;font-size:.95em;color:var(--msq-muted)}\n.msq-list{margin:0;padding:0;list-style:none}\n.msq-q{margin:0 0 18px;padding:0}\n.msq-question{font-weight:700;margin:0 0 8px}\n.msq-options{display:flex;flex-direction:column;gap:8px}\n.msq-opt{text-align:left;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;padding:10px 12px;font:inherit;font-size:.95em;color:inherit;cursor:pointer;line-height:1.35}\n.msq-opt:hover{border-color:var(--msq-accent)}\n.msq-opt[disabled]{cursor:default}\n.msq-opt.is-right{border-color:var(--msq-accent);background:var(--msq-line);font-weight:700}\n.msq-opt.is-wrong{border-color:var(--msq-warn);color:var(--msq-warn)}\n.msq-explain{margin:8px 0 0;font-size:.92em;padding:10px 12px;border-left:3px solid var(--msq-accent);background:var(--msq-base);border-radius:0 8px 8px 0}\n.msq-explain[hidden]{display:none}\n.msq-verdict{font-weight:700}\n.msq-result{margin-top:14px;padding:14px 16px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:10px}\n.msq-result[hidden]{display:none}\n.msq-result h3{margin:0 0 6px;font-size:1.1em}\n.msq-result p{margin:0 0 8px}\n.msq-jump{margin:0 0 8px;padding-left:1.2em}\n.msq-form{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n.msq-form input[type=email]{flex:1 1 220px;padding:10px 12px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-btn{background:var(--msq-accent);color:var(--msq-accent-text);border:0;border-radius:8px;padding:11px 18px;font:inherit;font-weight:700;cursor:pointer}\n.msq-btn:hover{filter:brightness(.92)}\n.msq-btn[disabled]{opacity:.7;cursor:default}\n.msq-no{font-size:.9em;color:var(--msq-muted);margin-left:4px}\n.msq-privacy{margin:6px 0 0;font-size:.82em;color:var(--msq-muted);flex-basis:100%}\n.msq-hp{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}\n.msq-msg{margin:8px 0 0;font-size:.92em}\n.msq-end{margin:1.5em 0;padding:18px;border:1px solid var(--msq-accent);border-radius:12px;text-align:center;background:var(--msq-tint)}\n.msq-end p{margin:0 0 12px}\n.msq-end .msq-body{text-align:left;padding:16px 0 0}\n.msq-end .msq-start-test[hidden]{display:none}\n.msq-tool{margin:1.5em 0;padding:18px 20px;background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px}\n.msq-tool h3{margin:0 0 6px;font-size:1.15em}\n.msq-tool p{margin:0 0 10px}\n.msq-tool .msq-note{font-size:.85em;color:var(--msq-muted);margin:10px 0 0}\n.msq-check label{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--msq-line);cursor:pointer;line-height:1.4}\n.msq-check label:last-of-type{border-bottom:0}\n.msq-check input{margin-top:5px;flex:0 0 auto;width:18px;height:18px;accent-color:var(--msq-accent)}\n.msq-check-count{font-weight:700;margin:10px 0 0}\n.msq-verdict-box{margin:12px 0 0;padding:10px 14px;border-radius:8px;background:var(--msq-base);border-left:3px solid var(--msq-warn)}\n.msq-verdict-box[hidden]{display:none}\n.msq-calc{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}\n.msq-calc label{display:flex;flex-direction:column;gap:4px;font-size:.92em}\n.msq-calc input,.msq-calc select{padding:8px 10px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-calc-out{grid-column:1 \/ -1;margin-top:6px;padding:12px 14px;background:var(--msq-base);border-radius:8px;border:1px solid var(--msq-line)}\n.msq-calc-out strong{font-size:1.15em}\n.msq-choose label{display:block;padding:9px 12px;margin:0 0 8px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;cursor:pointer}\n.msq-choose input{margin-right:8px;accent-color:var(--msq-accent)}\n.msq-choice-result{margin-top:10px;padding:12px 14px;background:var(--msq-base);border-left:3px solid var(--msq-accent);border-radius:0 8px 8px 0}\n.msq-choice-result[hidden]{display:none}\n@media (max-width:600px){.msq-calc{grid-template-columns:1fr}}\nh2.wp-block-heading[id]{scroll-margin-top:24px}<\/style>\n<noscript><style>.msq-explain{display:block !important}<\/style><\/noscript>\n<details class=\"msq-box\">\n<summary>Think you already know this? Five questions, one minute.<\/summary>\n<div class=\"msq-body\">\n<p class=\"msq-intro\">Every answer is on this page. Answer from what you know now; the page fills in the rest.<\/p>\n<ol class=\"msq-list\">\n<li class=\"msq-q\" data-q=\"1\" data-answer=\"b\" data-title=\"Why is the safest way to store crypto a question about setups, not products?\" data-section=\"#why-is-the-safest-way-to-store-crypto-a-question-about-setup\">\n<p class=\"msq-question\">1. What is the primary role of a hardware wallet?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">To decide where the backup of a private key lives<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">To keep a private key off an internet connected computer<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">To manage estate planning and inheritance automatically<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>A hardware wallet keeps a private key off an internet connected computer, but it does not decide where backups live or how they are secured. <a class=\"msq-section\" href=\"#why-is-the-safest-way-to-store-crypto-a-question-about-setup\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"a\" data-title=\"What are you actually defending against?\" data-section=\"#what-are-you-actually-defending-against\">\n<p class=\"msq-question\">2. Why is it difficult to design a single storage arrangement that protects against all five main threats?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Defending harder against theft usually makes loss more likely, and the reverse<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Hardware wallet chips are easily cracked by malware<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">No physical backup material can survive a house fire<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Defending harder against theft makes loss more likely, and the reverse: for example, three copies of a phrase in three cities is excellent against fire but worse against burglary. <a class=\"msq-section\" href=\"#what-are-you-actually-defending-against\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"c\" data-title=\"Where has each storage arrangement already failed?\" data-section=\"#where-has-each-storage-arrangement-already-failed\">\n<p class=\"msq-question\">3. According to regulatory findings, what was the primary issue in the QuadrigaCX exchange failure?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">The hardware wallet chips were physically cracked by hackers<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">A password manager breach leaked the exchange seed phrase to the public<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">The chief executive was the only person with access to the cold wallet keys<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>As detailed in the <a href=\"https:\/\/www.osc.ca\/quadrigacxreport\/\" target=\"_blank\" rel=\"noopener\">Ontario Securities Commission review published in June 2020<\/a>, roughly 76,000 clients were owed about 215 million dollars, and the chief executive was the only person with access to the cold wallet keys. <a class=\"msq-section\" href=\"#where-has-each-storage-arrangement-already-failed\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"b\" data-title=\"Does multisig make it safer, or just differently fragile?\" data-section=\"#does-multisig-make-it-safer-or-just-differently-fragile\">\n<p class=\"msq-question\">4. What risk does a multisig setup introduce instead of theft?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">A single point of failure that automatically leaks the seed phrase<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Quorum and coordination issues that can freeze access to funds<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">An inability to use offline steel backups<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Multisig moves risk from single-key theft to coordination and quorum issues, as shown in the Parity wallet freeze where <a href=\"https:\/\/www.parity.io\/blog\/parity-technologies-multi-sig-wallet-issue-update\/\" target=\"_blank\" rel=\"noopener\">587 wallets holding 513,774.16 ether<\/a> became permanently inaccessible. <a class=\"msq-section\" href=\"#does-multisig-make-it-safer-or-just-differently-fragile\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"b\" data-title=\"What does a workable arrangement look like in practice?\" data-section=\"#what-does-a-workable-arrangement-look-like-in-practice\">\n<p class=\"msq-question\">5. Where is the only safe place to record and store a recovery phrase?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">In an encrypted cloud note or password manager vault<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">On a physical, offline medium in a location you control<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">In a secure support chat with your hardware wallet vendor<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>A recovery phrase must live on something physical, offline, and under your control. According to the <a href=\"https:\/\/support.ledger.com\/article\/physical-mail-phishing-scam\" target=\"_blank\" rel=\"noopener\">physical mail phishing advisory, last updated 14 May 2026 and checked again on 23 September 2026<\/a>, legitimate services will never ask you to enter your phrase online. <a class=\"msq-section\" href=\"#what-does-a-workable-arrangement-look-like-in-practice\">Read the section<\/a><\/p>\n<\/li>\n<\/ol>\n<div class=\"msq-result\" hidden><\/div>\n<\/div>\n<\/details>\n<script>(function(){\n  if (window.__msqInit) { return; }\n  window.__msqInit = true;\n  var root = document.getElementById('ms-quiz');\n  if (!root) { return; }\n  var meta = { slug: root.getAttribute('data-slug'), category: root.getAttribute('data-category'),\n               list: root.getAttribute('data-list') || '1' };\n  function qs(el, s){ return el.querySelector(s); }\n  function qsa(el, s){ return Array.prototype.slice.call(el.querySelectorAll(s)); }\n  function track(name, params){\n    try { if (typeof gtag === 'function') { var p = params || {}; p.article = meta.slug; gtag('event', name, p); } } catch (e) {}\n  }\n  function jumpList(missed){\n    if (!missed.length) { return ''; }\n    return '<ul class=\"msq-jump\">' + missed.map(function(q){\n      return '<li><a href=\"' + q.getAttribute('data-section') + '\">' + q.getAttribute('data-title') + '<\/a><\/li>';\n    }).join('') + '<\/ul>';\n  }\n  function emailForm(){\n    return '<div class=\"msq-sub\"><p><strong>Get the next one.<\/strong> We publish new articles on ' + meta.category\n      + ' most weeks and recheck this page on Sundays. Email me when a new article goes up or this page changes.<\/p>'\n      + '<form class=\"msq-form\" method=\"post\" action=\"\/mail\/form.php\" novalidate>'\n      + '<input type=\"hidden\" name=\"list\" value=\"' + meta.list + '\">'\n      + '<input type=\"hidden\" name=\"name\" value=\"\">'\n      + '<label class=\"msq-hp\" aria-hidden=\"true\">Leave this empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>'\n      + '<input type=\"email\" name=\"email\" placeholder=\"you@example.com\" required aria-label=\"Email address\" autocomplete=\"email\">'\n      + '<button type=\"submit\" class=\"msq-btn\">Email me the updates<\/button>'\n      + '<a href=\"#\" class=\"msq-no\">No thanks<\/a>'\n      + '<p class=\"msq-privacy\">We store your email and this page\\'s topic, nothing else. Unsubscribe any time.<\/p>'\n      + '<\/form><p class=\"msq-msg\" aria-live=\"polite\"><\/p><\/div>';\n  }\n  \/* The autoresponder always answers 200 with its own page. A \".msg.err\" box means the\n     address was rejected, \"You're subscribed\" means accepted, and a redirect only happens\n     after a successful subscribe. Same reading as the landing pages on the other sites. *\/\n  function sendForm(form){\n    return fetch(form.getAttribute('action'), { method: 'POST', body: new FormData(form), credentials: 'same-origin', redirect: 'manual' })\n      .then(function(res){\n        if (res.type === 'opaqueredirect') { return { status: 'ok' }; }\n        if (res.status === 404) { return { status: 'notlive' }; }\n        if (!res.ok) { throw new Error('HTTP ' + res.status); }\n        return res.text().then(function(t){\n          var doc = new DOMParser().parseFromString(t, 'text\/html');\n          var err = doc.querySelector('.msg.err');\n          if (err) {\n            var m = err.textContent.trim();\n            if (\/something went wrong\/i.test(m)) { throw new Error(m); }\n            return { status: 'rejected', message: m };\n          }\n          if (\/you.re subscribed\/i.test(doc.body.textContent)) { return { status: 'ok' }; }\n          return { status: 'unknown' };\n        });\n      });\n  }\n  function wireForm(sub){\n    var form = qs(sub, '.msq-form'), msg = qs(sub, '.msq-msg');\n    qs(form, '.msq-no').addEventListener('click', function(e){\n      e.preventDefault();\n      sub.innerHTML = '<p class=\"msq-msg\">No problem. The Sunday refresh keeps this page current either way.<\/p>';\n      track('quiz_email', { result: 'declined' });\n    });\n    form.addEventListener('submit', function(e){\n      e.preventDefault();\n      var input = qs(form, 'input[name=email]'), btn = qs(form, '.msq-btn');\n      var email = input.value.trim(); input.value = email;\n      if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { msg.textContent = 'That email does not look right.'; return; }\n      btn.disabled = true; btn.textContent = 'Sending';\n      function reset(){ btn.disabled = false; btn.textContent = 'Email me the updates'; }\n      sendForm(form).then(function(r){\n        if (r.status === 'ok' || r.status === 'unknown') {\n          sub.innerHTML = '<p class=\"msq-msg\"><strong>Done.<\/strong> We will email you when the next article on ' + meta.category\n            + ' goes up and when this page changes. If a confirmation email arrives, click it.<\/p>';\n          track('quiz_email', { result: r.status });\n          if (r.status === 'ok') { track('generate_lead', { method: 'quiz' }); }\n        } else if (r.status === 'notlive') {\n          msg.textContent = 'Sign up is not switched on yet for this site. Nothing was stored.'; reset();\n          track('quiz_email', { result: 'notlive' });\n        } else {\n          msg.textContent = r.message || 'Please check the email address and try again.'; reset();\n          track('quiz_email', { result: 'rejected' });\n        }\n      }).catch(function(){\n        msg.textContent = 'Could not reach the sign up service just now. Nothing was stored.'; reset();\n        track('quiz_email', { result: 'error' });\n      });\n    });\n  }\n  function finish(container, mode, score, total, missed){\n    var result = qs(container, '.msq-result');\n    track('quiz_complete', { mode: mode, score: score, total: total });\n    var h;\n    if (mode === 'pre') {\n      h = '<h3>You knew ' + score + ' of ' + total + ' before reading.<\/h3>';\n      h += (score === total) ? '<p>All of them. Read on anyway; the sections below carry the detail behind each answer.<\/p>'\n                             : '<p>The rest is below. Jump straight to what you missed:<\/p>' + jumpList(missed);\n      try { sessionStorage.setItem('msq-pre-' + meta.slug, String(score)); } catch (e) {}\n    } else {\n      var pre = null;\n      try { pre = sessionStorage.getItem('msq-pre-' + meta.slug); } catch (e) {}\n      h = '<h3>You got ' + score + ' of ' + total + '.<\/h3>';\n      if (pre !== null) { h += '<p>Before reading you had ' + pre + ' of ' + total + '.<\/p>'; }\n      if (missed.length) { h += '<p>Worth a second look:<\/p>' + jumpList(missed); }\n      h += emailForm();\n    }\n    result.innerHTML = h; result.hidden = false;\n    if (mode !== 'pre') { wireForm(qs(result, '.msq-sub')); }\n    result.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n  }\n  function setup(container, mode){\n    var qEls = qsa(container, '.msq-q'), answered = 0, score = 0, missed = [];\n    qEls.forEach(function(q){\n      var answer = q.getAttribute('data-answer'), opts = qsa(q, '.msq-opt'), explain = qs(q, '.msq-explain');\n      q.removeAttribute('data-done'); explain.hidden = true; qs(explain, '.msq-verdict').textContent = '';\n      opts.forEach(function(b){ b.disabled = false; b.classList.remove('is-right', 'is-wrong'); });\n      opts.forEach(function(b){\n        b.addEventListener('click', function(){\n          if (q.getAttribute('data-done')) { return; }\n          q.setAttribute('data-done', '1');\n          var ok = b.getAttribute('data-opt') === answer;\n          opts.forEach(function(o){ o.disabled = true; if (o.getAttribute('data-opt') === answer) { o.classList.add('is-right'); } });\n          if (ok) { score += 1; } else { b.classList.add('is-wrong'); missed.push(q); }\n          qs(explain, '.msq-verdict').textContent = ok ? 'Right. ' : 'Not quite. ';\n          explain.hidden = false;\n          answered += 1;\n          track('quiz_answer', { mode: mode, question: q.getAttribute('data-q'), correct: ok ? 1 : 0 });\n          if (answered === qEls.length) { finish(container, mode, score, qEls.length, missed); }\n        });\n      });\n    });\n  }\n  var box = qs(root, '.msq-box');\n  setup(root, 'pre');\n  if (box) { var skipFirst = box.hasAttribute('data-default-open'); box.addEventListener('toggle', function(){ if (!box.open) { return; } if (skipFirst) { skipFirst = false; return; } track('quiz_open', { mode: 'pre' }); }); }\n  \/* The end block sits far below this script, so it does not exist yet while this runs\n     during parsing. A delegated listener finds it at click time. *\/\n  document.addEventListener('click', function(e){\n    var startBtn = (e.target && e.target.closest) ? e.target.closest('.msq-start-test') : null;\n    if (!startBtn) { return; }\n    var end = startBtn.closest('.msq-end');\n    if (!end) { return; }\n    var mount = qs(end, '.msq-mount');\n    var clone = qs(root, '.msq-body').cloneNode(true);\n    var intro = qs(clone, '.msq-intro');\n    if (intro) { intro.textContent = 'The same five questions, now that you have read the page.'; }\n    var res = qs(clone, '.msq-result'); if (res) { res.hidden = true; res.innerHTML = ''; }\n    mount.innerHTML = ''; mount.appendChild(clone);\n    setup(mount, 'test');\n    startBtn.hidden = true;\n    track('quiz_open', { mode: 'test' });\n    mount.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    var first = qs(mount, '.msq-opt'); if (first) { first.focus({ preventScroll: true }); }\n  });\n  \/* Shared tool behaviour: checklists remember their ticks on this device, and a chooser\n     shows the result for the option picked. Calculators carry their own small script. *\/\n  function initTools(){\n    qsa(document, '.msq-check').forEach(function(box){\n      var key = 'msq-check-' + meta.slug + '-' + (box.getAttribute('data-id') || 'x');\n      var boxes = qsa(box, 'input[type=checkbox]'), count = qs(box, '.msq-check-count');\n      var yes = qs(box, '.msq-verdict-yes'), no = qs(box, '.msq-verdict-no');\n      var saved = {};\n      try { saved = JSON.parse(localStorage.getItem(key) || '{}'); } catch (e) {}\n      boxes.forEach(function(cb, i){ if (saved[i]) { cb.checked = true; } });\n      function refresh(){\n        var n = boxes.filter(function(cb){ return cb.checked; }).length, state = {};\n        boxes.forEach(function(cb, i){ if (cb.checked) { state[i] = 1; } });\n        try { localStorage.setItem(key, JSON.stringify(state)); } catch (e) {}\n        if (count) { count.textContent = n + ' of ' + boxes.length + (box.getAttribute('data-verb') || ' done'); }\n        if (yes && no) { yes.hidden = n === 0; no.hidden = n !== 0; }\n      }\n      boxes.forEach(function(cb){ cb.addEventListener('change', function(){ refresh(); track('tool_check', { tool: box.getAttribute('data-id') }); }); });\n      refresh();\n    });\n    qsa(document, '.msq-choose').forEach(function(box){\n      var results = qsa(box, '.msq-choice-result');\n      qsa(box, 'input[type=radio]').forEach(function(r){\n        r.addEventListener('change', function(){\n          results.forEach(function(el){ el.hidden = el.getAttribute('data-for') !== r.value; });\n          track('tool_choose', { tool: box.getAttribute('data-id'), choice: r.value });\n        });\n      });\n    });\n  }\n  \/\/ read progress: how far down the article the reader has scrolled, fired once per quarter\n  (function(){\n    var art = root.closest('article') || root.parentNode, fired = {};\n    function check(){\n      var top = art.getBoundingClientRect().top + window.pageYOffset, h = art.offsetHeight || 1;\n      var seen = (window.pageYOffset + window.innerHeight - top) \/ h * 100;\n      [25, 50, 75, 100].forEach(function(m){ if (seen >= m && !fired[m]) { fired[m] = true; track('read_progress', { percent: m }); } });\n    }\n    window.addEventListener('scroll', check, { passive: true }); window.addEventListener('load', check);\n  })();\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTools); } else { initTools(); }\n})();<\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-is-the-safest-way-to-store-crypto-a-question-about-setup\">Why is the safest way to store crypto a question about setups, not products?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Search this and the first page hands you a credit bureau, a payment processor and a tax software company. All three answer \u201chardware wallet\u201d and move on, which is a bit like asking three dentists about your car and being told to buy tyres. The answer is correct and incomplete in the way that gets people robbed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A hardware wallet keeps a private key off an internet connected computer. That is the whole of what it does. It does not decide where the backup of that key lives, how many copies exist, who else can reach them, what happens if the house floods, or whether anybody can execute your estate. Those are the parts that fail, and they are all decisions rather than purchases. If the device itself is still the unclear bit, start with <a href=\"https:\/\/getbitcoin.guide\/articles\/what-is-a-cold-wallet\/\">what a cold wallet actually is<\/a> and <a href=\"https:\/\/getbitcoin.guide\/articles\/non-custodial-crypto-wallet\/\">who can move your coins on a non custodial wallet<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-are-you-actually-defending-against\">What are you actually defending against?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There are five threats here and they do not point in the same direction.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Somebody else reaching your key: malware, a phishing page, a leaked buyer list, or a person with access to your home.<\/li>\n\n\n\n<li>You losing your own key: fire, flood, a house move, a forgotten passphrase, a bin.<\/li>\n\n\n\n<li>A third party failing while holding your coins, which is the exchange case.<\/li>\n\n\n\n<li>Coercion, where somebody knows you hold and asks you in person.<\/li>\n\n\n\n<li>Your death or incapacity, where the coins outlive the instructions.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the awkward part. Defending harder against theft usually makes loss more likely, and the reverse. Three copies of a phrase in three cities is excellent against fire and worse against burglary. A passphrase only you know is excellent against a found backup and unforgiving of your own memory. No arrangement wins on all five, which is why this question has no product shaped answer.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/physical-backup-safest-way-to-store-crypto.jpg\" alt=\"A metal recovery sheet kept inside a lockbox, illustrating the safest way to store crypto backups.\" class=\"wp-image-232\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/physical-backup-safest-way-to-store-crypto.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/physical-backup-safest-way-to-store-crypto-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/physical-backup-safest-way-to-store-crypto-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/physical-backup-safest-way-to-store-crypto-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-element-caption\">Physical security measures protect your offline backups from fire, water, and theft.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-has-each-storage-arrangement-already-failed\">Where has each storage arrangement already failed?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">So here is the table the ranking pages will not run. One row per arrangement, each with a documented case of that specific failure, dated, with a source you can open. Star ratings are cheap. Court judgments and regulator reports are not.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Arrangement<\/th><th>What it genuinely defends<\/th><th>Where it fails<\/th><th>Documented case<\/th><\/tr><\/thead><tbody><tr><td>Coins left on an exchange<\/td><td>Your own mistakes: no phrase to lose, no backup to burn<\/td><td>The custodian itself, and you find out last<\/td><td>QuadrigaCX. The <a href=\"https:\/\/www.osc.ca\/quadrigacxreport\/\" target=\"_blank\" rel=\"noopener\">Ontario Securities Commission review published in June 2020<\/a> found roughly 76,000 clients owed about 215 million dollars, and that the chief executive was the only person with access to the cold wallet keys. The <a href=\"https:\/\/www.sec.gov\/newsroom\/press-releases\/2022-219\" target=\"_blank\" rel=\"noopener\">SEC charged FTX founder Samuel Bankman-Fried on 13 December 2022<\/a> over customer funds diverted to a private trading firm.<\/td><\/tr><tr><td>Hardware wallet, phrase saved in a password manager or cloud note<\/td><td>Malware on your laptop, a hostile website, a bad USB cable<\/td><td>The moment that service is breached, offline stops being true<\/td><td>The 2022 LastPass breaches. A United States civil forfeiture complaint <a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/us-seizes-23-million-in-crypto-stolen-via-password-manager-breach\/\" target=\"_blank\" rel=\"noopener\">reported in March 2025<\/a> tied a 150 million dollar theft in January 2024 to seed phrases kept in a password manager, with about 23.6 million dollars seized back. Investigators found no sign the victim\u2019s own devices were hacked.<\/td><\/tr><tr><td>Hardware wallet, one metal backup, one location<\/td><td>Online attackers, typos, and most of what people worry about<\/td><td>Fire, flood, a house move, a clear out, a bin lorry<\/td><td><a href=\"https:\/\/caselaw.nationalarchives.gov.uk\/ewhc\/ch\/2025\/22\" target=\"_blank\" rel=\"noopener\">Howells v Newport City Council [2025] EWHC 22 (Ch)<\/a>, judgment 9 January 2025. A drive holding the key to roughly 8,000 bitcoin went to landfill in August 2013 and the High Court held that ownership passed to the council on deposit.<\/td><\/tr><tr><td>Phrase plus a passphrase, the extra word nobody writes down<\/td><td>Anyone who finds the written phrase and nothing else<\/td><td>Your memory, and silent typos that open a different empty wallet<\/td><td>No incident needed. <a href=\"https:\/\/trezor.io\/learn\/a\/passphrases-and-hidden-wallets\" target=\"_blank\" rel=\"noopener\">Trezor\u2019s own documentation<\/a> states that passphrases cannot be changed, removed or recovered, and that a mistyped passphrase simply produces a new wallet.<\/td><\/tr><tr><td>Multisig, keys held in separate places<\/td><td>Theft of any one key, and loss of any one backup<\/td><td>Quorum, coordination, and anyone who has to inherit it<\/td><td>The Parity wallet freeze of November 2017, in which <a href=\"https:\/\/www.parity.io\/blog\/parity-technologies-multi-sig-wallet-issue-update\/\" target=\"_blank\" rel=\"noopener\">587 wallets holding 513,774.16 ether<\/a> became permanently inaccessible. That was an Ethereum smart contract multisig rather than a Bitcoin one, so the mechanism differs, but the shape does not: nothing was stolen, access simply stopped existing.<\/td><\/tr><tr><td>Any of the above, bought under your real name and home address<\/td><td>Everything above. The keys were never the leak<\/td><td>The customer list, which turns into post and phone calls<\/td><td>Ledger\u2019s <a href=\"https:\/\/support.ledger.com\/article\/Global-e-Incident-to-Order-Data---January-2026\" target=\"_blank\" rel=\"noopener\">Global-e order data incident, disclosed in January 2026<\/a>, exposed customer names, postal addresses, emails and phone numbers held by a commerce partner. No phrase, no device secret, just a list of people known to own a wallet.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two things stand out. Not one of those failures was a broken chip, which is where product reviews spend their word count. And the custodial row is the only one where somebody else made the mistake, which is both the honest case for self custody and the entire bill that comes with it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/safest-way-to-store-crypto-chart.png\" alt=\"Bar chart showing QuadrigaCX debts, LastPass theft, and LastPass recovery in millions of dollars.\" class=\"wp-image-514\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/safest-way-to-store-crypto-chart.png 1600w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/safest-way-to-store-crypto-chart-300x169.png 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/safest-way-to-store-crypto-chart-1024x576.png 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/safest-way-to-store-crypto-chart-768x432.png 768w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/safest-way-to-store-crypto-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">Data from the Ontario Securities Commission and US civil forfeiture records.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-do-people-who-moved-to-self-custody-actually-report\">What do people who moved to self custody actually report?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Testimony, not evidence. I read six individual public reviews across Trustpilot pages for two wallet vendors and one forum thread, all dated and linked below. Nobody audited these accounts, and the sample leans hard one way, because people who lose money write reviews and people whose steel plate has sat in a drawer for four years do not.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A reviewer posting as MB from Denmark, <a href=\"https:\/\/www.trustpilot.com\/review\/www.ledger.com\" target=\"_blank\" rel=\"noopener\">on Trustpilot, 21 June 2026<\/a>, reported holding about 16 ether on a Ledger, waking to find five gone, and losing roughly half of the remainder while trying to move it. The cause is not established anywhere in the account. Ledger\u2019s public reply said it cannot freeze or reverse a blockchain transaction and pointed to on chain analysis and the police.<\/li>\n\n\n\n<li>Martin Stephenson from the United Kingdom, <a href=\"https:\/\/www.trustpilot.com\/review\/trezor.io\" target=\"_blank\" rel=\"noopener\">on Trustpilot, 23 April 2026<\/a>, described being approached by an outfit trading as safetrezor.io that claimed to recover lost crypto: a small fee up front, a dashboard showing recovered funds as pending, then a percentage demanded to release them. Trezor replied publicly that the entity has no affiliation with it.<\/li>\n\n\n\n<li>Austin G from Canada, <a href=\"https:\/\/www.trustpilot.com\/review\/trezor.io\" target=\"_blank\" rel=\"noopener\">on Trustpilot, 15 February 2025<\/a>, gave the account that cuts the other way: a working setup, seed words stamped into steel, split across plates in separate places, with a passphrase protected wallet held behind a low balance one. No drama, which is the point.<\/li>\n\n\n\n<li>A reviewer posting as Dante from the United States, <a href=\"https:\/\/www.trustpilot.com\/review\/www.ledger.com\" target=\"_blank\" rel=\"noopener\">on Trustpilot, updated 10 September 2026<\/a>, reported paying for a recovery subscription he could not cancel because support could not match the account. Any paid service attached to a wallet is one more party who can fail.<\/li>\n\n\n\n<li>A <a href=\"https:\/\/bitcointalk.org\/index.php?topic=5466612.0\" target=\"_blank\" rel=\"noopener\">bitcointalk thread opened on 13 September 2023<\/a> asked what happens to seed backups in a natural disaster, after flooding from a dam collapse. One poster in Ukraine described repeated fires and destruction of property from missile and drone attacks. The answers converged on geographic separation rather than better materials.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Where the accounts agree with official guidance: keep the phrase offline, act on nothing that contacts you first, put the copies in different places. Where they part company: the guidance quietly assumes you will recognise a scam when it arrives. These accounts describe fraud that turns up with letterhead, case numbers, a working dashboard and a support agent who is unfailingly polite. Recognition is not the reliable part of the plan.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"does-multisig-make-it-safer-or-just-differently-fragile\">Does multisig make it safer, or just differently fragile?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Multisig splits a wallet across several keys and needs a subset of them to sign, commonly two of three. It genuinely removes the single point of failure the rest of this article keeps circling: one stolen key moves nothing, one destroyed backup loses nothing. That is a real improvement and it is not marketing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What it adds is coordination. More keys, more places, software that has to keep working, and a setup somebody may one day have to reconstruct from a folder of notes. The failure it introduces is not theft, it is quorum. The Parity case in the table is the clearest public example of access ceasing to exist while every coin stayed exactly where it was. Multisig moves risk rather than deleting it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The passphrase carries the same trade in miniature. It defends a written phrase that somebody finds, and by the vendor\u2019s own documentation it is unrecoverable if you forget or mistype it. Treat it as a second secret needing its own backup, not a trick.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/confident-user-safest-way-to-store-crypto.jpg\" alt=\"A man holding a hardware wallet in his home office, implementing the safest way to store crypto.\" class=\"wp-image-233\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/confident-user-safest-way-to-store-crypto.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/confident-user-safest-way-to-store-crypto-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/confident-user-safest-way-to-store-crypto-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/confident-user-safest-way-to-store-crypto-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-element-caption\">Public accounts range from setups that worked to losses nobody could reverse.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-a-workable-arrangement-look-like-in-practice\">What does a workable arrangement look like in practice?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There is no ranking to give you here, because the answer changes with what you are defending against. What does transfer is the set of questions that separate a setup which survives contact with real life from one that merely looks tidy.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Can you restore from the backup alone, on a different device, without the original? If you have never tested it, you have a hypothesis rather than a backup.<\/li>\n\n\n\n<li>Does any single event, one fire, one burglary, one flood, reach every copy you have?<\/li>\n\n\n\n<li>Is any copy reachable from the internet? A password manager vault, a cloud note and a photo in a camera roll all count, and the LastPass row above is what that costs.<\/li>\n\n\n\n<li>Does somebody else know enough to act if you cannot, and not enough to act while you can? That is the inheritance problem, and it has no elegant answer.<\/li>\n\n\n\n<li>Would a letter with the right logo get you to type the phrase into a website?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">On that last one, written plainly. A recovery phrase belongs in exactly one kind of place: recorded on something physical, offline, somewhere you control. Never type it into a website, an app found through a search result, a support chat, or a page reached by scanning a QR code printed on a letter. Ledger\u2019s <a href=\"https:\/\/support.ledger.com\/article\/physical-mail-phishing-scam\" target=\"_blank\" rel=\"noopener\">physical mail phishing advisory, last updated 14 May 2026 and checked again on 23 September 2026<\/a>, states that it will never ask you to enter your Secret Recovery Phrase or scan a QR code to do so. No legitimate recovery service exists that needs the phrase, because a service that has the phrase has the coins. More on the mechanics in <a href=\"https:\/\/getbitcoin.guide\/articles\/your-recovery-phrase\/\">how a recovery phrase works<\/a>, and on the post those leaked address lists produce in <a href=\"https:\/\/getbitcoin.guide\/articles\/ledger-24-word-seed\/\">the letters arriving in the post to Ledger owners<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Which leaves the unglamorous conclusion. An untested three of five multisig is a worse arrangement than a single signature wallet with two metal backups in two buildings and a sealed note somebody trusted can open. Complexity you cannot operate is not security, it is a slower route to the same landfill. <a href=\"https:\/\/getbitcoin.guide\/articles\/self-custody-crypto\/\">what self custody actually takes on<\/a> goes further into what that responsibility involves.<\/p>\n\n\n\n<div class=\"msq-tool msq-check\" data-id=\"safest-way-to-store-crypto-checklist\" data-verb=\"verified\">\n<h3>Self Custody Setup Checklist<\/h3>\n<p>Use these practical verification steps to ensure your self custody arrangement survives real life scenarios.<\/p>\n<label><input type=\"checkbox\">Perform a restore test from the backup alone on a different device<\/label>\n<label><input type=\"checkbox\">Verify no single event (fire, burglary, flood) can reach all backup copies<\/label>\n<label><input type=\"checkbox\">Ensure no backup copy is stored in a cloud note, password manager, or photo roll<\/label>\n<label><input type=\"checkbox\">Establish an inheritance plan so trusted heirs can act if you cannot<\/label>\n<label><input type=\"checkbox\">Commit to never typing your recovery phrase into any website or application<\/label>\n<label><input type=\"checkbox\">Store the phrase on a physical, offline medium in a secure location you control<\/label>\n<p class=\"msq-check-count\"><\/p>\n<p class=\"msq-note\">Ticks are saved on this device only.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">Frequently asked questions<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-q-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is a hardware wallet enough on its own?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>It covers one threat well, which is a key sitting on an internet connected computer. It does nothing about where the recovery phrase is stored, how many copies exist, whether a single fire reaches all of them, or who can act if you cannot. Those are separate decisions and they are where the documented failures cluster.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Where does a recovery phrase never belong?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Anywhere reachable from the internet. That includes a password manager vault, a cloud note, a photo in a camera roll, an email to yourself and a chat message. The 2022 LastPass breaches produced a documented theft years later from phrases stored in vault notes, which is the clearest public demonstration that an encrypted online store is still an online store.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does a bank safe deposit box solve the backup problem?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>It solves fire and burglary at home and introduces access risk instead. Boxes can be sealed on death, frozen in a dispute, or unavailable when a branch closes. It works as one location in an arrangement that has more than one, and poorly as the only location.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What happens to self custodied coins when the owner dies?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Nothing automatic. There is no provider to contact and no process to trigger. Unless somebody can reach a backup and knows what it is, the coins stay where they are permanently. The QuadrigaCX review is the widely documented version of this failure at company scale, where the only person with the keys died.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Are paid crypto recovery services legitimate?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The ones that contact you first are not. A public account from April 2026 describes an outfit using a wallet vendor&#8217;s name, taking a fee up front, displaying recovered funds as pending and then demanding a percentage to release them, and the vendor confirmed publicly that it had no connection to them. Nobody can recover a lost phrase, because the phrase is the only copy of the key.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is multisig worth the complexity for a small holding?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>That depends entirely on which failure worries you and whether you would actually operate it. Multisig removes the single stolen key and the single destroyed backup, and adds coordination, more software and a setup somebody may have to inherit. An arrangement you cannot confidently restore from is riskier than a simpler one you have tested.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"msq-end\" id=\"ms-quiz-end\">\n<p><strong>Finished the page?<\/strong> The same five questions from the top, to see what stuck.<\/p>\n<button type=\"button\" class=\"msq-btn msq-start-test\">Test Your Understanding of This Article<\/button>\n<div class=\"msq-mount\"><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>This article is educational and is not financial advice. Nothing here is a recommendation to buy, sell or hold anything. You are responsible for your own security decisions.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The safest way to store crypto is not a product you buy, it is an arrangement you can survive. Pick the threat you are actually defending against, then choose the setup that covers it. Most losses come from a copied recovery phrase, a single backup destroyed, or a custodian that failed, not from a cracked chip.<\/p>\n","protected":false},"author":1,"featured_media":231,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"Safest Way to Store Crypto: It Is a Setup, Not a Device","rank_math_description":"The safest way to store crypto depends on the threat you are defending against, not the device you bought. Here is where each arrangement has failed.","rank_math_focus_keyword":"safest way to store crypto","rank_math_canonical_url":"","rank_math_breadcrumb_title":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"","rank_math_pillar_content":"","rank_math_robots":[],"rank_math_advanced_robots":[]},"categories":[3],"tags":[],"class_list":["post-234","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-self-custody"],"_links":{"self":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/comments?post=234"}],"version-history":[{"count":5,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/234\/revisions"}],"predecessor-version":[{"id":521,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/234\/revisions\/521"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media\/231"}],"wp:attachment":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media?parent=234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/categories?post=234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/tags?post=234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}