A hardware wallet is not the only way to keep Bitcoin offline. You can build the same air-gapped protection with a laptop you already own, a free live operating system called Tails, and a desktop wallet like Sparrow or Electrum. No vendor account, no firmware update schedule, no $59 to $250 device to buy and wait for in the mail. This tutorial walks through the full build: downloading and verifying Tails OS 7.14, generating a seed entirely offline, and moving transactions back and forth with a Partially Signed Bitcoin Transaction (PSBT) carried on a USB drive. By the end you’ll have a working cold storage setup, a tested recovery plan, and a clear picture of where this approach is stronger than a hardware wallet and where it isn’t.

Hardware wallets had a rough stretch in 2026. Coinkite confirmed that a random-number-generation bug shipped since March 2021 had quietly weakened seed generation on Coldcard Mk2 and Mk3 units running firmware 4.0.1 through 4.1.9, with combined losses from a string of related sweeps approaching $114 million by August. Weeks later, Trezor disclosed that a breach at a fulfillment partner had exposed customer contact and shipping details. Neither incident means hardware wallets are a bad idea. It does mean a software-only, fully air-gapped alternative is worth having in your toolkit, whether as your primary setup or as a backup signing path that doesn’t depend on any single vendor’s supply chain.

Prerequisites: Software, Hardware, and Time You’ll Need

Before you start, gather the pieces below. Nothing here requires a purchase beyond USB drives you can reuse for other projects later, which is the main cost advantage of this approach over a dedicated hardware wallet.

ToolCurrent versionReleasedRole in this build
Tails OS7.14Sept 30, 2026Amnesic live operating system that becomes your air-gapped machine
Sparrow Wallet2.5.5Sept 17, 2026Watch-only coordinator on your daily computer, and offline signer on Tails
Electrum4.8.1Aug 2026Alternative offline signer if you prefer it to Sparrow
GnuPGBundled in Tailsn/aVerifies the Tails ISO signature before you trust it
USB drives2 x 8GB or largern/aOne boots Tails, the other carries PSBT files between machines

You’ll also need a laptop that can boot from USB and that you’re willing to dedicate to this purpose. It doesn’t need to be fast or new. An old ThinkPad or Mac that’s been sitting in a drawer works fine, since Tails runs entirely in RAM and never touches the internal drive unless you explicitly set up persistent storage. Budget about 90 minutes for the first full setup, and 10 to 15 minutes for each transaction afterward.

Put a real number on the cost side of that comparison. Two decent 8GB to 32GB USB drives run about $8 to $15 each at any electronics retailer, so $16 to $30 covers the entire hardware cost of this build if you’re starting completely from scratch with no spare laptop. That’s less than a single cable that ships with some hardware wallets, and it buys you a setup with no firmware to update, no vendor account to register, and no shipping address to hand over to anyone.

Picking the Right Machine for the Job

Tails’ official documentation lists 2GB of RAM as the minimum and 3GB as the point where it runs smoothly without strange behavior or crashes, so almost any laptop built in the last fifteen years clears that bar easily. What matters more than raw speed is what the machine doesn’t have. A device with a removable or disable-able Wi-Fi card is a small extra layer of assurance, since you can pull the card entirely rather than relying only on a software toggle. Avoid anything with a built-in cellular modem, and if the machine has a webcam you don’t plan to use for QR transfers, cover it with tape as a cheap, permanent reminder that this machine has no business reaching the outside world.

Don’t use your primary daily laptop for the offline side of this setup, even temporarily. The whole model depends on one machine never having been exposed to the internet while a seed exists on it, and a laptop with months of browsing history and installed software doesn’t meet that bar no matter how carefully you disable networking for one afternoon. A second, dedicated machine, even a cheap one bought specifically for this, is worth the twenty or thirty dollars it costs on the secondhand market.

How the Air-Gapped PSBT Workflow Actually Works

The model splits one wallet into two halves that never touch the network at the same time. Your everyday computer runs a watch-only wallet: it knows your public keys and can see your balance and build transactions, but it holds no private key and can’t sign anything. The Tails machine holds the actual seed and never connects to Wi-Fi, Ethernet, or Bluetooth. When you want to spend, the watch-only wallet builds an unsigned transaction, packages it as a PSBT under BIP-174, and you carry that file to the offline machine on a USB drive. The offline machine signs it and you carry the signed file back to broadcast.

This is the same logic that Coldcard documents for its own air-gap signing methods: construct, transfer, verify, sign, and return. The difference here is that the “device” doing the signing is a general-purpose laptop running Tails instead of a purpose-built chip. That trade-off cuts both ways, and the comparison table near the end of this guide lays out exactly where each approach wins.

What’s Actually Inside a PSBT File

A PSBT is a binary file that bundles the unsigned transaction with everything a signer needs to understand it: which previous outputs it’s spending, the exact amount of each, the destination scripts, and change information. The BIP-174 specification, documented by Bitcoin Optech, defines this format precisely so that any PSBT-compatible wallet, whether that’s Sparrow, Electrum, or a hardware signer, can read and act on it the same way regardless of which tool created it.

That standardization is exactly why it’s safe to carry one on an ordinary USB drive between an online machine and an offline one. The file itself can’t execute code or infect anything. The only real risk is that it’s been tampered with in transit, which is why Step 6 below has you hash the file before and after the move, and why Sparrow’s signing screen always shows you the decoded destination address and amount in plain language rather than asking you to trust the raw bytes.

What Air-Gapping Protects You From, and What It Doesn’t

It’s worth being precise about the threat model here, because air-gapping is not a cure-all. A machine that never touches a network can’t be reached by remote malware, can’t have its clipboard silently swapped by a browser extension, and can’t leak a seed phrase to a server because there’s no server it can talk to. That one property eliminates an entire category of attack that regularly drains hot wallets and browser-extension wallets: malicious JavaScript that waits for a user to copy a Bitcoin address and replaces it with the attacker’s own before the paste completes.

What air-gapping does not solve is anything that happens before or after the machine is offline. If you type your seed into a connected computer first, or photograph it with a phone that syncs to the cloud, the air gap you build afterward protects nothing. It also does nothing against someone physically taking the laptop and the paper backup from the same location, which is why Step 10 insists on storing those two things separately. And it does nothing to protect you from sending funds to the wrong address if you don’t actually read the signing screen before approving. The tooling removes remote risk. It can’t remove a rushed human decision.

You’re Still Trusting Software You Didn’t Write

Going software-only doesn’t mean going trustless. You’re still relying on the Tor Project to ship Tails without a backdoor, and on the Sparrow or Electrum maintainers to ship wallet code that does what it claims. The honest answer to “how do I know” is that you don’t, fully, any more than a hardware wallet buyer fully audits the chip inside their device. What you can do is lean on the parts of this that are checkable: Tails and Sparrow are both open source, so their code is public for anyone to review, and the GPG signature check in Step 1 confirms the specific file you downloaded matches what the Tails team actually published, rather than a tampered copy served to you by a compromised mirror or a hostile network. Repeating that check on every single update, not just the first one, is what keeps that trust meaningful over time rather than a one-time box you tick and forget.

Step 1: Download and Verify the Tails OS Image

Go to tails.net on your everyday, connected computer and download the current Tails 7.14 USB image along with its OpenPGP signature file. Skipping verification is the single most common mistake in this whole process, because an unverified ISO could be tampered with before it ever touches your air-gapped machine. Tails ships GnuPG by default, and the project’s own documentation walks through importing the signing key and checking the signature. Run the verification before you flash anything.

# After importing the Tails signing key per the official verification guide:
gpg --verify tails-amd64-7.14.iso.sig tails-amd64-7.14.img
# Expect output containing: "Good signature from..."
# If you see "BAD signature" or a key mismatch, stop and re-download.

If the signature doesn’t check out cleanly, don’t proceed. Re-download from the official site over a different network connection and try again before assuming your drive is bad.

Step 2: Flash Tails to a USB Drive and Boot It

With the signature confirmed, write the image to your first USB drive. On Linux or macOS, dd handles this directly from a terminal. Double-check the output device path before you run it, since writing to the wrong disk overwrites it instantly and silently.

# Confirm the USB drive's device path first with: lsblk  (Linux) or diskutil list (macOS)
sudo dd if=tails-amd64-7.14.img of=/dev/sdX bs=16M status=progress oflag=sync
sync
# Replace /dev/sdX with your actual USB device, never a partition like /dev/sdX1

Insert the USB drive into the laptop you’ve dedicated to this project, enter the boot menu (usually F12, F2, or Esc depending on the manufacturer), and select the USB drive. Tails boots to a welcome screen where you can set an administration password if needed. Leave Wi-Fi and networking off from this point forward. That’s the entire point of the exercise.

Step 3: Set Up Encrypted Persistent Storage

By default, Tails forgets everything when you shut it down, which is great for privacy but useless if you want your wallet file to survive a reboot. From the Tails desktop, open Applications > Tails > Configure Persistent Volume, set a long passphrase (treat it with the same seriousness as a seed phrase), and choose which data categories to persist. Enable the wallet-related persistence option so your Sparrow or Electrum wallet file survives between sessions, and leave everything else off unless you have a specific reason to turn it on. Every extra persisted feature is one more thing that could leak information if the USB drive is ever lost or examined.

The official persistent storage documentation covers the full list of options and is worth reading once before you commit to a configuration, since changing it later means re-encrypting the volume.

Step 4: Launch Sparrow Wallet Offline and Generate Your Seed

Reboot into Tails with persistence unlocked, confirm the network indicator shows no connection, and launch Sparrow from the Tails application menu, installing it once via the Additional Software persistence feature if it isn’t already bundled in your Tails build. Create a new wallet, choose a standard single-signature wallet, and let Sparrow generate a fresh 12 or 24-word seed using its own entropy source. Write the words down on paper as you go, don’t photograph them, and don’t type them anywhere except directly into Sparrow’s seed display screen.

Sparrow 2.5.5 added Silent Payments receiving wallets and expanded support for pairing with air-gapped hardware signers, on top of the security hardening that shipped in version 2.5.4 after what developer Craig Raw described in an interview with Decrypt as an AI-assisted code review process. None of that changes this specific step, but it’s worth knowing the project is actively maintained and getting outside scrutiny, since you’re trusting this software with your actual keys. Download Sparrow for the Additional Software step from the official downloads page, and cross-check the version number against the GitHub release notes so you know exactly what changed since the last build you used.

Once Sparrow is installed and running, confirm the version before you generate anything. A mismatched or outdated build is a common source of confusing bugs later, and it only takes a few seconds to check from a terminal.

# From a Tails terminal, after installing Sparrow via Additional Software:
sparrow --version
# Compare the output against the latest tag at:
# https://github.com/sparrowwallet/sparrow/releases
# If it doesn't match, reinstall via Additional Software before generating a seed

Why Not Electrum Instead

Electrum 4.8.1, available from electrum.org, does the same job and has a longer track record, dating back over a decade. Sparrow has a cleaner PSBT-focused interface and better built-in support for multiple wallet policy types, which is why it’s the default recommendation here. If you’re already comfortable with Electrum’s interface, the same air-gapped principles in this guide apply directly, only the menu names change.

Step 5: Create a Matching Watch-Only Wallet on Your Everyday Computer

Back on your normal, internet-connected computer, install Sparrow and create a second wallet. This time, instead of generating a seed, import the public key information from the air-gapped wallet. Sparrow can export this as a wallet descriptor or an xpub, either as a file saved to your transfer USB drive or as a QR code you scan with your computer’s webcam if you’d rather avoid USB files entirely for this step. This watch-only wallet will show your correct balance and incoming transactions, but it physically cannot sign anything, because it never has the private key.

Send a small test amount to a receive address generated by this watch-only wallet before you do anything else. Confirm it shows up correctly. This single check catches the most expensive mistake possible in this entire process: importing the wrong key material and sending funds somewhere you can’t later recover.

Step 6: Build an Unsigned PSBT and Carry It to the Air-Gapped Machine

When you want to spend, build the transaction in the watch-only Sparrow wallet as you normally would: enter the destination address, the amount, and review the fee. Instead of a sign button, you’ll see an export option for an unsigned PSBT. Save it to your second USB drive, the one reserved exclusively for file transfer and never used to browse the web or plug into any other machine.

Before you physically move the drive, verify the file’s checksum on the connected machine and note it down so you can confirm nothing changed in transit.

# On the connected (watch-only) machine, before unplugging the transfer USB:
sha256sum /media/transfer-usb/unsigned-tx.psbt
# Write down the resulting hash, then compare it on the Tails machine:
sha256sum /media/transfer-usb/unsigned-tx.psbt
# The two hashes must match exactly before you proceed to signing

Step 7: Sign the PSBT on Tails and Carry It Back

With networking still off, plug the transfer USB into the Tails machine and open the unsigned PSBT in your air-gapped Sparrow wallet. Sparrow decodes it and shows you the destination address, the amount, and the fee in plain language. Read every field carefully. This is your last chance to catch a manipulated address before your signature makes the transaction irreversible. Once it checks out, sign, and export the now-signed PSBT back to the same transfer drive.

If you want to inspect the raw PSBT structure at any point, Bitcoin Core’s command-line tools can decode it independently of either wallet, which is a useful cross-check if you’re ever unsure whether Sparrow is displaying something accurately.

bitcoin-cli decodepsbt "$(base64 -w0 signed-tx.psbt)"
# Sample trimmed output:
# {
#   "tx": {
#     "vout": [
#       { "value": 0.01420000, "scriptPubKey": { "address": "bc1q..." } }
#     ]
#   },
#   "fee": 0.00001850
# }

Step 8: Broadcast and Verify the Transaction On-Chain

Carry the transfer USB back to your connected computer, open the signed PSBT in the watch-only Sparrow wallet, and broadcast it to the network. Sparrow shows the transaction ID immediately. Paste that into a block explorer to confirm it’s been picked up by the mempool, then wait for at least one confirmation before treating the spend as final. For anything above a trivial amount, waiting for two or three confirmations costs a few extra minutes and removes almost all reorg risk.

Step 9: Test the Whole Pipeline With a Small Amount First

Resist the urge to move your entire balance into this setup on day one. Send a small amount in, practice building and signing a PSBT to send a small amount back out, and only then move larger holdings over. This mirrors the same caution covered in seed phrase offline backup best practices: a backup or a wallet you haven’t tested a full recovery cycle on isn’t a backup, it’s a hope.

Step 10: Lock In Your Long-Term Recovery Plan

Your seed phrase, written on paper during Step 4, is now the single point of failure in this entire system, not the Tails USB drive itself. The USB stick is replaceable. The seed is not. Store the paper backup somewhere fire-resistant and away from the laptop, consider a metal backup plate for long-term durability, and keep a second copy in a geographically separate location. If you want to split that backup across multiple locations so no single one is a point of failure, Shamir-style splitting solves exactly that, and it’s worth layering on top of this setup rather than replacing it.

Also write down, in plain language, the exact sequence of steps in this guide, including which USB drive is which and where your Tails verification key came from. Future-you, recovering a wallet under stress, will not remember the details as clearly as you do right now.

Common Pitfalls That Quietly Break Air-Gapped Setups

  • Reusing the transfer USB for anything else. The moment that drive touches another computer or gets plugged into a phone to charge, you’ve broken the air gap it exists to maintain.
  • Skipping ISO signature verification “just this once.” The entire security model depends on knowing the operating system itself hasn’t been tampered with before you ever generate a key on it.
  • Connecting the Tails laptop to Wi-Fi to check for an update. Shut it down, check your everyday machine for the current Tails version there instead, and only ever update Tails itself by booting a freshly verified image.
  • Forgetting the persistent storage passphrase. Unlike a hardware wallet with a recovery seed printed on a card, a forgotten Tails persistence passphrase with no written seed backup means the wallet file is gone for good.
  • Treating the laptop as disposable without a plan. If that specific machine dies, your seed still lives in your paper backup, but only if you actually tested the recovery process before you needed it.
  • Not verifying the destination address on the signing screen. Malware that swaps a clipboard address on the connected machine is a real, documented attack pattern. The offline signing step exists specifically so you can catch that before it costs you anything.
  • Using a webcam-equipped machine you don’t fully trust for QR-based transfers. If you go the QR-code route instead of USB files, make sure the camera and display pipeline on both ends are ones you control.

Troubleshooting Guide: 8 Problems and Fixes

ProblemLikely causeFix
GPG signature says “BAD signature”Corrupted download or wrong signing key importedRe-download the ISO and signature over a different connection, re-import the key from the official source
Tails won’t boot from USBUSB drive wasn’t written correctly, or Secure Boot is blocking itRe-flash with dd, verify the write completed, or disable Secure Boot in firmware settings
Persistent storage option missingVolume wasn’t created before reboot, or wrong boot menu option selectedBoot Tails, go to Applications > Tails > Configure Persistent Volume, and create it explicitly
Sparrow won’t launch on TailsAdditional Software persistence wasn’t enabled before installRe-enable that persistence feature, reinstall, and reboot once to confirm it sticks
Watch-only wallet shows zero balance after importWrong descriptor or xpub imported, or wallet type mismatchRe-export the exact descriptor from the air-gapped wallet and re-import, checking the address type matches
PSBT checksum doesn’t match after transferFile was modified, truncated, or the USB drive has a write errorDiscard the file, regenerate the PSBT fresh, and re-copy to a different USB drive
Sparrow rejects the PSBT as invalidFile was exported from a mismatched wallet or edited manuallyRebuild the transaction from scratch in the watch-only wallet rather than trying to patch the file
Broadcast fails with “transaction not accepted”Fee too low for current network conditions, or a UTXO was already spentRebuild with a higher fee rate, or refresh the watch-only wallet to sync the latest UTXO set first

Advanced Tips: QR Transfers, Raspberry Pi Signers, and Multisig Upgrades

Once the basic USB-based workflow feels routine, a few upgrades are worth considering. First, animated QR codes using the UR (Uniform Resource) encoding format let you move a PSBT between machines using only a webcam and a screen, with no USB drive at all. This removes the reused-transfer-drive pitfall entirely, at the cost of needing a reasonably modern webcam on both ends.

Second, a dedicated single-board computer like a Raspberry Pi running Tails from an SD card instead of a repurposed laptop gives you a smaller, cheaper, purpose-dedicated air-gapped machine that’s easier to store securely when not in use. The setup steps are identical, only the hardware changes.

Third, once you’re comfortable with the single-key version of this build, consider layering it into a 2-of-3 multisig setup the same way the Sparrow-based multisig wallet guide describes, using one air-gapped Tails signer as one of your three keys alongside a hardware signer or two. That gets you the cost and flexibility advantages of the software-only approach without making any single device, including the Tails laptop, a single point of failure.

Tails Cold Storage vs Hardware Wallets: Which Fits You

FactorTails + Sparrow (this guide)Single hardware wallet2-of-3 multisig hardware
Upfront cost$0 beyond USB drives you likely already own$59 to $250 per device$150 to $750 for three devices
Setup timeAbout 90 minutes15 to 30 minutes90 minutes or more
Supply-chain exposureNone, software onlyDepends on vendor and fulfillment partnersSpread across multiple vendors
Physical durabilityAny laptop or Pi works as a replacementSingle point of hardware failureSurvives losing any one device
Best forTechnical users comfortable with Linux basics and USB transfersMost people wanting simple, tested cold storageLarger holdings or shared custody needs

None of these options is strictly better in every dimension. A single hardware wallet remains the easiest starting point for most people, which is why it’s still the default most guides, including our own self-custody wallet setup walkthrough, point beginners toward. The Tails-based approach earns its place when you want zero vendor dependency, when you’re already comfortable with Linux, or when you want a free, disposable signer to add as one leg of a multisig setup.

It’s also worth keeping half an eye on the long-term picture. Standard Bitcoin addresses rely on elliptic-curve cryptography that a sufficiently powerful quantum computer could eventually threaten, a risk our quantum-proof Bitcoin wallet guide covers in more depth. Nothing about that changes how you’d use this Tails setup today, but it’s a reason to keep your signing software current and watch for wallet-format migration guidance as it develops. For a broader look at how the rest of the self-custody landscape is holding up this year, our cryptocurrency coverage tracks the hacks, fixes, and new tools as they land. And if a full software build still feels like more than you want to manage, the hardware-based multisig cold storage setup guide is the more conventional starting point.

Your Complete Air-Gapped Cold Storage Project, Start to Finish

Strip away the explanations and this is the whole build in order, as a checklist you can follow the next time you set this up or walk someone else through it.

  1. Download Tails 7.14 and its signature on a connected computer, then verify with gpg --verify before trusting the image.
  2. Flash the verified image to a dedicated USB drive with dd and boot a spare laptop from it with networking left off.
  3. Create an encrypted persistent volume with a strong passphrase, enabling only wallet and Additional Software persistence.
  4. Install Sparrow (or Electrum) through Additional Software, confirm the version matches the official release, and generate a fresh seed entirely offline.
  5. On your everyday computer, create a matching watch-only wallet from the exported descriptor or xpub, and test it with a small incoming transaction.
  6. Build an unsigned PSBT in the watch-only wallet, hash it, and carry it to the Tails machine on a dedicated transfer USB drive.
  7. Verify the checksum matches, open the PSBT in the air-gapped Sparrow wallet, read every field, and sign it.
  8. Carry the signed PSBT back and broadcast it from the watch-only wallet, then confirm the transaction ID on a block explorer.
  9. Repeat the send-and-sign cycle with a small amount a second time before moving your full balance over.
  10. Write your seed phrase on paper or metal, store it apart from the laptop, and keep a second copy somewhere geographically separate.

Keep that list somewhere you can find it without your air-gapped machine, since it’s the map back to your funds if you ever need to rebuild this setup from scratch on new hardware. Pair it with your written seed phrase, not with the laptop itself.

Frequently Asked Questions

Do I need to buy a hardware wallet to use this method?

No. That’s the entire point of this build. You need two USB drives and a spare laptop or single-board computer, nothing proprietary. The trade-off is that you’re relying on general-purpose hardware and your own careful handling of USB files instead of a device purpose-built for this one job.

Is Tails OS safe to use for Bitcoin cold storage?

Tails is a widely used, actively maintained privacy-focused operating system built by the Tor Project, and it’s a reasonable foundation for this kind of use, provided you verify the ISO signature every time you download a new version and never connect the machine to a network while a seed exists on it. Safety here depends far more on your discipline around network isolation than on any property of Tails itself.

What’s the difference between Sparrow Wallet and Electrum for this setup?

Both support PSBT-based air-gapped signing. Sparrow has a more modern interface built specifically around PSBT workflows and multisig policies, while Electrum has a longer history and a broader plugin ecosystem. Either works for the steps in this guide.

Can I lose my funds if I lose the Tails USB drive?

Not if you’ve written down your seed phrase on paper during setup and tested recovering from it. The USB drive is a convenience for persisting the wallet file between sessions, not the actual backup of your funds. The seed phrase is.

How do I move the signed transaction back without a second USB drive?

Both Sparrow and Electrum support exporting and importing PSBTs as QR codes using the UR encoding format, which lets you scan the transaction between machines with a webcam instead of physically moving a drive. It takes slightly more setup to configure the camera correctly, but it removes USB drives from the picture entirely.

Should I use a laptop or a Raspberry Pi for the air-gapped machine?

Either works. A spare laptop is the faster starting point since you likely already have one. A Raspberry Pi running Tails from an SD card is cheaper to dedicate permanently and easier to store compactly, which some users prefer for a setup they’ll keep for years.

Is this method better than a multisig hardware wallet setup?

Better depends on what you’re optimizing for. Multisig across several hardware devices removes any single point of failure, including a single compromised machine. This single-key, software-only approach is cheaper and faster to set up, and works well as one signer within a larger multisig arrangement rather than as a full replacement for one.

How often should I update Tails and Sparrow on the offline machine?

Tails ships a new release roughly every six weeks. Check for a new version on your connected computer, download and verify it there, and only then boot the fresh, verified image on your air-gapped machine rather than updating in place over a network connection you shouldn’t be enabling anyway.

What if a security flaw is found in Tails or Sparrow after I’ve set this up?

Treat it the same way you’d treat a firmware advisory on a hardware wallet: read the official advisory, download and verify the patched version on your connected computer, and boot that fresh image on the offline machine before you sign anything else. Your seed itself isn’t affected just because the software has a bug, since the seed lives in your written backup and in an already-signed set of addresses, but you should stop using the vulnerable version immediately until you’ve updated.