Jan 14, 2026

DIY Bitcoin Seed 🎲🎲

Create your own seed phrase with true entropy from scratch

Why DIY Seed?

Bitcoin was designed to be decentralized and censorship-resistant. To fully embrace this, you must control your private keys. Your seed is the foundation of your private key, and if you don’t generate it yourself in a secure, verifiable way, you're trusting others with your funds.

A DIY seed allows you to:

  • Ensure that no one else has access to your private key.

  • Avoid relying on hardware or software-generated seeds that could be compromised.

  • Gain confidence by understanding the seed creation process.

Risks of 3rd-Party Seed Generation

Many wallets generate a seed for you, but this comes with risks:

  • Weak Randomness – You must trust that the software or hardware wallet is using proper randomness (entropy) and not creating predictable seeds.

  • Backdoors & Compromises – Some wallets might have security flaws or even intentional backdoors that expose your seed.

  • Supply Chain Attacks – Pre-generated seeds (as found in some compromised hardware wallets) could mean attackers already have access to your Bitcoin.

How to Generate Your Own Seed

To eliminate these risks, you can create your own Bitcoin seed using secure, offline methods:

  1. Generating true randomness: Use dice rolls to ensure strong entropy.

  2. Convert randomness into a seed phrase: Use the BIP39 standard to turn random numbers into a mnemonic seed.

  3. Verify the seed: Cross-check it with multiple tools to ensure accuracy.

  4. Store it securely: Write it on durable materials like metal to protect against loss or damage.

The Power of Self Custody

By generating your own seed, you eliminate unnecessary trust in third parties. This aligns with Bitcoin’s core principles: self sovereignty, security, and decentralization. While it requires learning and careful execution, it’s one of the most empowering steps you can take in Bitcoin self custody!

By following this detailed step-by-step guide you will take full control of your financial future!

Requirements

To create your own DIY seed phrase securely, you'll need the following tools:

Casino Dice

Casino-grade dice are essential for generating true randomness (entropy). While it's possible to use a single dice, the process would be extremely slow. To speed things up, it's recommended to use at least 5 or 10 dice, allowing you to roll fewer times while still ensuring a high level of randomness. But it’s also okay to just save money and just use any old dice. Even if your dice are not perfect and have some bias, as long as you use several at a time, you will achieve sufficient randomness.

That said, you don’t need to spend extra money on special dice—any standard six-sided dice will work. Even if your dice have slight imperfections or biases, rolling several at once will balance out any inconsistencies and provide enough randomness for your needs

Airgapped computer

An air-gapped computer is a device that has never been connected to the internet and is physically incapable of doing so. This is crucial for securely generating and storing private keys. Suitable options include:

  • Raspberry Pi Zero 1.3, This model is highly recommended because it lacks built-in Wi-Fi and Bluetooth, reducing attack surfaces. However, it may be difficult to find.

  • Laptop or PC, This should be a computer where the Wi-Fi and Bluetooth modules have been physically removed, and the Ethernet port has been permanently disabled or damaged. This ensures that even if the computer is stolen, an attacker cannot extract the private key by connecting it to the internet.

Paper & Pen

You'll need a pen and paper to document the process of generating your seed phrase. However, this paper should only be used as a temporary record and must be destroyed (e.g., burned) after securely transferring the seed phrase to a more durable storage medium.

Metal Seed Storage

Once your seed phrase has been created, it should be permanently stored on a fireproof, waterproof, and tamper-resistant metal seed storage device. This protects your seed phrase from physical threats such as fire, water damage, and deterioration over time.

By using these tools and following best security practices, you can ensure that your seed phrase remains secure, private, and resistant to theft or loss.

Roll the Dice

Our goal is to generate a large, truly random binary number by rolling the dice.

Procedure:

Assign Binary Values

Before rolling the dice, you need to determine how each roll will be converted into a binary value. The following method ensures an equal probability of obtaining a 0 or 1:

  • If the die lands on 1, 2, or 3, it is assigned a value of 0.

  • If the die lands on 4, 5, or 6, it is assigned a value of 1.

Roll and Record

Roll the dice and record the results from left to right. Consistency is key—always read in the same order to maintain randomness. If it’s unclear which die is further to the left, re-roll those dice.

warning

It is crucial that the data is truly random. If it lacks randomness, there is a risk that someone else could reproduce the exact same sequence. This would allow them to regenerate your private key and potentially access all of your Bitcoin.

Format the Output

Create 23 rows of 11 binary digits each, plus a final 24th row containing only 3 digits.

  • For readability, separate each row into three groups: 4-4-3 (e.g., 1010 1101 011).

  • Keep the numbers neatly aligned in columns and leave space between rows for manual calculations later.

This structured approach will help you maintain accuracy and ensure a truly random binary sequence for your needs.

#
1)10111000101
2)11011100100
3)10111100111
4)01101000101
5)11111010101
6)11111001000
7)00100000101
8)10111000101
9)10101010100
10)10111011101
11)11111000101
12)01111001110
13)10111010100
14)10011000111
15)10111000111
16)11111011101
17)00011000101
18)10101000110
19)11111010100
20)11111000100
21)00101000101
22)10111010101
23)10011000101
24)001

Now, let’s look at the total number of binary digits we’ll generate. In this case, we have 256 bits—which breaks down into 23 full sets of 11 bits each, with a partial 24th set containing only three bits.

Later, you’ll see why this matters, but for now, just understand that every 11-bit segment will be converted into a mnemonic seed word. If we divide 256 bits by 11, we get 23.27 words, which isn’t a whole number. Since a mnemonic seed must contain whole words, we don’t yet have enough bits to complete a 24-word seed.

To fix this, we need eight more bits, bringing our total to 264 bits. This allows us to cleanly divide the bits into 24 full sets of 11, each corresponding to a word in the mnemonic phrase. As you’ll see later, these final eight extra bits serve a crucial role in the process.

Calculate the Checksum

The last eight missing digits need to be calculated to create what's called a "checksum."

So, what exactly is a checksum? A checksum is a way for computers to verify that you haven't made a mistake when entering things like your credit card number or bank account details. It's a helpful tool that lets the computer alert you if you've made a typo—this is especially useful when dealing with your Bitcoin private key!

Generate the Hash Output

To calculate the checksum, you'll need to use your air-gapped computer (though it can be done by hand, but it is not covered in this guide as it is a long process). On Linux, open a terminal and type the command below. Be sure to replace my binary digits with your own random binary digits. Keep in mind that the sequence should be entered as one long line, even though it might look broken up in this example.

echo 1011100010111011100100101111001110110100010111111010101111110010000010000010110111000101101010101001011101110111111000101011110011101011101010010011000111101110001111111101110100011000101101010001101111101010011111000100001010001011011101010110011000101001 | shasum -a 256 -0

In simpler terms, this command takes the binary sequence you have just created with your dice, applies the SHA-256 hash function, and produces a unique output (the checksum) that verifies the seed is correct. This checksum is important for ensuring that no errors or typos were made when creating the seed.

That said, our output is:

52831c8346d7423d26648b51490f2d7ae0ddf172956f241a6bb8bdc0d887c292 ^-

Convert HEX to Binary

Now, let’s begin calculating the checksum.

Our goal is to convert the first two digits of our hash output into their four-digit binary equivalents. In this case, we have "5" and "2", which are in hexadecimal format. Hexadecimal is a number system that goes beyond the usual digits 0 to 9 by using letters A to F to represent the values 10 to 15.

The conversion process is showed in the below chart and consists of two steps:

1. HEX to Decimal

The first step is to convert the two hexadecimal digits into decimal numbers.

In our case, the hex digits "5" and "2" are directly equivalent to 5 and 2 in decimal. But if we had a "b" in the hexadecimal number, it would convert to 11 in decimal.

2. Decimal to Binary

Next, we convert the decimal numbers into their four-digit binary equivalents.

HEXDecimalBinary
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
a101010
b111011
c121100
d131101
e141110
f151111

The result is:

  • 5 in binary is 0101 (4 bits)

  • 2 in binary is 0010 (4 bits)

These four-digit binary numbers are the checksum, which we will add to the 24th line to finish off the final set of 11 binary digits. At this point, you should have a total of 264 digits (see the below diagram).

#
1)10111000101
2)11011100100
3)10111100111
4)01101000101
5)11111010101
6)11111001000
7)00100000101
8)10111000101
9)10101010100
10)10111011101
11)11111000101
12)01111001110
13)10111010100
14)10011000111
15)10111000111
16)11111011101
17)00011000101
18)10101000110
19)11111010100
20)11111000100
21)00101000101
22)10111010101
23)10011000101
24)00101010010

Binary to Decimal

Each of the 24 lines, consisting of 11 binary digits, must be converted to a decimal number manually on your airgapped computer or by using paper and pen. This is important because using online tools to convert binary to decimal could expose your seed phrase, which would compromise your security.

A bit about binary: In the binary system, there are only two digits: 0 and 1. The digits we’re familiar with (2, 3, 4, etc.) don’t exist here. So when counting, we start with 0, then 1. But after 1, there's no "2." The next number after 1 is “10” in binary, which is read as "one, zero" (not "ten"). This represents the decimal number 2. The next binary number is “11” ("one, one"), which is 3 in decimal.

In binary, the numbers increase like this:

  • “100” is 4,

  • “101” is 5,

  • “110” is 6,

  • “111” is 7,

  • “1000” is 8,

  • “1001” is 9, and so on.

With 11 binary digits, the smallest number is 0 (00000000000), and the largest is 2047 (11111111111).

To convert each line of binary digits, simply take each 11-digit sequence and convert it to decimal. You can do this in 2 ways:

Airgapped Computer

For example, to convert the first line, whose number is 10111000101, you’d type:

echo $((2#10111000101))

This will output 1477. You just need to replace the binary digits in the command with each 11-digit binary number and run the calculation.

Paper & Pen

At the top left of your page, write the following numbers from left to right, aligned with the binary digits below. Start with 1024 above the first column, then 512 above the second column, 256 above the third, and so on, halving the number each time until you reach 1 above the last (eleventh) column on the right.

Now, for each binary digit:

  • If the digit is 1, write down the decimal number directly above it.

  • If the digit is 0, write 0 or skip that number.

Add up all the numbers you wrote down. This sum is the decimal equivalent of the binary number.

For example, to convert the first line, whose number is 10111000101, you'd do:

1024+0+256+128+64+0+0+0+4+0+1

This will output 1477 which is the same number we got with the airgapped computer method.

Repeat this process for all 24 rows. You’ll now have 24 decimal numbers, each ranging from 0 to 2047.

#10245122561286432168421TOT
1)101110001011477
2)110111001001764
3)101111001111511
4)01101000101837
5)111110101012005
6)111110010001992
7)00100000101261
8)101110001011477
9)101010101001364
10)101110111011501
11)111110001011989
12)01111001110974
13)101110101001492
14)100110001111223
15)101110001111479
16)111110111012013
17)00011000101197
18)101010001101350
19)111110101002004
20)111110001001988
21)00101000101325
22)101110101011493
23)100110001011221
24)00101010010338

Look up BIP39 Words

BIP39 (Bitcoin Improvement Proposal 39) defines a list of 2048 words, arranged alphabetically. Each word in the list corresponds to a specific position, which is used to map a binary number to its matching word. For example, if the binary number you calculate corresponds to the number 1477, the word in that position on the list is "reward”.

  • The smallest possible value is 0 (binary: 00000000000), which corresponds to the word “abandon” — the first word on the list.

  • The largest possible value is 2047 (binary: 11111111111), which corresponds to the word “zoo” — the last word on the list.

Important

Computers count starting at 0. So, for example, the fifth item in a list is actually item number 4 (not 5). This is crucial when looking up words on the BIP39 list.

The official BIP 39 word list on GitHub displays line numbers starting from 1, not 0. This creates a slight mismatch between what you see in the list and the actual position in the BIP 39 specification.

For instance, the first 11-digit binary number you’ve calculated equals 1477 in decimal. When you look at the GitHub list, you’ll find the word in line 1478 (since GitHub’s line numbers start at 1). This word will be “reward.”

Go ahead and look up each decimal value — remember to add 1 to your calculated result to match the line numbers on GitHub — and find the corresponding word for all 24 binary rows.

If you’ve made it this far, congratulations! You’ve now created a valid 24-word Bitcoin mnemonic seed.

#BIP39GitHubWord
1)14771478reward
2)17641765symptom
3)15111512rude
4)837838hamster
5)20052006wide
6)19921993weekend
7)261262camera
8)14771478reward
9)13641365pride
10)15011502roof
11)19891990weather
12)974975keep
13)14921493ritual
14)12231224ocean
15)14791480rib
16)20132014wing
17)197198board
18)13501351potato
19)20042005whisper
20)19881989weasel
21)325326chunk
22)14931494rival
23)12211222obvious
24)338339clean

Now, the last step is to use your seed phrase to verify that the 24 words were correctly generated. You can install a software wallet, like Sparrow Wallet, on your airgapped computer and enter the seed words. If they’re rejected, it means there was an error during the process. Sparrow will quickly show an error if there's a mismatch, typically because the checksum doesn't match. So, take your time and carefully double-check each step!

Backup your Seed

Your Bitcoin seed phrase is the key to your funds. If lost or compromised, your Bitcoin is gone forever. That’s why securing it properly is critical. While paper and digital backups can degrade, get lost, or be destroyed, metal seed storage offers a durable, fireproof, and waterproof solution.

Why Use Metal Seed Storage?

  • Fire & Water Resistance: Unlike paper, metal plates withstand extreme temperatures and flooding.

  • Durability: Metal does not degrade over time like paper or electronic storage.

  • Tamper Resistance: Securely stored metal backups prevent unauthorized access.

  • Longevity: A well-engraved or stamped metal seed plate can last a lifetime, ensuring your Bitcoin is recoverable even decades later.

How to Store Your Metal Backup Safely

  • Keep it in a secure location (safe, hidden vault, or safety deposit box).

  • Consider splitting your seed into multiple secure locations.

  • Avoid storing it digitally or in places prone to theft or destruction.

By using a high-quality metal seed storage solution, you ensure your Bitcoin remains secure, regardless of disasters or time. Your Bitcoin is only as safe as your seed backup, protect it wisely.