{"id":124,"date":"2026-09-10T09:16:25","date_gmt":"2026-09-10T09:16:25","guid":{"rendered":"https:\/\/getbitcoin.guide\/articles\/?p=124"},"modified":"2026-10-18T09:28:25","modified_gmt":"2026-10-18T09:28:25","slug":"ledger-24-word-seed","status":"publish","type":"post","link":"https:\/\/getbitcoin.guide\/articles\/ledger-24-word-seed\/","title":{"rendered":"Ledger 24 Word Seed: Why 24, and What It Cannot Stop"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>A Ledger 24 word seed encodes 256 bits of entropy under the BIP39 standard, which is already beyond guessing. A 12 word phrase carries 128 bits and is also beyond guessing. Word count is not the thing protecting you. The losses that actually happen begin when someone reads, photographs or types those words.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"ledger-24-word-seed\" data-minutes=\"13\">\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\/ledger-24-word-seed\/#audio\",\"name\":\"Ledger 24 Word Seed: Why 24, and What It Cannot Stop, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 10 October 2026.\",\"contentUrl\":\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/ledger-24-word-seed-audio-202610102129.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT12M37S\",\"uploadDate\":\"2026-10-10\",\"inLanguage\":\"en-GB\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/getbitcoin.guide\/articles\/ledger-24-word-seed\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"Ledger 24 Word Seed: Why 24, and What It Cannot Stop\",\"startOffset\":0,\"endOffset\":54},{\"@type\":\"Clip\",\"name\":\"What does the Ledger 24 word seed actually encode?\",\"startOffset\":54,\"endOffset\":189,\"url\":\"https:\/\/getbitcoin.guide\/articles\/ledger-24-word-seed\/#what-does-the-ledger-24-word-seed-actually-encode\"},{\"@type\":\"Clip\",\"name\":\"Is a 12 word phrase actually weaker than 24?\",\"startOffset\":189,\"endOffset\":302,\"url\":\"https:\/\/getbitcoin.guide\/articles\/ledger-24-word-seed\/#is-a-12-word-phrase-actually-weaker-than-24\"},{\"@type\":\"Clip\",\"name\":\"Can Ledger read your 24 words?\",\"startOffset\":302,\"endOffset\":444,\"url\":\"https:\/\/getbitcoin.guide\/articles\/ledger-24-word-seed\/#can-ledger-read-your-24-words\"},{\"@type\":\"Clip\",\"name\":\"What do Ledger owners actually report about their 24 words?\",\"startOffset\":444,\"endOffset\":590,\"url\":\"https:\/\/getbitcoin.guide\/articles\/ledger-24-word-seed\/#what-do-ledger-owners-actually-report-about-their-24-words\"},{\"@type\":\"Clip\",\"name\":\"Why do fake Ledger letters keep arriving in the post?\",\"startOffset\":590,\"endOffset\":685,\"url\":\"https:\/\/getbitcoin.guide\/articles\/ledger-24-word-seed\/#why-do-fake-ledger-letters-keep-arriving-in-the-post\"},{\"@type\":\"Clip\",\"name\":\"What can you actually do with the 24 words?\",\"startOffset\":685,\"endOffset\":757,\"url\":\"https:\/\/getbitcoin.guide\/articles\/ledger-24-word-seed\/#what-can-you-actually-do-with-the-24-words\"}],\"contentSize\":\"5.3 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 13 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\/ledger-24-word-seed-audio-202610102129.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: Ledger 24 Word Seed: Why 24, and What It Cannot Stop\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">Ledger 24 Word Seed: Why 24, and What It Cannot Stop<\/a><\/li>\n<li data-start=\"54.22\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"54.22\" aria-label=\"Play from: What does the Ledger 24 word seed actually encode?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:54<\/span><a href=\"#what-does-the-ledger-24-word-seed-actually-encode\">What does the Ledger 24 word seed actually encode?<\/a><\/li>\n<li data-start=\"188.84\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"188.84\" aria-label=\"Play from: Is a 12 word phrase actually weaker than 24?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">3:09<\/span><a href=\"#is-a-12-word-phrase-actually-weaker-than-24\">Is a 12 word phrase actually weaker than 24?<\/a><\/li>\n<li data-start=\"301.82\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"301.82\" aria-label=\"Play from: Can Ledger read your 24 words?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">5:02<\/span><a href=\"#can-ledger-read-your-24-words\">Can Ledger read your 24 words?<\/a><\/li>\n<li data-start=\"443.76\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"443.76\" aria-label=\"Play from: What do Ledger owners actually report about their 24 words?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">7:24<\/span><a href=\"#what-do-ledger-owners-actually-report-about-their-24-words\">What do Ledger owners actually report about their 24 words?<\/a><\/li>\n<li data-start=\"590.02\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"590.02\" aria-label=\"Play from: Why do fake Ledger letters keep arriving in the post?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">9:50<\/span><a href=\"#why-do-fake-ledger-letters-keep-arriving-in-the-post\">Why do fake Ledger letters keep arriving in the post?<\/a><\/li>\n<li data-start=\"684.76\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"684.76\" aria-label=\"Play from: What can you actually do with the 24 words?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">11:25<\/span><a href=\"#what-can-you-actually-do-with-the-24-words\">What can you actually do with the 24 words?<\/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\",\"ledger24wordseedwhy24and\",40],[4.56,\"p\",\"aledger24wordseedencodes\",89],[12.4,\"p\",\"a12wordphrasecarries128b\",50],[17.12,\"p\",\"wordcountisnotthethingpr\",35],[19.8,\"p\",\"thelossesthatactuallyhap\",76],[24.72,\"p\",\"onthispageacomparisontab\",118],[33.88,\"p\",\"searchthistopicandthefir\",97],[40.96,\"p\",\"everybodyexplainingthe24\",83],[46.4,\"p\",\"hereistheneutralversionc\",96],[54.22,\"h\",\"whatdoestheledger24words\",41],[57.46,\"p\",\"thewordsarenotapassword\",23],[59.34,\"p\",\"theyareahumanreadablespe\",113],[67.1,\"p\",\"thatissetoutinbip39thebi\",113],[76.26,\"p\",\"bip39usesafixedlistof204\",30],[80.78,\"p\",\"twotothepowerofelevenis2\",57],[87.18,\"p\",\"thespecificationalsoappe\",162],[99.78,\"t\",\"128\",35],[106.9,\"t\",\"160\",35],[115.06,\"t\",\"192\",35],[124.1,\"t\",\"224\",35],[131.46,\"t\",\"256\",35],[139.82,\"p\",\"everyrowaboveistakenfrom\",61],[144.42,\"p\",\"twentyfourwordsissimplyt\",95],[154.66,\"p\",\"ledgersownbip39explainer\",109],[167.54,\"p\",\"ledgerssetupflowgenerate\",50],[171.82,\"p\",\"thedeviceswillhappilyres\",114],[180.1,\"p\",\"ifthevocabularyhereisnew\",111],[188.84,\"h\",\"isa12wordphraseactuallyw\",35],[192.08,\"p\",\"mathematicallyyesbyafact\",46],[196.8,\"p\",\"practicallythedifference\",137],[205.48,\"p\",\"startwith12words\",16],[207.56,\"p\",\"thatis128bitssothenumber\",92],[217.28,\"p\",\"nowhandanattackerabsurde\",119],[225.72,\"p\",\"thatistentothepowerof22g\",69],[231.4,\"p\",\"divide34timestentothe38b\",68],[239.16,\"p\",\"ayearisabout316millionse\",120],[248.84,\"p\",\"andthatignoresthecostper\",143],[265.72,\"p\",\"twentyfourwordsmultiplie\",68],[271.2,\"p\",\"thereisnounitfortheresul\",47],[274.56,\"p\",\"bothnumbersmeanthesameth\",85],[280.4,\"p\",\"theextratwelvewordsbuyhe\",99],[287.4,\"p\",\"theriskthatdoesexistsits\",104],[295.08,\"p\",\"thatisthesamereasonacold\",91],[301.82,\"h\",\"canledgerreadyour24words\",24],[304.34,\"p\",\"thisisthequestionunderne\",176],[319.14,\"t\",\"isledgerrecoverautomatic\",167],[335.62,\"t\",\"whatactuallyleavesthedev\",203],[352.14,\"t\",\"whoholdsthefragments\",168],[366.78,\"t\",\"whatdoesrestoringrequire\",171],[381.3,\"t\",\"whatdoesitcost\",151],[396.26,\"t\",\"willledgereveraskforthe2\",198],[413.38,\"p\",\"thehonestreadingandtheon\",169],[426.26,\"p\",\"plentyofownershadassumed\",49],[429.98,\"p\",\"itcanitisoffunlessyouswi\",91],[436.62,\"p\",\"ifyouwantthedevicecompar\",105],[443.76,\"h\",\"whatdoledgerownersactual\",49],[447.64,\"p\",\"guidancepagesallsaythesa\",34],[450.56,\"p\",\"whattheydonotcarryiswhat\",60],[455.28,\"p\",\"readingacrosstrustpilotr\",173],[466.4,\"p\",\"areviewerpostingasnickba\",147],[477.12,\"p\",\"twomoreon17and19august20\",116],[487.12,\"p\",\"allthreeleftthereviewbec\",119],[495.12,\"p\",\"theclearestaccountcamefr\",32],[497.28,\"p\",\"auserpostingasclodmodrac\",154],[508.24,\"p\",\"commentersspottedthegive\",122],[515.32,\"p\",\"thelikeliestrouteseveral\",75],[522.04,\"p\",\"themachinewaswiped\",18],[524.48,\"p\",\"nothingwaslostbecausethe\",45],[528.16,\"p\",\"thenthefearthatdidnothol\",27],[530.08,\"p\",\"apostfromaroundfebruary2\",244],[548.56,\"p\",\"theposteralsosaidnocoins\",32],[551.08,\"p\",\"thethreadreadsasawarning\",52],[554.8,\"p\",\"wheretheaccountsagreewit\",126],[564.24,\"p\",\"wheretheydivergeseveralo\",131],[575.48,\"p\",\"thoseareunverifiedclaims\",109],[583.56,\"p\",\"theyarereportedhereastes\",78],[590.02,\"h\",\"whydofakeledgerletterske\",43],[593.34,\"p\",\"becausetheaddressesarepu\",28],[595.42,\"p\",\"inledgersownaccountofthe\",221],[611.78,\"p\",\"thefullcontentsweredumpe\",47],[615.3,\"p\",\"nodevicesecretwasinvolve\",116],[623.58,\"p\",\"ithappenedagain\",15],[625.62,\"p\",\"injanuary2026ledgerconfi\",143],[638.26,\"p\",\"namespostaladdressesemai\",46],[642.14,\"p\",\"recoveryphrasespinsandpr\",97],[649.46,\"p\",\"thesameleakshowswhyapriv\",134],[658.74,\"p\",\"ledgersongoingphishingca\",214],[672.62,\"p\",\"ifaletterarrivessayingyo\",76],[678.02,\"p\",\"ledgerdoesnotsendletters\",81],[684.76,\"h\",\"whatcanyouactuallydowith\",34],[687.52,\"p\",\"thephraseisastandardnota\",36],[690.08,\"p\",\"anybip39compatiblewallet\",119],[699.24,\"p\",\"thatportabilityisthewhol\",62],[703.56,\"p\",\"italsocutsbothwaysandthi\",50],[707.76,\"p\",\"anyoneholdingthosewordsc\",109],[716.08,\"p\",\"nosupportdeskcanreversei\",60],[720.6,\"p\",\"thatisthetradethestandar\",111],[728.32,\"p\",\"bip39alsodefinesanoption\",124],[737.12,\"p\",\"ledgersupportsit\",16],[738.76,\"p\",\"forgettingitlosesthoseac\",87],[744.2,\"p\",\"aseparatesetofaccountsca\",178]];\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 comparison table of entropy bits, a summary of Ledger Recover specifications, and a checklist for securing your recovery phrase.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"ledger-24-word-seed\" 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=\"What does the Ledger 24 word seed actually encode?\" data-section=\"#what-does-the-ledger-24-word-seed-actually-encode\">\n<p class=\"msq-question\">1. How many bits of entropy does a standard Ledger 24-word seed phrase encode?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">128 bits<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">256 bits<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">512 bits<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>A standard 24-word phrase encodes 256 bits of entropy, as detailed in the <a href=\"https:\/\/github.com\/bitcoin\/bips\/blob\/master\/bip-0039.mediawiki\" target=\"_blank\" rel=\"noopener\">BIP-39<\/a> standard. <a class=\"msq-section\" href=\"#what-does-the-ledger-24-word-seed-actually-encode\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"a\" data-title=\"Is a 12 word phrase actually weaker than 24?\" data-section=\"#is-a-12-word-phrase-actually-weaker-than-24\">\n<p class=\"msq-question\">2. Why is a 12-word recovery phrase considered practically secure against guessing attacks?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">It would take roughly 500 million years on average to exhaust the search space under extreme computing assumptions<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">It relies on a rotating security key that updates every hour<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">It uses an automatic firewall that blocks guessing attempts after three tries<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Exhausting a 128-bit space (12 words) at a rate of ten to the power of 22 guesses per second would still take roughly 500 million years on average. <a class=\"msq-section\" href=\"#is-a-12-word-phrase-actually-weaker-than-24\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"b\" data-title=\"Can Ledger read your 24 words?\" data-section=\"#can-ledger-read-your-24-words\">\n<p class=\"msq-question\">3. Under what condition can the Ledger Recover service export encrypted fragments of your seed phrase?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Automatically during any scheduled firmware update<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Only if you explicitly activate it with your PIN and physical button presses<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Whenever the companion application connects to the internet<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>According to <a href=\"https:\/\/www.ledger.com\/academy\/what-is-ledger-recover\" target=\"_blank\" rel=\"noopener\">Ledger\u2019s own description of Ledger Recover<\/a>, the service is optional and must be activated with explicit consent on the device itself using your PIN. <a class=\"msq-section\" href=\"#can-ledger-read-your-24-words\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"a\" data-title=\"What do Ledger owners actually report about their 24 words?\" data-section=\"#what-do-ledger-owners-actually-report-about-their-24-words\">\n<p class=\"msq-question\">4. What did a user on Reddit report about an application that looked like Ledger Live?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">It asked for their 24 words, which commenters flagged as a scam<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">It automatically upgraded their wallet to 256-bit entropy<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">It recovered their lost coins without needing any backup<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>A Reddit user <a href=\"https:\/\/www.reddit.com\/r\/ledgerwallet\/comments\/1nt2b36\/ledgerlive_asked_for_my_24_word_seed_phrase_scam\/\" target=\"_blank\" rel=\"noopener\">described an application that looked like Ledger Live asking for the 24 words<\/a>, which was quickly identified as a scam. <a class=\"msq-section\" href=\"#what-do-ledger-owners-actually-report-about-their-24-words\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"c\" data-title=\"Why do fake Ledger letters keep arriving in the post?\" data-section=\"#why-do-fake-ledger-letters-keep-arriving-in-the-post\">\n<p class=\"msq-question\">5. How did scammers obtain the physical mailing addresses of Ledger customers?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">They guessed the addresses using a public dictionary attack<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">They extracted the data from public blockchain transaction records<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">They accessed customer data from historical e-commerce and partner breaches<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Customer names and mailing addresses were exposed during historical data breaches, as detailed in <a href=\"https:\/\/www.ledger.com\/addressing-the-july-2020-e-commerce-and-marketing-data-breach\" target=\"_blank\" rel=\"noopener\">Ledger\u2019s own account of the July 2020 e-commerce and marketing data breach<\/a>. <a class=\"msq-section\" href=\"#why-do-fake-ledger-letters-keep-arriving-in-the-post\">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<p class=\"wp-block-paragraph\">Search this topic and the first page is Ledger, Ledger, Ledger, a metal backup plate for sale and a paid recovery service. Everybody explaining the 24 words either made them or would like to sell you something for the panic. Here is the neutral version, checked on 10 September 2026 against the specification and Ledger&#8217;s own documentation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-the-ledger-24-word-seed-actually-encode\">What does the Ledger 24 word seed actually encode?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The words are not a password. They are a human readable spelling of one very large random number, and every private key your device will ever produce is derived from it. That is set out in <a href=\"https:\/\/github.com\/bitcoin\/bips\/blob\/master\/bip-0039.mediawiki\" target=\"_blank\" rel=\"noopener\">BIP-39<\/a>, the Bitcoin Improvement Proposal that defines the format, which Ledger follows and so does almost everyone else.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BIP-39 uses a fixed list of 2,048 words. Two to the power of eleven is 2,048, so each word carries exactly 11 bits. The specification also appends a checksum of ENT divided by 32 bits, which is why the word counts land where they do and why a mistyped word usually fails rather than quietly opening an empty wallet.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Entropy bits<\/th><th>Checksum bits<\/th><th>Total bits<\/th><th>Words<\/th><\/tr><\/thead><tbody><tr><td>128<\/td><td>4<\/td><td>132<\/td><td>12<\/td><\/tr><tr><td>160<\/td><td>5<\/td><td>165<\/td><td>15<\/td><\/tr><tr><td>192<\/td><td>6<\/td><td>198<\/td><td>18<\/td><\/tr><tr><td>224<\/td><td>7<\/td><td>231<\/td><td>21<\/td><\/tr><tr><td>256<\/td><td>8<\/td><td>264<\/td><td>24<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Every row above is taken from the table in <a href=\"https:\/\/github.com\/bitcoin\/bips\/blob\/master\/bip-0039.mediawiki\" target=\"_blank\" rel=\"noopener\">the BIP-39 specification itself<\/a>. Twenty four words is simply the top row: 256 bits of entropy, 8 bits of checksum, 264 bits total, divided by 11 bits a word. Ledger&#8217;s own <a href=\"https:\/\/www.ledger.com\/academy\/bip-39-the-low-key-guardian-of-your-crypto-freedom\" target=\"_blank\" rel=\"noopener\">BIP-39 explainer<\/a>, updated on 14 April 2026, puts it the same way, that 128 bits of entropy gives 12 words and 256 bits gives 24.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ledger&#8217;s setup flow generates 24 and offers no 12 word option. The devices will happily restore a 12, 18 or 24 word phrase you bring from elsewhere, which is worth knowing if you are moving a wallet across. If the vocabulary here is new, <a href=\"https:\/\/getbitcoin.guide\/articles\/your-recovery-phrase\/\">the wider guide to what a recovery phrase is and how people lose it<\/a> covers the ground this article assumes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"627\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-2.jpg\" alt=\"Woman turning pages of a dictionary, echoing the 2,048 word list behind a Ledger 24 word seed\" class=\"wp-image-122\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-2.jpg 1200w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-2-300x157.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-2-1024x535.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-2-768x401.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><figcaption class=\"wp-block-image__caption\">BIP-39 draws every word from a fixed list of 2,048.<\/figcaption><\/figure>\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\/ledger-24-word-seed-chart.png\" alt=\"Bar chart showing word counts for different levels of entropy\" class=\"wp-image-546\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/ledger-24-word-seed-chart.png 1600w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/ledger-24-word-seed-chart-300x169.png 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/ledger-24-word-seed-chart-1024x576.png 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/ledger-24-word-seed-chart-768x432.png 768w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/ledger-24-word-seed-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">Word counts based on the BIP-39 specification table<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"is-a-12-word-phrase-actually-weaker-than-24\">Is a 12 word phrase actually weaker than 24?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mathematically yes, by a factor of two to the power of 128. Practically the difference does not exist, and it is worth showing the arithmetic rather than asserting it, because this is the claim affiliate pages lean on hardest.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start with 12 words. That is 128 bits, so the number of possible phrases is two to the power of 128, which is about 3.4 followed by 38 zeros. Now hand an attacker absurd equipment: a machine testing one trillion phrases every second, and ten billion of those machines running together. That is ten to the power of 22 guesses a second, which is far past anything that exists.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Divide 3.4 times ten to the 38 by ten to the 22 and you get 3.4 times ten to the 16 seconds. A year is about 31.6 million seconds, so that is roughly one billion years to exhaust the space, or around 500 million years to expect a hit on average. And that ignores the cost per guess: BIP-39 runs the phrase through PBKDF2 with HMAC-SHA512 for 2,048 iterations, so every single attempt costs 2,048 hash rounds rather than one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Twenty four words multiplies that billion years by another two to the power of 128. There is no unit for the result and no point inventing one. Both numbers mean the same thing in practice: nobody is guessing your phrase, whichever length you hold. The extra twelve words buy headroom against a future nobody can describe, not protection against any attack seen today.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The risk that does exist sits outside the mathematics: a photograph in a cloud backup, a support chat, a website that looks right. That is the same reason <a href=\"https:\/\/getbitcoin.guide\/articles\/what-is-a-cold-wallet\/\">a cold wallet helps at all<\/a>, keeping the secret off any machine that talks to the internet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"can-ledger-read-your-24-words\">Can Ledger read your 24 words?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is the question underneath most searches, so here it is plainly, verified on 10 September 2026 against <a href=\"https:\/\/www.ledger.com\/academy\/what-is-ledger-recover\" target=\"_blank\" rel=\"noopener\">Ledger&#8217;s own description of Ledger Recover<\/a>, updated 9 April 2026, rather than against forum summaries of it.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>What people ask<\/th><th>What Ledger&#8217;s documentation says<\/th><th>Source and date<\/th><\/tr><\/thead><tbody><tr><td>Is Ledger Recover automatic?<\/td><td>No. It is optional and must be activated with explicit consent on the device itself, using the PIN<\/td><td>Ledger Academy, 9 April 2026<\/td><\/tr><tr><td>What actually leaves the device?<\/td><td>The entropy is duplicated, encrypted and split into three fragments inside the Secure Element, then sent over three separate channels<\/td><td>Ledger Academy, 9 April 2026<\/td><\/tr><tr><td>Who holds the fragments?<\/td><td>Coincover, Ledger and EscrowTech, in hardware security modules, no one company holding a whole backup<\/td><td>Ledger Academy, 9 April 2026<\/td><\/tr><tr><td>What does restoring require?<\/td><td>Two of the three fragments plus two independent identity checks, with ID and a selfie through Onfido<\/td><td>Ledger Academy, 9 April 2026<\/td><\/tr><tr><td>What does it cost?<\/td><td>Quoted at 9.99 dollars a month, cancellable, and limited to certain countries and devices<\/td><td>Ledger Academy, 9 April 2026<\/td><\/tr><tr><td>Will Ledger ever ask for the 24 words?<\/td><td>Never, on any channel. Ledger states the phrase should be entered nowhere except directly into the device<\/td><td>Ledger phishing page, checked 10 September 2026<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The honest reading, and the one the manufacturer pages do not phrase this way: a firmware path exists that can export an encrypted duplicate of your entropy, gated behind your PIN and a physical button press. Plenty of owners had assumed no such path could exist at all. It can, it is off unless you switch it on, and knowing that is more useful than either the marketing or the outrage. If you want the device comparison that follows from it, <a href=\"https:\/\/getbitcoin.guide\/articles\/trezor-vs-ledger\/\">the Trezor and Ledger comparison<\/a> takes the open source question head on.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-do-ledger-owners-actually-report-about-their-24-words\">What do Ledger owners actually report about their 24 words?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Guidance pages all say the same sentence. What they do not carry is what owners describe when something goes wrong. Reading across <a href=\"https:\/\/www.trustpilot.com\/review\/www.ledger.com\" target=\"_blank\" rel=\"noopener\">Trustpilot reviews of ledger.com<\/a> and threads in the r\/ledgerwallet subreddit, about twenty accounts in total, one pattern dominated and one popular fear did not survive contact with the detail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A reviewer posting as Nick Barnes on 8 July 2026 described physical mail carrying Ledger branding and a QR code, instructing him to apply post quantum cryptography to his wallet. Two more, on 17 and 19 August 2026, described receiving similar letters, checking them against the official site and finding them fraudulent. All three left the review because they had spotted it, which is a reporting bias worth naming: the people who scanned the code do not write reviews.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The clearest account came from Reddit. A user posting as clodmodracing in roughly September 2025 <a href=\"https:\/\/www.reddit.com\/r\/ledgerwallet\/comments\/1nt2b36\/ledgerlive_asked_for_my_24_word_seed_phrase_scam\/\" target=\"_blank\" rel=\"noopener\">described an application that looked like Ledger Live asking for the 24 words<\/a>, and posted screenshots before typing anything. Commenters spotted the giveaway immediately, a misspelling in the interface, and the poster believed the download had come from the official site. The likeliest route, several replies suggested, was a paid search result impersonating it. The machine was wiped. Nothing was lost, because the question was asked first.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then the fear that did not hold up. A post from around February 2026 claiming that <a href=\"https:\/\/www.reddit.com\/r\/ledgerwallet\/comments\/1rbfefj\/hackers_used_ledger_recover_and_got_my_seed_phrase\/\" target=\"_blank\" rel=\"noopener\">hackers had used Ledger Recover to take a seed phrase<\/a> drew a Ledger support reply and a wall of scepticism, on the grounds that Recover cannot be triggered by software alone: it needs the physical device, the PIN, a button press and a live identity check. The poster also said no coins were held. The thread reads as a warning and resolves as a misattribution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Where the accounts agree with the official guidance: the attack is social, it arrives by post, ad or fake app, and it ends the moment somebody types the words. Where they diverge: several one star reviewers, including accounts dated 22 June and 28 August 2026, insist their coins went while the phrase was never exposed. Those are unverified claims from one side of a dispute, and other explanations exist, including approving a malicious transaction. They are reported here as testimony, not as evidence, and they are not a finding about the device.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"627\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-3.jpg\" alt=\"Woman reading post at apartment mailboxes, where fake Ledger 24 word seed letters arrive\" class=\"wp-image-123\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-3.jpg 1200w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-3-300x157.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-3-1024x535.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/09\/ledger-24-word-seed-3-768x401.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><figcaption class=\"wp-block-image__caption\">The current campaign arrives by post, with a QR code.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-do-fake-ledger-letters-keep-arriving-in-the-post\">Why do fake Ledger letters keep arriving in the post?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Because the addresses are public. In <a href=\"https:\/\/www.ledger.com\/addressing-the-july-2020-e-commerce-and-marketing-data-breach\" target=\"_blank\" rel=\"noopener\">Ledger&#8217;s own account of the July 2020 e-commerce and marketing data breach<\/a>, an unauthorised party reached its marketing database, exposing around one million email addresses and roughly 272,000 detailed records carrying names, postal addresses and phone numbers. The full contents were dumped publicly in December 2020. No device secret was involved, and that was never the point: the product being stolen was a mailing list of people known to own crypto hardware.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It happened again. In January 2026 Ledger confirmed customer order data was exposed through Global-e, a cross border commerce partner, after <a href=\"https:\/\/www.theregister.com\/2026\/01\/06\/ledger_globale_breach\/\" target=\"_blank\" rel=\"noopener\">a breach reported by The Register on 6 January 2026<\/a>. Names, postal addresses, emails and phone numbers again. Recovery phrases, PINs and private keys were not involved, because they are not stored anywhere a shop could leak them. The same leak shows why a private wallet is not a private owner, a point we follow through the ledger itself in <a href=\"https:\/\/getbitcoin.guide\/articles\/anonymous-crypto-wallet\/\">what an anonymous crypto wallet cannot actually hide<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ledger&#8217;s <a href=\"https:\/\/www.ledger.com\/phishing-campaigns-status\" target=\"_blank\" rel=\"noopener\">ongoing phishing campaigns page<\/a> lists physical mail with QR codes among the live threats, alongside fake emails, fake apps and malicious calls, and states that the recovery phrase should never be entered anywhere other than directly into the device. If a letter arrives saying your keys must be upgraded before a deadline, that is the campaign. Ledger does not send letters, and no genuine security fix has ever required you to read out 24 words.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-can-you-actually-do-with-the-24-words\">What can you actually do with the 24 words?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The phrase is a standard, not a Ledger format. Any BIP-39 compatible wallet can rebuild the same accounts from the same words, so the hardware is replaceable and the vendor is not a dependency. That portability is the whole argument for <a href=\"https:\/\/getbitcoin.guide\/articles\/non-custodial-crypto-wallet\/\">holding a non custodial wallet<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It also cuts both ways, and this sentence is written straight. Anyone holding those words can rebuild your wallet from anywhere on earth without ever touching your device, your PIN or your email. No support desk can reverse it and no company holds a copy to restore from. That is the trade the standard makes, and it is why the only place the phrase belongs is offline and out of reach of any camera or keyboard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BIP-39 also defines an optional passphrase, sometimes called the 25th word, mixed into the derivation to produce an entirely separate set of accounts. Ledger supports it. Forgetting it loses those accounts permanently, so it deserves its own page rather than a paragraph here. That page now exists: our <a href=\"https:\/\/getbitcoin.guide\/articles\/wallet-passphrase\/\">wallet passphrase comparison<\/a> sets Ledger\u2019s second PIN option beside how Trezor, Coldcard, Jade and KeepKey handle the same word. A separate set of accounts can also turn up for a duller reason, a restoring app scanning different paths, which our guide to <a href=\"https:\/\/getbitcoin.guide\/articles\/multi-currency-wallet\/\">why a multi currency wallet restore can show a zero balance<\/a> works through with the path table.<\/p>\n\n\n\n<div class=\"msq-tool msq-check\" data-id=\"ledger-seed-security-checklist\" data-verb=\" verified\">\n<h3>Ledger Seed Security Checklist<\/h3>\n<p>Verify that your storage and handling of the 24-word seed phrase follow recommended security practices.<\/p>\n<label><input type=\"checkbox\">Write down the phrase directly from the physical device screen<\/label>\n<label><input type=\"checkbox\">Keep the physical backup completely offline and out of reach of cameras<\/label>\n<label><input type=\"checkbox\">Never type the words into any computer, phone, or application<\/label>\n<label><input type=\"checkbox\">Never enter the words to &#8216;upgrade&#8217; or &#8216;verify&#8217; your device<\/label>\n<label><input type=\"checkbox\">Ignore any physical letters or emails asking for your recovery phrase<\/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 \">Does a 24 word Ledger seed work on other wallets?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. It is a BIP-39 phrase, so any BIP-39 compatible wallet can derive the same accounts from the same words, subject to that wallet supporting the same derivation paths for the coins you hold.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can I change my Ledger 24 word seed to different words?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Not on an existing phrase. The usual route is to reset the device and let it generate a fresh 24 words, then move funds across, which means the old phrase and the new one are separate wallets.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is 12 words enough, or should I insist on 24?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Both 128 and 256 bits are past any realistic guessing attack, so the choice is not a security decision in practice. Ledger generates 24 and gives no option, and will restore 12, 18 or 24.<\/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 if one word of the 24 is wrong?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The checksum usually catches it and the device reports an invalid phrase rather than opening a different wallet. That is what the extra 8 bits in a 24 word phrase are for.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does Ledger keep a copy of my recovery phrase?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Not by default. Ledger Recover is an optional paid subscription that stores encrypted fragments with three companies, and per Ledger&#8217;s documentation it is activated only with explicit consent on the device.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">I got a letter about upgrading my Ledger for quantum computers. Is it real?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. Ledger lists physical mail with QR codes among its ongoing phishing campaigns and states it never asks for the recovery phrase. Never enter the 24 words anywhere except the device itself.<\/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>What 24 words encode under BIP-39, whether 12 is weaker, what Ledger Recover really does, and why fake letters keep arriving in the post.<\/p>\n","protected":false},"author":1,"featured_media":150,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"Ledger 24 Word Seed: Why 24, and What It Cannot Stop","rank_math_description":"A Ledger 24 word seed holds 256 bits of entropy, past any guessing attack. Checked against Ledger documentation, the real risk is being asked to type it.","rank_math_focus_keyword":"ledger 24 word seed","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-124","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\/124","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=124"}],"version-history":[{"count":6,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/124\/revisions"}],"predecessor-version":[{"id":661,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/124\/revisions\/661"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media\/150"}],"wp:attachment":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media?parent=124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/categories?post=124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/tags?post=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}