{"id":813,"date":"2026-11-01T11:37:58","date_gmt":"2026-11-01T11:37:58","guid":{"rendered":"https:\/\/getbitcoin.guide\/articles\/?p=813"},"modified":"2026-11-01T11:45:14","modified_gmt":"2026-11-01T11:45:14","slug":"bybit-wallet","status":"publish","type":"post","link":"https:\/\/getbitcoin.guide\/articles\/bybit-wallet\/","title":{"rendered":"Bybit Wallet: Who Holds the Keys, and What the Hack Took"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>There are two things called a Bybit wallet. Your exchange account is custodial, so Bybit holds the keys. The Seed Phrase Wallet in the app is self custody, and Bybit cannot recover it. The Cloud and Keyless wallets shut on 31 May 2025. The February 2025 hack hit Bybit\u2019s own Ethereum cold wallet, not customer phrases.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"bybit-wallet\" 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\/bybit-wallet\/#audio\",\"name\":\"Bybit Wallet: Who Holds the Keys, and What the Hack Took, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 1 November 2026.\",\"contentUrl\":\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/bybit-wallet-audio-202611011715.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT12M22S\",\"uploadDate\":\"2026-11-01\",\"inLanguage\":\"en-GB\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/getbitcoin.guide\/articles\/bybit-wallet\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"Bybit Wallet: Who Holds the Keys, and What the Hack Took\",\"startOffset\":0,\"endOffset\":62},{\"@type\":\"Clip\",\"name\":\"Which Bybit wallet are you actually using?\",\"startOffset\":62,\"endOffset\":207,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bybit-wallet\/#which-bybit-wallet-are-you-actually-using\"},{\"@type\":\"Clip\",\"name\":\"What happened to the Cloud and Keyless wallets?\",\"startOffset\":207,\"endOffset\":292,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bybit-wallet\/#what-happened-to-the-cloud-and-keyless-wallets\"},{\"@type\":\"Clip\",\"name\":\"What did the 2025 Bybit hack actually take?\",\"startOffset\":292,\"endOffset\":490,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bybit-wallet\/#what-did-the-2025-bybit-hack-actually-take\"},{\"@type\":\"Clip\",\"name\":\"Does the Bybit Seed Phrase Wallet hold bitcoin, and is its backup safe?\",\"startOffset\":490,\"endOffset\":553,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bybit-wallet\/#does-the-bybit-seed-phrase-wallet-hold-bitcoin-and-is-its-ba\"},{\"@type\":\"Clip\",\"name\":\"What do people report when moving coins off Bybit?\",\"startOffset\":553,\"endOffset\":671,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bybit-wallet\/#what-do-people-report-when-moving-coins-off-bybit\"},{\"@type\":\"Clip\",\"name\":\"How do you move coins from Bybit to keys you hold?\",\"startOffset\":671,\"endOffset\":742,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bybit-wallet\/#how-do-you-move-coins-from-bybit-to-keys-you-hold\"}],\"contentSize\":\"5.2 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\/11\/bybit-wallet-audio-202611011715.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: Bybit Wallet: Who Holds the Keys, and What the Hack Took\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">Bybit Wallet: Who Holds the Keys, and What the Hack Took<\/a><\/li>\n<li data-start=\"62.46\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"62.46\" aria-label=\"Play from: Which Bybit wallet are you actually using?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">1:02<\/span><a href=\"#which-bybit-wallet-are-you-actually-using\">Which Bybit wallet are you actually using?<\/a><\/li>\n<li data-start=\"206.56\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"206.56\" aria-label=\"Play from: What happened to the Cloud and Keyless wallets?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">3:27<\/span><a href=\"#what-happened-to-the-cloud-and-keyless-wallets\">What happened to the Cloud and Keyless wallets?<\/a><\/li>\n<li data-start=\"291.9\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"291.9\" aria-label=\"Play from: What did the 2025 Bybit hack actually take?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">4:52<\/span><a href=\"#what-did-the-2025-bybit-hack-actually-take\">What did the 2025 Bybit hack actually take?<\/a><\/li>\n<li data-start=\"489.72\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"489.72\" aria-label=\"Play from: Does the Bybit Seed Phrase Wallet hold bitcoin, and is its backup safe?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">8:10<\/span><a href=\"#does-the-bybit-seed-phrase-wallet-hold-bitcoin-and-is-its-ba\">Does the Bybit Seed Phrase Wallet hold bitcoin, and is its backup safe?<\/a><\/li>\n<li data-start=\"553.1\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"553.1\" aria-label=\"Play from: What do people report when moving coins off Bybit?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">9:13<\/span><a href=\"#what-do-people-report-when-moving-coins-off-bybit\">What do people report when moving coins off Bybit?<\/a><\/li>\n<li data-start=\"671.4\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"671.4\" aria-label=\"Play from: How do you move coins from Bybit to keys you hold?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">11:11<\/span><a href=\"#how-do-you-move-coins-from-bybit-to-keys-you-hold\">How do you move coins from Bybit to keys you hold?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 1 November 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\",\"bybitwalletwhoholdstheke\",44],[3.48,\"p\",\"therearetwothingscalleda\",35],[5.92,\"p\",\"yourexchangeaccountiscus\",49],[9.6,\"p\",\"theseedphrasewalletinthe\",63],[14.48,\"p\",\"thecloudandkeylesswallet\",40],[18.92,\"p\",\"thefebruary2025hackhitby\",67],[24.6,\"p\",\"onthispageeverybybitwall\",199],[41.44,\"p\",\"checkedon1november2026ag\",132],[53.16,\"p\",\"theonlyquestionhereisapr\",61],[57.96,\"p\",\"nothingbelowisaviewonbyb\",45],[62.46,\"h\",\"whichbybitwalletareyouac\",35],[65.02,\"p\",\"probablytheexchangeaccou\",57],[68.66,\"p\",\"whenyoudepositbitcointob\",103],[75.02,\"p\",\"thatiscustodyexactlylike\",73],[80.34,\"p\",\"theconfusioncomesfromthe\",37],[82.94,\"p\",\"insidethesameappsitsasep\",139],[92.46,\"p\",\"bybitsowncomparisonpagel\",60],[98.7,\"p\",\"fortheseedphrasewalletus\",80],[103.94,\"p\",\"forthecloudwalletathirdp\",59],[109.02,\"p\",\"thekeylesswalletsplitthe\",94],[116.78,\"p\",\"bybitratedthemhighlowand\",63],[121.14,\"t\",\"exchangeaccountfundingun\",106],[134.46,\"t\",\"bybitwalletseedphrasewal\",133],[150.3,\"t\",\"bybitwalletcloudwallet\",115],[166.82,\"t\",\"bybitwalletkeylesswallet\",139],[183.86,\"p\",\"ifyouarenotsurewhichoneh\",54],[187.74,\"p\",\"ifyouwereevershownalisto\",76],[193.42,\"p\",\"ifyouonlyeverloggedinwit\",62],[197.5,\"p\",\"thesamesplitrunsthroughb\",113],[206.56,\"h\",\"whathappenedtothecloudan\",39],[209.08,\"p\",\"theyaregone\",11],[210.64,\"p\",\"bybitsdiscontinuationfaq\",224],[235.48,\"p\",\"theseedphrasewalletairdr\",66],[240.52,\"p\",\"thefaqtoldholderstomovet\",257],[260.12,\"p\",\"thefaqsaysitisnotavailab\",41],[263.24,\"p\",\"andforanyonewhomissedthe\",136],[272.96,\"p\",\"thatlastlineisthewholele\",59],[276.8,\"p\",\"awalletmarketedasnoncust\",107],[284.36,\"p\",\"aswithzengosphraselesswa\",88],[291.9,\"h\",\"whatdidthe2025bybithacka\",35],[295.42,\"p\",\"bybitsowncoinsheldforits\",58],[300.14,\"p\",\"accordingtobybitsinciden\",175],[325.7,\"p\",\"thefbispublicnoticeof26f\",132],[340.66,\"p\",\"itaddsthatthethieveshada\",61],[344.66,\"p\",\"howithappenedmattersmore\",35],[348.06,\"p\",\"thesafeecosystemfoundati\",231],[364.82,\"p\",\"bybitssignersapprovedwha\",71],[369.26,\"p\",\"bybitstimelinequotesprel\",110],[376.54,\"t\",\"21feb20251413\",86],[387.42,\"t\",\"22feb2025\",79],[397.22,\"t\",\"24feb2025\",105],[409.38,\"t\",\"26feb2025\",79],[423.62,\"t\",\"28feb2025\",88],[432.78,\"t\",\"31may2025\",76],[443.18,\"p\",\"whatitdidnottouchnobodys\",34],[447.3,\"p\",\"aseedphrasewalletskeysne\",75],[452.74,\"p\",\"exchangecustomerswereexp\",102],[459.66,\"p\",\"bybitsayswithdrawalswere\",91],[469.1,\"p\",\"thosearebybitsfiguresweh\",52],[473.22,\"p\",\"theawkwardironyisthatthe\",138],[482.18,\"p\",\"credittobybitforkeepingi\",29],[484.9,\"p\",\"thenotyourkeyslecturelan\",67],[489.72,\"h\",\"doesthebybitseedphrasewa\",57],[493.92,\"p\",\"bybitsseedphrasewalletfa\",144],[505.56,\"p\",\"wecouldnotconfirmfrombyb\",115],[513.08,\"p\",\"thebackupistheparttoread\",29],[515.56,\"p\",\"bybitstatesitcannothelpf\",100],[523.04,\"p\",\"butthesamefaqsuggestsbac\",96],[531.32,\"p\",\"aphrasestoredinacloudacc\",78],[537.0,\"p\",\"aphrasewrittenonpaperors\",65],[542.32,\"p\",\"thecloudcopyisaconvenien\",60],[547.12,\"p\",\"howpeopleactuallyloseare\",77],[553.1,\"h\",\"whatdopeoplereportwhenmo\",41],[556.46,\"p\",\"weread23trustpilotreview\",161],[570.98,\"p\",\"thisistestimonynoteviden\",99],[577.54,\"p\",\"butthepatternwasunusuall\",35],[579.82,\"p\",\"mostdescribedthesamesequ\",28],[582.3,\"p\",\"asmallwithdrawaltoanouts\",108],[592.14,\"p\",\"thenthewholeaccountwasre\",32],[594.06,\"p\",\"onereviewerfromswitzerla\",111],[604.9,\"p\",\"onefromgermanysaida2201u\",84],[612.02,\"p\",\"severalwerestillwaitingw\",33],[614.38,\"p\",\"onredditaposterinrbybitc\",183],[629.78,\"p\",\"noteveryaccountholdsupad\",142],[641.62,\"p\",\"bybitsrepliesontrustpilo\",81],[647.7,\"p\",\"itswithdrawalfaqlastupda\",232],[667.3,\"p\",\"whatthefaqdoesnotmention\",46],[671.4,\"h\",\"howdoyoumovecoinsfrombyb\",39],[674.84,\"p\",\"firstsetupthedestination\",82],[680.48,\"p\",\"awalletwithnowrittenback\",52],[684.72,\"p\",\"secondexpectthetravelrul\",33],[687.08,\"p\",\"bybitstravelrulefaqlastu\",102],[696.72,\"p\",\"forapersonalwalletyouans\",67],[701.48,\"p\",\"itdoesnotaskforaphraseap\",69],[706.96,\"p\",\"thirdsendasmalltestamoun\",91],[713.84,\"p\",\"atestdoesnotavoidbybitsa\",113],[721.08,\"p\",\"itonlylimitshowmuchisint\",49],[724.8,\"p\",\"fourthifawithdrawalisrej\",62],[729.68,\"p\",\"accountfreezesattractfak\",73],[735.08,\"p\",\"anyonewhoasksforyourseed\",83]];\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: every Bybit wallet product in one table with who holds the keys and its status today, the 2025 hack dated from the FBI notice and Bybit&#8217;s own timeline, and what 23 Trustpilot reviews from September 2026 report about moving coins out.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"bybit-wallet\" data-category=\"wallets\" 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=\"Which Bybit wallet are you actually using?\" data-section=\"#which-bybit-wallet-are-you-actually-using\">\n<p class=\"msq-question\">1. According to Bybit&#8217;s own comparison page, who managed the private keys in the Cloud Wallet?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">The user, through a seed phrase<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Bybit, on the user&#8217;s behalf<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">A hardware wallet maker<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/Differences-Between-Seed-Phrase-Wallet-Keyless-Wallet-and-Cloud-Wallet\" target=\"_blank\" rel=\"noopener\">Bybit&#8217;s comparison page<\/a> describes the Cloud Wallet as a third party, Bybit, managing private keys on behalf of users, and rates its safety Low. <a class=\"msq-section\" href=\"#which-bybit-wallet-are-you-actually-using\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"c\" data-title=\"What happened to the Cloud and Keyless wallets?\" data-section=\"#what-happened-to-the-cloud-and-keyless-wallets\">\n<p class=\"msq-question\">2. On what date did Bybit shut its Cloud and Keyless wallets?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">21 February 2025<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">8 April 2025<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">31 May 2025<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Discontinuation-of-Restricted-Product-Offerings-on-Wallet\" target=\"_blank\" rel=\"noopener\">Bybit&#8217;s discontinuation FAQ<\/a> gives 31 May 2025 at 12:00 UTC. 8 April 2025 was when NFT Pro, the Inscription Marketplace and the IDO pages went offline. <a class=\"msq-section\" href=\"#what-happened-to-the-cloud-and-keyless-wallets\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"b\" data-title=\"What did the 2025 Bybit hack actually take?\" data-section=\"#what-did-the-2025-bybit-hack-actually-take\">\n<p class=\"msq-question\">3. What did the Safe Ecosystem Foundation say the attack came through?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">A bug in the Safe smart contracts<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">A compromised Safe{Wallet} developer machine<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Leaked customer seed phrases<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/safefoundation.org\/blog\/safe-ecosystem-foundation-statement\" target=\"_blank\" rel=\"noopener\">The Safe Ecosystem Foundation&#8217;s statement of 28 February 2025<\/a> blames a compromised developer machine that proposed a disguised transaction, and says reviewers found no vulnerability in the smart contracts. <a class=\"msq-section\" href=\"#what-did-the-2025-bybit-hack-actually-take\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"a\" data-title=\"Does the Bybit Seed Phrase Wallet hold bitcoin, and is its backup safe?\" data-section=\"#does-the-bybit-seed-phrase-wallet-hold-bitcoin-and-is-its-ba\">\n<p class=\"msq-question\">4. What does Bybit&#8217;s Seed Phrase Wallet FAQ say Bybit can do if you lose the phrase?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Nothing: it cannot help find the phrase or reset recovery passwords<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Restore it after an identity check<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Email you a copy it keeps on file<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Seed-Phrase-Wallet\" target=\"_blank\" rel=\"noopener\">Bybit&#8217;s Seed Phrase Wallet FAQ<\/a> says it cannot help find your seed phrase or reset recovery passwords, because it never holds them. <a class=\"msq-section\" href=\"#does-the-bybit-seed-phrase-wallet-hold-bitcoin-and-is-its-ba\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"b\" data-title=\"How do you move coins from Bybit to keys you hold?\" data-section=\"#how-do-you-move-coins-from-bybit-to-keys-you-hold\">\n<p class=\"msq-question\">5. What does Bybit&#8217;s Travel Rule FAQ ask when you withdraw to a personal wallet?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Your seed phrase, to prove ownership<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Whose wallet it is, confirmed with a tick box<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">A signed letter from a lawyer<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Travel-Rule\" target=\"_blank\" rel=\"noopener\">Bybit&#8217;s Travel Rule FAQ<\/a> asks whose wallet the address belongs to and has you tick a confirmation box. It never asks for a phrase or private key, and nothing honest does. <a class=\"msq-section\" href=\"#how-do-you-move-coins-from-bybit-to-keys-you-hold\">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\">Checked on 1 November 2026 against Bybit\u2019s own help centre, the FBI\u2019s public notice, the Safe Ecosystem Foundation\u2019s statement and one page of Trustpilot reviews. The only question here is a practical one: whose keys your coins sit behind. Nothing below is a view on Bybit as a place to keep money.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-bybit-wallet-are-you-actually-using\">Which Bybit wallet are you actually using?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Probably the exchange account, because that is what most people mean. When you deposit bitcoin to Bybit, the coins land in addresses Bybit controls and your balance becomes a line in Bybit\u2019s books. That is custody, exactly like the accounts in our piece on <a href=\"https:\/\/getbitcoin.guide\/articles\/exchange-wallets-coinbase-kraken-robinhood\/\">Coinbase, Kraken and Robinhood<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The confusion comes from the second product. Inside the same app sits a separate Web3 section, now branded Bybit Wallet, which used to offer three different wallets with three different answers to the key question. Bybit\u2019s own <a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/Differences-Between-Seed-Phrase-Wallet-Keyless-Wallet-and-Cloud-Wallet\" target=\"_blank\" rel=\"noopener\">comparison page, last updated 20 October 2025<\/a>, spells them out. For the Seed Phrase Wallet, \u201cusers maintain full control over their seed phrases and private keys\u201d. For the Cloud Wallet, a \u201cthird party (Bybit)\u201d managed the keys on your behalf. The Keyless Wallet split the key into two shares, one held by Bybit and one encrypted on your iCloud or Google Drive. Bybit rated them High, Low and Medium for safety, which is refreshingly blunt.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Bybit product<\/th><th>Who holds the keys<\/th><th>Status, 1 November 2026<\/th><th>Source<\/th><\/tr><\/thead><tbody><tr><td>Exchange account (Funding, Unified Trading)<\/td><td>Bybit<\/td><td>Open<\/td><td><a href=\"https:\/\/www.bybit.com\/en\/learn\/this-week-in-bybit\/bybit-security-incident-timeline\" target=\"_blank\" rel=\"noopener\">Bybit incident timeline<\/a><\/td><\/tr><tr><td>Bybit Wallet: Seed Phrase Wallet<\/td><td>You, through a recovery phrase<\/td><td>Open, still supported<\/td><td><a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Discontinuation-of-Restricted-Product-Offerings-on-Wallet\" target=\"_blank\" rel=\"noopener\">Bybit discontinuation FAQ<\/a><\/td><\/tr><tr><td>Bybit Wallet: Cloud Wallet<\/td><td>Bybit, on your behalf<\/td><td>Shut 31 May 2025<\/td><td><a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Discontinuation-of-Restricted-Product-Offerings-on-Wallet\" target=\"_blank\" rel=\"noopener\">Bybit discontinuation FAQ<\/a><\/td><\/tr><tr><td>Bybit Wallet: Keyless Wallet (MPC)<\/td><td>Split: one share Bybit, one share your cloud drive<\/td><td>Shut 31 May 2025<\/td><td><a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/Differences-Between-Seed-Phrase-Wallet-Keyless-Wallet-and-Cloud-Wallet\" target=\"_blank\" rel=\"noopener\">Bybit comparison page<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you are not sure which one holds your coins, there is a quick test. If you were ever shown a list of words and told to write them down, you have a Seed Phrase Wallet. If you only ever logged in with an email and a password, the keys are not yours. The same split runs through <a href=\"https:\/\/getbitcoin.guide\/articles\/wallet-for-binance\/\">Binance\u2019s exchange and Web3 wallet<\/a> and <a href=\"https:\/\/getbitcoin.guide\/articles\/bitget-wallet\/\">Bitget\u2019s family of wallets<\/a>; exchanges like to offer both under one logo.<\/p>\n\n\n\n<div class=\"msq-tool msq-choose\" data-id=\"bybit-wallet-keys\">\n<h3>Which Bybit wallet do you actually have?<\/h3>\n<p>Pick how you got in. The answer says who holds the keys and what recovery depends on.<\/p>\n<label><input type=\"radio\" name=\"bybit-wallet-keys\" value=\"exchange\">I log in to the Bybit exchange with an email and password<\/label>\n<label><input type=\"radio\" name=\"bybit-wallet-keys\" value=\"phrase\">I wrote down a list of recovery words when I set up Bybit Wallet<\/label>\n<label><input type=\"radio\" name=\"bybit-wallet-keys\" value=\"cloud\">I used the Cloud Wallet and never saw any words<\/label>\n<label><input type=\"radio\" name=\"bybit-wallet-keys\" value=\"keyless\">I used the Keyless Wallet with a cloud backup<\/label>\n<div class=\"msq-choice-result\" data-for=\"exchange\" hidden><strong>Bybit holds the keys.<\/strong> Your balance is an entry in Bybit&#8217;s books. Recovery depends on your login and on Bybit&#8217;s support. Moving coins to a wallet you set up is the only way to change who holds them.<\/div>\n<div class=\"msq-choice-result\" data-for=\"phrase\" hidden><strong>You hold the keys.<\/strong> Bybit says it cannot find the phrase or reset recovery passwords. Recovery depends entirely on that written phrase, so keep it offline and never type it into a website or chat.<\/div>\n<div class=\"msq-choice-result\" data-for=\"cloud\" hidden><strong>Bybit held the keys, and the product shut on 31 May 2025.<\/strong> Bybit&#8217;s FAQ says remaining assets may need KYC verification on Bybit to reach. Use only Bybit&#8217;s official app or website for this.<\/div>\n<div class=\"msq-choice-result\" data-for=\"keyless\" hidden><strong>The key was split between Bybit and your cloud drive.<\/strong> That product also shut on 31 May 2025. Bybit&#8217;s Private Key Emergency Escape converted it into a seed phrase wallet; if you never ran it, Bybit&#8217;s FAQ says KYC may be needed.<\/div>\n<p class=\"msq-note\">General information from Bybit&#8217;s own help pages, checked 1 November 2026. Not advice to buy, sell or hold anything, or to use or leave any exchange, and this tool never asks for a phrase.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-happened-to-the-cloud-and-keyless-wallets\">What happened to the Cloud and Keyless wallets?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">They are gone. Bybit\u2019s <a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Discontinuation-of-Restricted-Product-Offerings-on-Wallet\" target=\"_blank\" rel=\"noopener\">discontinuation FAQ, last updated 25 November 2025<\/a>, says \u201cCloud Wallet, Keyless Wallet, DexPro, NFT, and Swap &#038; Bridge services will be officially shut down\u201d on 31 May 2025 at 12:00 UTC, after NFT Pro, the Inscription Marketplace and the IDO pages went offline on 8 April 2025. The seed phrase wallet, airdrops, staking and the DApp browser were left running.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The FAQ told holders to move their assets before the cutoff and added: \u201cFailure to do so may result in asset loss.\u201d For Keyless Wallets there was a way out called Private Key Emergency Escape, which converts the MPC wallet into an ordinary seed phrase wallet from a banner in the app, confirmed with the device password. The FAQ says it is not available for Cloud Wallets. And for anyone who missed the date, it warns that users who have not completed the transfer \u201cmay be required to complete KYC verification on Bybit\u201d to reach what is left.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That last line is the whole lesson of the Keyless design in one sentence. A wallet marketed as non custodial ended with its users needing the company\u2019s permission, and an identity check, to finish leaving. As with <a href=\"https:\/\/getbitcoin.guide\/articles\/zengo-crypto-wallet\/\">Zengo\u2019s phraseless wallet<\/a>, a key share held by a company makes the company part of your recovery plan.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-did-the-2025-bybit-hack-actually-take\">What did the 2025 Bybit hack actually take?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bybit\u2019s own coins, held for its customers, from one Ethereum cold wallet. According to <a href=\"https:\/\/www.bybit.com\/en\/learn\/this-week-in-bybit\/bybit-security-incident-timeline\" target=\"_blank\" rel=\"noopener\">Bybit\u2019s incident timeline, dated 3 March 2025<\/a>, the exploit happened on 21 February 2025 at 14:13 UTC during a routine transfer, and took 401,347 ETH, 90,375 stETH, 15,000 cmETH and 8,000 mETH, about $1.46 billion. The <a href=\"https:\/\/www.ic3.gov\/PSA\/2025\/PSA250226\" target=\"_blank\" rel=\"noopener\">FBI\u2019s public notice of 26 February 2025<\/a>, alert I-022625-PSA, is titled \u201cNorth Korea Responsible for $1.5 Billion Bybit Hack\u201d and names the activity TraderTraitor. It adds that the thieves had already converted some of the haul to bitcoin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How it happened matters more than the size. The <a href=\"https:\/\/safefoundation.org\/blog\/safe-ecosystem-foundation-statement\" target=\"_blank\" rel=\"noopener\">Safe Ecosystem Foundation\u2019s statement of 28 February 2025<\/a> says the attack came through \u201ca compromised Safe{Wallet} developer machine\u201d that proposed a disguised malicious transaction, and that external forensic reviewers found no vulnerability in the Safe smart contracts. Bybit\u2019s signers approved what their screens showed them, and their screens were lying. Bybit\u2019s timeline quotes preliminary reports from Sygnia and Verichains that found \u201cno vulnerability\u201d in Bybit\u2019s own infrastructure.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Date (UTC)<\/th><th>What happened<\/th><th>Source<\/th><\/tr><\/thead><tbody><tr><td>21 Feb 2025, 14:13<\/td><td>ETH cold wallet drained during a routine transfer<\/td><td><a href=\"https:\/\/www.bybit.com\/en\/learn\/this-week-in-bybit\/bybit-security-incident-timeline\" target=\"_blank\" rel=\"noopener\">Bybit timeline<\/a><\/td><\/tr><tr><td>22 Feb 2025<\/td><td>Recovery bounty of 10% of stolen funds launched<\/td><td><a href=\"https:\/\/www.bybit.com\/en\/learn\/this-week-in-bybit\/bybit-security-incident-timeline\" target=\"_blank\" rel=\"noopener\">Bybit timeline<\/a><\/td><\/tr><tr><td>24 Feb 2025<\/td><td>Proof of reserves says the client ETH gap closed within 72 hours<\/td><td><a href=\"https:\/\/www.bybit.com\/en\/learn\/this-week-in-bybit\/bybit-security-incident-timeline\" target=\"_blank\" rel=\"noopener\">Bybit timeline, citing Hacken<\/a><\/td><\/tr><tr><td>26 Feb 2025<\/td><td>FBI attributes the theft to North Korea<\/td><td><a href=\"https:\/\/www.ic3.gov\/PSA\/2025\/PSA250226\" target=\"_blank\" rel=\"noopener\">FBI notice I-022625-PSA<\/a><\/td><\/tr><tr><td>28 Feb 2025<\/td><td>Safe blames a compromised developer machine<\/td><td><a href=\"https:\/\/safefoundation.org\/blog\/safe-ecosystem-foundation-statement\" target=\"_blank\" rel=\"noopener\">Safe Ecosystem Foundation<\/a><\/td><\/tr><tr><td>31 May 2025<\/td><td>Cloud and Keyless wallets shut<\/td><td><a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Discontinuation-of-Restricted-Product-Offerings-on-Wallet\" target=\"_blank\" rel=\"noopener\">Bybit discontinuation FAQ<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">What it did not touch: nobody\u2019s seed phrase. A Seed Phrase Wallet\u2019s keys never sat in that cold wallet, so they were not in the blast radius. Exchange customers were exposed in a different way, because their balances were Bybit\u2019s promise rather than their own keys. Bybit says withdrawals were never halted and that it processed 99.994% of over 350,000 requests within 10 hours. Those are Bybit\u2019s figures; we have not seen an independent count.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The awkward irony is that the hack is the best argument for self custody anyone has made this decade, and it was made against an exchange that sells a self custody wallet. Credit to Bybit for keeping it open. The not your keys lecture lands harder when the exchange is the one delivering 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\/11\/bybit-wallet-chart-1.png\" alt=\"Timeline of bybit wallet events from the February 2025 hack to the May 2025 wallet shutdown.\" class=\"wp-image-820\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/bybit-wallet-chart-1.png 1600w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/bybit-wallet-chart-1-300x169.png 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/bybit-wallet-chart-1-1024x576.png 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/bybit-wallet-chart-1-768x432.png 768w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/bybit-wallet-chart-1-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">Dates from the FBI notice I-022625-PSA, the Safe Ecosystem Foundation, Bybit&#8217;s incident timeline and its discontinuation FAQ, checked on 1 November 2026.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"does-the-bybit-seed-phrase-wallet-hold-bitcoin-and-is-its-ba\">Does the Bybit Seed Phrase Wallet hold bitcoin, and is its backup safe?<\/h2>\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\/11\/securing-a-bybit-wallet-seed-phrase.jpg\" alt=\"A person engraves a backup card to secure a seed phrase from a bybit wallet.\" class=\"wp-image-811\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/securing-a-bybit-wallet-seed-phrase.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/securing-a-bybit-wallet-seed-phrase-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/securing-a-bybit-wallet-seed-phrase-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/securing-a-bybit-wallet-seed-phrase-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Metal backup sheets offer durable protection for critical self-custody recovery phrases.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Bybit\u2019s <a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Seed-Phrase-Wallet\" target=\"_blank\" rel=\"noopener\">Seed Phrase Wallet FAQ, last updated 20 October 2025<\/a>, does not list its supported networks, and the comparison page sends readers to the wallet itself for the chain list. We could not confirm from Bybit\u2019s own pages which bitcoin address types it supports, so check inside the app before you send any bitcoin to it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The backup is the part to read twice. Bybit states it \u201ccannot help find your Seed Phrase or reset recovery passwords\u201d, which is correct for a self custody wallet. But the same FAQ suggests backing up the phrase \u201conline, on your Google\/iCloud drive, or offline, on a physical notebook\u201d. A phrase stored in a cloud account is only as safe as that account\u2019s password and recovery email. A phrase written on paper or steel and kept offline does not have that weakness. The cloud copy is a convenience Bybit offers; it is not the safer of the two. <a href=\"https:\/\/getbitcoin.guide\/articles\/your-recovery-phrase\/\">How people actually lose a recovery phrase<\/a> covers the cloud and screenshot routes in detail.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-do-people-report-when-moving-coins-off-bybit\">What do people report when moving coins off Bybit?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We read 23 Trustpilot reviews about withdrawals or account restrictions on <a href=\"https:\/\/www.trustpilot.com\/review\/bybit.com?page=8\" target=\"_blank\" rel=\"noopener\">one page of Bybit\u2019s reviews<\/a>, posted between 13 and 16 September 2026 and read on 1 November 2026, plus two Reddit threads. This is testimony, not evidence: review pages attract complaints, and none of these accounts can be checked from outside. But the pattern was unusually consistent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most described the same sequence. A small withdrawal to an outside address, often 15 to 60 USDT, was rejected because Bybit\u2019s system rated the destination as high risk. Then the whole account was restricted. One reviewer from Switzerland said a 57.48 USDT withdrawal was rejected and returned within 82 seconds, yet about $11,134 stayed frozen. One from Germany said a 2,201 USDT transfer to a verified wallet was cancelled and the account blocked. Several were still waiting weeks later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On Reddit, a poster in r\/ByBitCommunity said <a href=\"https:\/\/www.reddit.com\/r\/ByBitCommunity\/comments\/1woz5iu\/bybit_has_restricted_my_account_for_more_than_65\/\" target=\"_blank\" rel=\"noopener\">their account had been restricted since 20 July 2026<\/a> after a withdrawal to an address linked to the HTX exchange, with six support cases opened and no timeframe by late September. Not every account holds up: a December 2025 post in r\/btc about a frozen transfer to Trust Wallet was <a href=\"https:\/\/www.reddit.com\/r\/btc\/comments\/1po7qh7\/guys_bybit_just_locked_me_out_tried_sending_to\/\" target=\"_blank\" rel=\"noopener\">dismissed by commenters<\/a> as a disguised advert for paid address scanners.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bybit\u2019s replies on Trustpilot said long timelines are \u201cnot typical\u201d and passed cases to compliance. Its <a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Crypto-Withdrawal\" target=\"_blank\" rel=\"noopener\">withdrawal FAQ, last updated 12 April 2026<\/a>, agrees with the pattern more than it disagrees: a withdrawal \u201cmay be rejected if the address is deemed high risk\u201d, and your account \u201cmay be imposed a withdrawal restriction until additional verification documents are provided via email\u201d. What the FAQ does not mention is how long the wait can run.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-do-you-move-coins-from-bybit-to-keys-you-hold\">How do you move coins from Bybit to keys you hold?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">First, set up the destination wallet and write its recovery phrase on paper before anything is sent. A wallet with no written backup is lost the day the phone is lost.<\/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\/11\/transferring-bitcoin-from-bybit-wallet.jpg\" alt=\"A man feels relieved after successfully transferring his assets from a bybit wallet to self-custody.\" class=\"wp-image-812\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/transferring-bitcoin-from-bybit-wallet.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/transferring-bitcoin-from-bybit-wallet-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/transferring-bitcoin-from-bybit-wallet-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/11\/transferring-bitcoin-from-bybit-wallet-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Moving coins to keys you hold puts the backup, and the responsibility, in your hands.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Second, expect the Travel Rule question. Bybit\u2019s <a href=\"https:\/\/www.bybit.com\/en\/help-center\/article\/FAQ-Travel-Rule\" target=\"_blank\" rel=\"noopener\">Travel Rule FAQ, last updated 23 August 2026<\/a>, says verification is required for every crypto deposit and withdrawal. For a personal wallet you answer \u201cWhose wallet is this?\u201d and tick a confirmation box. It does not ask for a phrase, a private key or a signature, and nothing honest ever will.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Third, send a small test amount, check it arrived at the address your own wallet shows, and only then send the rest. A test does not avoid Bybit\u2019s address screening: in the accounts above, even small flagged withdrawals led to whole account restrictions. It only limits how much is in transit if the address is wrong.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fourth, if a withdrawal is rejected, use Bybit\u2019s official in app support only. Account freezes attract fake recovery agents in comment sections and direct messages. Anyone who asks for your seed phrase or private key to unlock a Bybit account is stealing, not helping.<\/p>\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 Bybit Wallet the same as my Bybit exchange account?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. The exchange account is custodial: Bybit holds the keys and your balance is an entry on its books. Bybit Wallet is a separate Web3 section of the app. Its surviving product, the Seed Phrase Wallet, gives you the keys through a recovery phrase that Bybit does not hold.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">I had a Bybit Cloud Wallet and never moved my coins. What now?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The Cloud Wallet shut on 31 May 2025 and had no escape feature, because Bybit held its keys. Bybit\u2019s discontinuation FAQ says users who did not complete the transfer may need to pass KYC verification on Bybit to reach their remaining assets. Contact Bybit through its official app or website only.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can Bybit recover my Seed Phrase Wallet if I lose the phrase?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. Bybit\u2019s own FAQ says it cannot help find your seed phrase or reset recovery passwords. If the phrase is lost and the device is gone, nobody can restore the wallet, whatever an online helper claims.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Was my seed phrase exposed in the 2025 Bybit hack?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. The theft drained one of Bybit\u2019s own Ethereum cold wallets after a Safe{Wallet} developer machine was compromised. Seed Phrase Wallet keys were never stored there. Exchange balances were affected only in that Bybit had to cover the loss, which it says it did within 72 hours.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Did North Korea really carry out the Bybit hack?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The FBI said so in a public notice on 26 February 2025, titled \u201cNorth Korea Responsible for $1.5 Billion Bybit Hack\u201d, naming the activity TraderTraitor. The Safe Ecosystem Foundation also attributed it to Lazarus, a North Korean state sponsored group.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Why did Bybit block a withdrawal to my own wallet?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Bybit\u2019s withdrawal FAQ says it screens destination addresses and may reject one it rates as high risk, and may restrict withdrawals until you send verification documents by email. Use the official support route, and never share a phrase or private key with anyone offering to unlock an account.<\/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 general information about wallet security and is not financial advice. Nothing here is a recommendation to buy, sell or hold anything, or to use or leave any exchange. Speak to a suitably qualified professional about your own situation, and remember that in self custody the security decisions are yours alone.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are two things called a Bybit wallet. Your exchange account is custodial, so Bybit holds the keys. The Seed Phrase Wallet in the app is self custody, and Bybit cannot recover it. The Cloud and Keyless wallets shut on 31 May 2025. The February 2025 hack hit Bybit\u2019s own Ethereum cold wallet, not customer phrases.<\/p>\n","protected":false},"author":1,"featured_media":810,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"Bybit Wallet: Who Holds the Keys, and What the Hack Took","rank_math_description":"A Bybit wallet is either an exchange account Bybit controls or a seed phrase wallet you control. What the 2025 hack took, and how to move coins out.","rank_math_focus_keyword":"bybit wallet","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":[2],"tags":[],"class_list":["post-813","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wallets"],"_links":{"self":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/813","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=813"}],"version-history":[{"count":6,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/813\/revisions"}],"predecessor-version":[{"id":826,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/813\/revisions\/826"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media\/810"}],"wp:attachment":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media?parent=813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/categories?post=813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/tags?post=813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}