{"id":776,"date":"2026-10-29T09:18:14","date_gmt":"2026-10-29T09:18:14","guid":{"rendered":"https:\/\/getbitcoin.guide\/articles\/?p=776"},"modified":"2026-10-29T09:22:07","modified_gmt":"2026-10-29T09:22:07","slug":"rainbow-wallet-crypto","status":"publish","type":"post","link":"https:\/\/getbitcoin.guide\/articles\/rainbow-wallet-crypto\/","title":{"rendered":"Rainbow Wallet Crypto: What the Friendly App Leaves to You"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>The Rainbow wallet crypto app is self custody for Ethereum and two dozen compatible networks, and it does not hold bitcoin at all. Your keys live on your phone, backed up by a password protected iCloud or Google Drive file and by a 12 word secret phrase. Rainbow cannot recover either one if you lose it.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"rainbow-wallet-crypto\" data-minutes=\"10\">\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\/rainbow-wallet-crypto\/#audio\",\"name\":\"Rainbow Wallet Crypto: What the Friendly App Leaves to You, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 29 October 2026.\",\"contentUrl\":\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/rainbow-wallet-crypto-audio-202610291452.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT10M1S\",\"uploadDate\":\"2026-10-29\",\"inLanguage\":\"en-GB\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/getbitcoin.guide\/articles\/rainbow-wallet-crypto\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"Rainbow Wallet Crypto: What the Friendly App Leaves to You\",\"startOffset\":0,\"endOffset\":61},{\"@type\":\"Clip\",\"name\":\"Does Rainbow Wallet hold bitcoin at all?\",\"startOffset\":61,\"endOffset\":186,\"url\":\"https:\/\/getbitcoin.guide\/articles\/rainbow-wallet-crypto\/#does-rainbow-wallet-hold-bitcoin-at-all\"},{\"@type\":\"Clip\",\"name\":\"Where does Rainbow keep your keys and your backup?\",\"startOffset\":186,\"endOffset\":292,\"url\":\"https:\/\/getbitcoin.guide\/articles\/rainbow-wallet-crypto\/#where-does-rainbow-keep-your-keys-and-your-backup\"},{\"@type\":\"Clip\",\"name\":\"What happens if you forget the Rainbow backup password?\",\"startOffset\":292,\"endOffset\":369,\"url\":\"https:\/\/getbitcoin.guide\/articles\/rainbow-wallet-crypto\/#what-happens-if-you-forget-the-rainbow-backup-password\"},{\"@type\":\"Clip\",\"name\":\"Will a Rainbow secret phrase restore in another wallet?\",\"startOffset\":369,\"endOffset\":458,\"url\":\"https:\/\/getbitcoin.guide\/articles\/rainbow-wallet-crypto\/#will-a-rainbow-secret-phrase-restore-in-another-wallet\"},{\"@type\":\"Clip\",\"name\":\"What has gone wrong with Rainbow backups, according to its own code?\",\"startOffset\":458,\"endOffset\":543,\"url\":\"https:\/\/getbitcoin.guide\/articles\/rainbow-wallet-crypto\/#what-has-gone-wrong-with-rainbow-backups-according-to-its-ow\"},{\"@type\":\"Clip\",\"name\":\"Do the Rainbow points and RNBW token change any of this?\",\"startOffset\":543,\"endOffset\":601,\"url\":\"https:\/\/getbitcoin.guide\/articles\/rainbow-wallet-crypto\/#do-the-rainbow-points-and-rnbw-token-change-any-of-this\"}],\"contentSize\":\"4.2 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 10 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\/rainbow-wallet-crypto-audio-202610291452.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: Rainbow Wallet Crypto: What the Friendly App Leaves to You\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">Rainbow Wallet Crypto: What the Friendly App Leaves to You<\/a><\/li>\n<li data-start=\"60.58\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"60.58\" aria-label=\"Play from: Does Rainbow Wallet hold bitcoin at all?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">1:01<\/span><a href=\"#does-rainbow-wallet-hold-bitcoin-at-all\">Does Rainbow Wallet hold bitcoin at all?<\/a><\/li>\n<li data-start=\"185.72\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"185.72\" aria-label=\"Play from: Where does Rainbow keep your keys and your backup?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">3:06<\/span><a href=\"#where-does-rainbow-keep-your-keys-and-your-backup\">Where does Rainbow keep your keys and your backup?<\/a><\/li>\n<li data-start=\"291.94\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"291.94\" aria-label=\"Play from: What happens if you forget the Rainbow backup password?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">4:52<\/span><a href=\"#what-happens-if-you-forget-the-rainbow-backup-password\">What happens if you forget the Rainbow backup password?<\/a><\/li>\n<li data-start=\"369.44\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"369.44\" aria-label=\"Play from: Will a Rainbow secret phrase restore in another wallet?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">6:09<\/span><a href=\"#will-a-rainbow-secret-phrase-restore-in-another-wallet\">Will a Rainbow secret phrase restore in another wallet?<\/a><\/li>\n<li data-start=\"458.34\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"458.34\" aria-label=\"Play from: What has gone wrong with Rainbow backups, according to its own code?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">7:38<\/span><a href=\"#what-has-gone-wrong-with-rainbow-backups-according-to-its-ow\">What has gone wrong with Rainbow backups, according to its own code?<\/a><\/li>\n<li data-start=\"543.44\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"543.44\" aria-label=\"Play from: Do the Rainbow points and RNBW token change any of this?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">9:03<\/span><a href=\"#do-the-rainbow-points-and-rnbw-token-change-any-of-this\">Do the Rainbow points and RNBW token change any of this?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 29 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\",\"rainbowwalletcryptowhatt\",48],[3.68,\"p\",\"therainbowwalletcryptoap\",106],[10.8,\"p\",\"yourkeysliveonyourphoneb\",98],[18.6,\"p\",\"rainbowcannotrecovereith\",40],[21.56,\"p\",\"onthispagewhatrainbowsow\",151],[32.88,\"p\",\"checkedon29october2026ag\",100],[42.08,\"p\",\"rainbowisthewalletwithth\",122],[49.88,\"p\",\"itdoesfeelnice\",14],[51.24,\"p\",\"thispageisaboutthetwothi\",114],[60.58,\"h\",\"doesrainbowwalletholdbit\",33],[62.82,\"p\",\"notheappstorelistsitasra\",63],[68.38,\"p\",\"rainbowssupportednetwork\",128],[81.38,\"p\",\"bitcoinisnotamongthemand\",145],[90.7,\"p\",\"thatmatterstothissitesre\",87],[95.66,\"p\",\"arainbowaddressstartswit\",27],[98.5,\"p\",\"abitcoinaddressstartswit\",116],[108.34,\"p\",\"whatrainbowcanshowyouisa\",66],[112.86,\"p\",\"thattokenisissuedbyacomp\",141],[121.58,\"p\",\"ifbitcoiniswhatyouholdra\",133],[130.46,\"t\",\"addressformat\",71],[139.86,\"t\",\"bitcoinonitsownnetwork\",64],[146.38,\"t\",\"phrasestandard\",79],[157.22,\"t\",\"derivationpath\",92],[176.22,\"t\",\"cloudbackup\",87],[185.72,\"h\",\"wheredoesrainbowkeepyour\",41],[188.2,\"p\",\"onyourdevice\",12],[190.04,\"p\",\"rainbowdescribesitselfas\",70],[195.36,\"p\",\"itspageonexportingthesec\",127],[203.92,\"p\",\"thephraseisthewalletthea\",45],[207.92,\"p\",\"rainbowofferstwobackupsa\",45],[211.24,\"p\",\"thefirstisthecloudbackup\",24],[213.0,\"p\",\"itsbackuppagesaysyoucanb\",132],[222.24,\"p\",\"oniphonethatfilegoestoic\",84],[229.12,\"p\",\"thefileisprotectedbyabac\",69],[233.64,\"p\",\"thesecondisthemanualback\",99],[241.4,\"p\",\"thesamebackuppagesaysiti\",138],[251.36,\"p\",\"thebrowserextensionsback\",52],[255.68,\"p\",\"eachwalletgrouphasitsown\",68],[260.0,\"t\",\"cloudfileonly\",110],[268.96,\"t\",\"writtenphraseonly\",124],[280.52,\"t\",\"bothkeptapart\",110],[291.94,\"h\",\"whathappensifyouforgetth\",46],[294.94,\"p\",\"thecloudfilebecomesveryh\",53],[299.22,\"p\",\"rainbowsrestoreguideasks\",89],[305.06,\"p\",\"itthenexplainsaquirkthat\",177],[317.22,\"p\",\"itsadviceistorestoreanol\",90],[323.7,\"p\",\"putsimplyifyouhavechange\",117],[332.06,\"p\",\"thewrittenphrasedoesnoth\",72],[337.34,\"p\",\"therestoreguidealsosaysr\",157],[347.5,\"p\",\"writedownanyphraseyoucan\",71],[352.78,\"p\",\"rainbowssupportteamwilln\",78],[358.42,\"p\",\"anyonewhomessagesyouoffe\",73],[363.98,\"p\",\"nogenuinesupportprocessf\",59],[369.44,\"h\",\"willarainbowsecretphrase\",46],[372.64,\"p\",\"yesforitsethereumaccount\",73],[378.0,\"p\",\"rainbowisopensourceunder\",224],[400.72,\"p\",\"thephraseitselfcomesfrom\",86],[408.44,\"p\",\"soarainbowphrasetypedint\",89],[414.6,\"p\",\"accountsthatliveonaledge\",134],[423.88,\"p\",\"andarainbowphraserestore\",126],[430.88,\"p\",\"thatemptyscreenisexpecte\",34],[434.28,\"p\",\"ifyouaremovingbetweeneth\",105],[442.16,\"p\",\"thephrasegoesintoawallet\",130],[451.48,\"p\",\"ifyouwantafullertreatmen\",94],[458.34,\"h\",\"whathasgonewrongwithrain\",55],[461.94,\"p\",\"nothingcatastrophicthatw\",71],[466.74,\"p\",\"becauserainbowsappcodeis\",61],[471.82,\"p\",\"threemergedfixestouchthe\",38],[475.06,\"p\",\"on12june2025theteammerge\",59],[480.86,\"p\",\"on14november2025cameafix\",117],[489.78,\"p\",\"on21may2026afixreplaceda\",67],[496.3,\"p\",\"noneoftheseisabreachande\",43],[500.02,\"p\",\"theusefulreadingisthisth\",123],[509.3,\"p\",\"thewrittenphrasedoesnots\",80],[515.3,\"p\",\"theoneexploitwefoundtouc\",59],[518.98,\"p\",\"unchainedreportedon16jan\",193],[532.58,\"p\",\"socketurgeduserstorevoke\",47],[536.46,\"p\",\"thelessontravelswellbeyo\",92],[543.44,\"h\",\"dotherainbowpointsandrnb\",45],[547.52,\"p\",\"noandtheyarenotareasonto\",35],[550.68,\"p\",\"decryptreportedon22septe\",113],[561.52,\"p\",\"theairdroppitchistheolde\",89],[567.84,\"p\",\"thissitedoesnotcovertoke\",106],[575.32,\"p\",\"scammersdoloveanairdropt\",29],[577.44,\"p\",\"asitethatasksforyourphra\",65],[582.48,\"p\",\"ifyouarechoosingaphonewa\",175],[593.6,\"p\",\"forthegeneralquestionofw\",100]];\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: what Rainbow&#8217;s own support pages say about its cloud backup password, the derivation path read from its public source code, and the dated backup fixes in its GitHub history.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"rainbow-wallet-crypto\" data-category=\"Self custody and 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=\"Does Rainbow Wallet hold bitcoin at all?\" data-section=\"#does-rainbow-wallet-hold-bitcoin-at-all\">\n<p class=\"msq-question\">1. Which of these does Rainbow&#8217;s supported networks page list?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Bitcoin and Ethereum<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Ethereum and compatible chains such as Base and Arbitrum<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Every chain with a token on Ethereum, bitcoin included<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The page, dated 15 April 2026, lists Ethereum compatible networks only and warns against sending tokens on unlisted chains. <a href=\"https:\/\/rainbow.me\/support\/app\/supported-networks\" target=\"_blank\" rel=\"noopener\">Rainbow supported networks<\/a> <a class=\"msq-section\" href=\"#does-rainbow-wallet-hold-bitcoin-at-all\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"a\" data-title=\"Where does Rainbow keep your keys and your backup?\" data-section=\"#where-does-rainbow-keep-your-keys-and-your-backup\">\n<p class=\"msq-question\">2. What does Rainbow&#8217;s backup page say about backing up manually if you already use the cloud backup?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">It is recommended even if you use the cloud<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">It is unnecessary once the label says Up to Date<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">It replaces the cloud backup<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Rainbow recommends a written phrase kept separately as well as the cloud file, and says that without a backup there is no way to recover a wallet. <a href=\"https:\/\/rainbow.me\/support\/app\/the-importance-of-backups\" target=\"_blank\" rel=\"noopener\">Rainbow on backups<\/a> <a class=\"msq-section\" href=\"#where-does-rainbow-keep-your-keys-and-your-backup\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"b\" data-title=\"What happens if you forget the Rainbow backup password?\" data-section=\"#what-happens-if-you-forget-the-rainbow-backup-password\">\n<p class=\"msq-question\">3. Why might an older Rainbow cloud backup refuse to open?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Cloud backups expire after a year<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">The app saves only one backup password to the keychain, so files made with an older password may be inaccessible<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Rainbow deletes old backups on each update<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Rainbow&#8217;s restore guide says only one password is saved to the keychain and advises restoring an older backup first. <a href=\"https:\/\/rainbow.me\/support\/app\/restore-from-a-backup\" target=\"_blank\" rel=\"noopener\">Rainbow restore guide<\/a> <a class=\"msq-section\" href=\"#what-happens-if-you-forget-the-rainbow-backup-password\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"c\" data-title=\"Will a Rainbow secret phrase restore in another wallet?\" data-section=\"#will-a-rainbow-secret-phrase-restore-in-another-wallet\">\n<p class=\"msq-question\">4. Which derivation path does Rainbow&#8217;s source code set as its default?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">m\/84&#8217;\/0&#8217;\/0&#8242;, the bitcoin native SegWit path<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">A private path only Rainbow can read<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">m\/44&#8217;\/60&#8217;\/0&#8217;\/0, the common Ethereum path<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The wallet library file in Rainbow&#8217;s public repository sets DEFAULT_HD_PATH to the standard Ethereum path, so its phrases restore in other Ethereum wallets. <a href=\"https:\/\/github.com\/rainbow-me\/rainbow\/blob\/develop\/src\/features\/wallet\/core\/walletLibrary.ts\" target=\"_blank\" rel=\"noopener\">Rainbow wallet library code<\/a> <a class=\"msq-section\" href=\"#will-a-rainbow-secret-phrase-restore-in-another-wallet\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"a\" data-title=\"What has gone wrong with Rainbow backups, according to its own code?\" data-section=\"#what-has-gone-wrong-with-rainbow-backups-according-to-its-ow\">\n<p class=\"msq-question\">5. What did Rainbow&#8217;s merged fix of 14 November 2025 address?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Password managers that would not save the backup password<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">A breach of the cloud backup servers<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Bitcoin addresses showing the wrong balance<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The merged pull request fixed password managers failing to save the backup password; it was a bug, not a breach. <a href=\"https:\/\/github.com\/rainbow-me\/rainbow\/pull\/6923\" target=\"_blank\" rel=\"noopener\">Rainbow pull request 6923<\/a> <a class=\"msq-section\" href=\"#what-has-gone-wrong-with-rainbow-backups-according-to-its-ow\">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 29 October 2026 against Rainbow&#8217;s own support pages, its public source code on GitHub and its App Store listing. Rainbow is the wallet with the cheerful gradients and the pleasant sounds, and most pages that rank for it spend their word count on how nice it feels. It does feel nice. This page is about the two things the nice feeling does not cover: which coins it can hold, and what happens to your keys when the phone is gone.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"does-rainbow-wallet-hold-bitcoin-at-all\">Does Rainbow Wallet hold bitcoin at all?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No. The App Store lists it as <a href=\"https:\/\/apps.apple.com\/us\/app\/rainbow-ethereum-wallet\/id1457119021\" target=\"_blank\" rel=\"noopener\">Rainbow, Ethereum Wallet<\/a>, and the name is accurate. <a href=\"https:\/\/rainbow.me\/support\/app\/supported-networks\" target=\"_blank\" rel=\"noopener\">Rainbow&#8217;s supported networks page<\/a>, dated 15 April 2026, lists Ethereum, Base, Optimism, Arbitrum, Polygon and about twenty other Ethereum compatible chains. Bitcoin is not among them, and the page warns that if a network is not listed you should not send tokens to your wallet address on that chain, because you will not see them in the app.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That matters to this site&#8217;s readers because a bitcoin address and a Rainbow address are different things. A Rainbow address starts with 0x. A bitcoin address starts with bc1, 3 or 1. Most bitcoin wallets will refuse to send to a 0x address at all, which is the software doing you a favour. What Rainbow can show you is a token on Ethereum that tracks the price of bitcoin. That token is issued by a company that holds the real bitcoin on its behalf, so you are trusting that issuer, which is a different arrangement from holding bitcoin yourself. If bitcoin is what you hold, Rainbow is simply the wrong tool, in the same way <a href=\"https:\/\/getbitcoin.guide\/articles\/phantom-crypto-wallet\/\">Phantom is mostly the wrong tool<\/a> for anyone whose holdings are on bitcoin&#8217;s own network.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Question<\/th><th>Rainbow<\/th><th>A bitcoin wallet<\/th><\/tr><\/thead><tbody><tr><td>Address format<\/td><td>0x followed by 40 characters<\/td><td>Starts bc1, 3 or 1<\/td><\/tr><tr><td>Bitcoin on its own network<\/td><td><a href=\"https:\/\/rainbow.me\/support\/app\/supported-networks\" target=\"_blank\" rel=\"noopener\">Not supported<\/a><\/td><td>Supported<\/td><\/tr><tr><td>Phrase standard<\/td><td><a href=\"https:\/\/github.com\/bitcoin\/bips\/blob\/master\/bip-0039.mediawiki\" target=\"_blank\" rel=\"noopener\">BIP39, 12 words by default<\/a><\/td><td>BIP39, usually 12 or 24 words<\/td><\/tr><tr><td>Derivation path<\/td><td><a href=\"https:\/\/github.com\/rainbow-me\/rainbow\/blob\/develop\/src\/features\/wallet\/core\/walletLibrary.ts\" target=\"_blank\" rel=\"noopener\">m\/44&#8217;\/60&#8217;\/0&#8217;\/0, the Ethereum standard<\/a><\/td><td>m\/84&#8217;\/0&#8217;\/0&#8242; for native SegWit, among others<\/td><\/tr><tr><td>Cloud backup<\/td><td><a href=\"https:\/\/rainbow.me\/support\/app\/the-importance-of-backups\" target=\"_blank\" rel=\"noopener\">iCloud or Google Drive, password protected<\/a><\/td><td>Varies; many offer none<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-does-rainbow-keep-your-keys-and-your-backup\">Where does Rainbow keep your keys and your backup?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On your device. Rainbow describes itself as non custodial, meaning the company never sees your keys. <a href=\"https:\/\/rainbow.me\/support\/app\/export-your-secret-phrase\" target=\"_blank\" rel=\"noopener\">Its page on exporting the secret phrase<\/a> puts the stakes plainly: whoever has your secret phrase can control your wallet and steal everything inside of it. The phrase is the wallet; the app is just a window onto it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rainbow offers two backups and recommends doing both. The first is the cloud backup. <a href=\"https:\/\/rainbow.me\/support\/app\/the-importance-of-backups\" target=\"_blank\" rel=\"noopener\">Its backup page<\/a> says you can back up instantly with the Backup feature, and when it finishes a green label reads Up to Date under Settings, then Wallets and Backup. On iPhone that file goes to iCloud; on Android, <a href=\"https:\/\/rainbow.me\/support\/app\/restore-from-a-backup\" target=\"_blank\" rel=\"noopener\">Rainbow&#8217;s restore guide<\/a> names Restore from Google Drive. The file is protected by a backup password you choose when you first make the wallet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The second is the manual backup: the secret phrase written on paper or another physical object, kept somewhere separate. The same backup page says it is recommended even if you use the cloud, and adds a sentence worth reading twice: if you do not back up your wallet, there is no way to recover it. <a href=\"https:\/\/rainbow.me\/support\/extension\/backing-up-your-wallets\" target=\"_blank\" rel=\"noopener\">The browser extension&#8217;s backup guide<\/a> adds a detail people miss. Each wallet group has its own phrase, so backing up one group does not cover another.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Backup method<\/th><th>Protects against<\/th><th>Fails when<\/th><\/tr><\/thead><tbody><tr><td>Cloud file only<\/td><td>A lost or broken phone<\/td><td>You forget the backup password, or lose the Apple or Google account<\/td><\/tr><tr><td>Written phrase only<\/td><td>Lost phone, lost cloud account, forgotten password<\/td><td>The paper is lost, damaged or found by someone else<\/td><\/tr><tr><td>Both, kept apart<\/td><td>Almost every ordinary loss<\/td><td>Both are lost together, or the phrase is typed into a fake site<\/td><\/tr><\/tbody><\/table><\/figure>\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\/10\/writing-down-backup-for-rainbow-wallet-crypto.jpg\" alt=\"Hands writing down a backup recovery phrase for a rainbow wallet crypto account on paper.\" class=\"wp-image-774\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/writing-down-backup-for-rainbow-wallet-crypto.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/writing-down-backup-for-rainbow-wallet-crypto-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/writing-down-backup-for-rainbow-wallet-crypto-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/writing-down-backup-for-rainbow-wallet-crypto-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Writing down your recovery phrase physically is a crucial step in self custody.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-happens-if-you-forget-the-rainbow-backup-password\">What happens if you forget the Rainbow backup password?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The cloud file becomes very hard to open, and Rainbow cannot help. <a href=\"https:\/\/rainbow.me\/support\/app\/restore-from-a-backup\" target=\"_blank\" rel=\"noopener\">Rainbow&#8217;s restore guide<\/a> asks for the backup password that you created when you originally made your wallet. It then explains a quirk that is easy to fall into: the app only saves one password to the phone&#8217;s keychain, so any backups encrypted with an older password may not be accessible once that password has been overwritten. Its advice is to restore an older backup first, so that all the wallet secrets end up in your latest backup file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Put simply, if you have changed the backup password over the years, your oldest wallets may be sitting in a file that only the old password opens. The written phrase does not have that problem, which is the strongest reason to keep one. The restore guide also says restoring only overwrites wallets that lack their secrets, or adds wallets from the backup, so restoring should not wipe a wallet you already hold with its phrase. Write down any phrase you can still reveal before you try anyway; it costs five minutes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rainbow&#8217;s support team will not ask for your phrase, and <a href=\"https:\/\/rainbow.me\/support\/safety\/protect-your-wallet\" target=\"_blank\" rel=\"noopener\">its wallet safety page<\/a> is there to say so. Anyone who messages you offering to restore a backup in exchange for the words is a thief. No genuine support process, from Rainbow or anyone else, ever needs them.<\/p>\n\n\n\n<div class=\"msq-tool msq-check\" data-id=\"rainbow-backup-checks\" data-verb=\" checked\">\n<h3>Rainbow backup checks<\/h3>\n<p>Built from Rainbow&#8217;s own help pages. Tick each one off on your own device. Nothing here asks for your phrase, and nothing should.<\/p>\n<label><input type=\"checkbox\">Settings, then Wallets and Backup, shows a green Up to Date label<\/label>\n<label><input type=\"checkbox\">I know the cloud backup password and it is stored somewhere I can reach without this phone<\/label>\n<label><input type=\"checkbox\">Each wallet group has its own secret phrase written on paper or steel<\/label>\n<label><input type=\"checkbox\">The written phrase is kept in a different place from the phone<\/label>\n<label><input type=\"checkbox\">I wrote down any phrase I can still reveal before restoring an older cloud backup<\/label>\n<label><input type=\"checkbox\">I have not sent bitcoin, or any coin on an unlisted network, to my 0x address<\/label>\n<label><input type=\"checkbox\">I know Rainbow support will never ask for my phrase, and I will never type it into a website<\/label>\n<p class=\"msq-check-count\"><\/p>\n<p class=\"msq-note\">This checklist records nothing and sends nothing. A backup is only proven when you have restored from it, ideally on a spare device with a small balance.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"will-a-rainbow-secret-phrase-restore-in-another-wallet\">Will a Rainbow secret phrase restore in another wallet?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yes, for its Ethereum accounts, and here the source code settles what the help pages do not. Rainbow is open source under the GPL 3.0 licence, and <a href=\"https:\/\/github.com\/rainbow-me\/rainbow\/blob\/develop\/src\/features\/wallet\/core\/walletLibrary.ts\" target=\"_blank\" rel=\"noopener\">the wallet library file in its GitHub repository<\/a>, read on 29 October 2026, sets the default derivation path to m\/44&#8217;\/60&#8217;\/0&#8217;\/0, the same path MetaMask and most Ethereum wallets use, with each extra account adding a number on the end. The phrase itself comes from the standard bip39 library, which produces 12 words unless told otherwise.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So a Rainbow phrase typed into another Ethereum wallet app should show the same addresses, in the same order. Accounts that live on a Ledger connected to Rainbow are different: the code gives those a separate Ledger Live style path, and the keys stay on the Ledger in any case. And a Rainbow phrase restored into a bitcoin wallet will produce bitcoin addresses that have never held anything, because nothing was ever sent to them. That empty screen is expected, not a theft. If you are moving between Ethereum apps, <a href=\"https:\/\/getbitcoin.guide\/articles\/metamask-seed-phrase\/\">our MetaMask secret recovery phrase guide<\/a> covers the same restore from the other side.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The phrase goes into a wallet app or a hardware device you installed yourself, and nowhere else: not a website, not a form, not a tool that offers to check it for you. If you want a fuller treatment of storage, <a href=\"https:\/\/getbitcoin.guide\/articles\/your-recovery-phrase\/\">our recovery phrase guide<\/a> covers the mistakes that actually lose coins.<\/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\/10\/remembering-password-for-rainbow-wallet-crypto.jpg\" alt=\"A man thoughtfully holds a phone while managing his secure rainbow wallet crypto credentials at a desk.\" class=\"wp-image-775\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/remembering-password-for-rainbow-wallet-crypto.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/remembering-password-for-rainbow-wallet-crypto-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/remembering-password-for-rainbow-wallet-crypto-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/remembering-password-for-rainbow-wallet-crypto-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">A forgotten backup password locks the cloud file, which is why the written phrase matters.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-has-gone-wrong-with-rainbow-backups-according-to-its-ow\">What has gone wrong with Rainbow backups, according to its own code?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nothing catastrophic that we could find, but the fix log is more honest than any review. Because <a href=\"https:\/\/github.com\/rainbow-me\/rainbow\" target=\"_blank\" rel=\"noopener\">Rainbow&#8217;s app code is public<\/a>, its repairs are dated public records. Three merged fixes touch the backup directly. On 12 June 2025 the team merged <a href=\"https:\/\/github.com\/rainbow-me\/rainbow\/pull\/6681\" target=\"_blank\" rel=\"noopener\">a fix for backups stuck in a syncing state<\/a>. On 14 November 2025 came <a href=\"https:\/\/github.com\/rainbow-me\/rainbow\/pull\/6923\" target=\"_blank\" rel=\"noopener\">a fix for password managers that would not save the backup password<\/a>, which matters given the one password quirk above. On 21 May 2026 a fix replaced <a href=\"https:\/\/github.com\/rainbow-me\/rainbow\/pull\/7506\" target=\"_blank\" rel=\"noopener\">a confusing Not Enabled label on the cloud backup row<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">None of these is a breach, and every wallet ships bugs. The useful reading is this: the cloud backup is software, software has bad weeks, and a green Up to Date label is a status message rather than a guarantee. The written phrase does not sync, does not need a password manager and has never had a pull request.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The one exploit we found touching Rainbow users came through a partner. <a href=\"https:\/\/unchainedcrypto.com\/hackers-steal-several-millions-from-interoperability-protocol-socket\/\" target=\"_blank\" rel=\"noopener\">Unchained reported on 16 January 2024<\/a> that the Socket bridging protocol, which Rainbow used for its bridge feature, was exploited for several million dollars, and that Rainbow paused bridging in its mobile app and browser extension. Socket urged users to revoke all transaction approvals. The lesson travels well beyond Rainbow: a token approval you signed months ago is still live until you revoke it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/rainbow-wallet-crypto-chart.png\" alt=\"Timeline of rainbow wallet crypto backup fixes and the 2024 bridge pause, from public records.\" class=\"wp-image-778\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/rainbow-wallet-crypto-chart.png 1600w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/rainbow-wallet-crypto-chart-300x169.png 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/rainbow-wallet-crypto-chart-1024x576.png 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/rainbow-wallet-crypto-chart-768x432.png 768w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/rainbow-wallet-crypto-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">Dates from Rainbow&#8217;s merged GitHub pull requests and Unchained&#8217;s report of 16 January 2024, checked on 29 October 2026.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"do-the-rainbow-points-and-rnbw-token-change-any-of-this\">Do the Rainbow points and RNBW token change any of this?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No, and they are not a reason to pick a wallet. <a href=\"https:\/\/decrypt.co\/340768\/ethereum-wallet-rainbow-reveals-rnbw-token-airdrop\" target=\"_blank\" rel=\"noopener\">Decrypt reported on 22 September 2025<\/a> that Rainbow&#8217;s points programme, running since late 2023, would convert into an on chain RNBW token. The airdrop pitch is the oldest trick in wallet marketing: use the app more and something might arrive later. This site does not cover tokens or rewards, and nothing about a points balance changes where your keys are or how you get them back. Scammers do love an airdrop, though. A site that asks for your phrase to claim one is stealing your wallet, every time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you are choosing a phone wallet for bitcoin itself, <a href=\"https:\/\/getbitcoin.guide\/articles\/best-hot-wallet\/\">our hot wallet comparison<\/a> sets the options side by side on the same terms, and <a href=\"https:\/\/getbitcoin.guide\/articles\/metamask-wallet-review\/\">our MetaMask review<\/a> covers the Ethereum wallet most often compared with Rainbow. For the general question of who can move your coins, <a href=\"https:\/\/getbitcoin.guide\/articles\/non-custodial-crypto-wallet\/\">our explainer on non custodial wallets<\/a> starts from first principles.<\/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 \">Can I send bitcoin to my Rainbow wallet address?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. Rainbow supports Ethereum and compatible networks only, and its address starts with 0x, which is not a bitcoin address. Most bitcoin wallets will refuse the send. If one somehow did, Rainbow could not show or move the coins.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is the Rainbow iCloud backup encrypted?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Rainbow&#8217;s restore guide asks for the backup password you set when you made the wallet and describes older backups as encrypted with an older password, so the file is password protected. Rainbow&#8217;s pages checked on 29 October 2026 did not describe the encryption method in detail.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can Rainbow support reset my backup password?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. Rainbow is non custodial and never holds your keys or your password. If the password is lost, the written secret phrase is the way back in. Without either, Rainbow&#8217;s backup page says there is no way to recover the wallet.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">How many words is a Rainbow secret phrase?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Twelve, by default. Rainbow&#8217;s open source code generates the phrase with the standard bip39 library, whose default is 12 words. Imported wallets keep whatever length they had, so a 24 word phrase from elsewhere still works in Rainbow.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does the Rainbow browser extension share the phone backup?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Not automatically. The extension has its own password, which Rainbow says cannot be reset, and its own guide on backing up each wallet group. To move a wallet between them you import its secret phrase into the other.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is Rainbow open source?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. The mobile app&#8217;s code is published on GitHub under the GPL 3.0 licence and was still being updated on 29 October 2026. Open code lets anyone check details such as the derivation path, though it does not prove the app store build matches it.<\/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 any token, points, earn or yield feature. 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>The Rainbow wallet crypto app is self custody for Ethereum and two dozen compatible networks, and it does not hold bitcoin at all. Your keys live on your phone, backed up by a password protected iCloud or Google Drive file and by a 12 word secret phrase. Rainbow cannot recover either one if you lose it.<\/p>\n","protected":false},"author":1,"featured_media":773,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"Rainbow Wallet Crypto: What the Friendly App Leaves to You","rank_math_description":"The Rainbow wallet crypto app keeps Ethereum keys on your phone, not bitcoin. Back up both the cloud file and the 12 word phrase, as Rainbow cannot.","rank_math_focus_keyword":"rainbow wallet crypto","rank_math_canonical_url":"","rank_math_breadcrumb_title":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"","rank_math_pillar_content":"","rank_math_robots":[],"rank_math_advanced_robots":[]},"categories":[2],"tags":[],"class_list":["post-776","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\/776","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=776"}],"version-history":[{"count":4,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/776\/revisions"}],"predecessor-version":[{"id":782,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/776\/revisions\/782"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media\/773"}],"wp:attachment":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media?parent=776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/categories?post=776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/tags?post=776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}