How to generate / create own custom 24 word mnemonic seed phrases?
This is a quick topic for anyone who is looking to create their own 12 / 24 word custom mnemonic seed phrases. Recently one of our users asked us “Is it possible to create my own 24 word seed and use it on Ledger Nano S instead of the auto generated one?”.
Sure, you can generate your own custom mnemonic seed phrases and use them on Hardware wallets or any BIP39 compatible wallets. But this method is highly not recommended.
Here we’ll show you the possible ways in which you can create your own mnemonic code. But first let us understand why the manually generated seed phrases will be less secure and why you should rely on the random generation.
BIP39 Mnemonic
BIP39 (Bitcoin Improvement Proposal) is a mnemonic code or sentence (a group of easy to remember words) used for generating hierarchically deterministic keys. Bitcoin and other wallet applications use hierarchical deterministic key generation process to theoretically derive infinite number of cryptographic secret from a single seed. That is the cryptocurrency public addresses and their private keys are all derived from a single master seed.
BIP39 is the industry standard for deterministic keys. Most hardware wallets such as Ledger, Trezor, Keepkey and many other hierarchical deterministic (HD) wallet uses BIP39 for the generation of master seed. Among them most wallet uses the 24 word mnemonic by default. It consist of random 24 words out of the 2048 words found on the BIP39 English word list.
Example of 24 word BIP39 mnemonic:
boss rural month arm exit elegant eight grain palace biology pistol control outside album slab top boil absorb tree mean street giggle head frozen
Generating custom mnemonic seed
From the standard list of 2048 words you can pick your own combination of 24 words and it will work. But it does not work as expected. Meaning it won’t be a valid seed. Because the order require a particular structure and the last word especially contains checksum.
You could probably pick any 23 words and experiment with the last word. But since the last seed (24th word) of mnemonic phrase is a checksum not every word will work. Even if you’ve generated a valid seed manually it is highly not recommended. Why? Human brain isn’t really good at randomness. So basically any seed created by an user would be less secure.
By generating your own seed you are making it easier for someone to figure out. Also remember that there are bots that can search for mnemonic phrases that follows a certain pattern and aren’t generated in a random way.
So if you are looking to generate your own seed then auto generation is the only way.
It is highly recommended that mnemonic phrases should be created through random word generation. There are several well established open source software / wallets that generates seeds using PRNG (Pseudorandom number generator) / CSPRNG (Cryptographically Secure Pseudorandom Number Generator). You could use Electrum and almost every hardware wallets follow the same method for seed generation.
But then you are looking to create your own 24 word seed phrase instead of the auto generated seed provided by the wallet software. In this case you can use the following tool.
Mnemonic code converter / generator – iancoleman.io
This is a 100% open source tool for generating mnemonic code. You can even use this site offline. Just right click and save the page as BIP39 – Mnemonic Code.html. You can then disconnect the Internet and generate seed offline.
It generates BIP39 seed in a truly random way. Choose 24 words and click generate to generate a new random mnemonic.
But what if you are thinking about manually generating a valid seed phrase without a computer? This is what the hardware wallets are meant for. They generate seed / keys completely offline on your device. But the thing is you don’t have a real insight on the generation process. So you decide to manually create one.
There is one method that involves offline computer, dice and a coin. But this is highly complicated and is only recommended for technically advanced users.
BIP39 Diceware – Generating mnemonic using dice and a coin
The process is simple. All you’ll need is a plain six sided dice, a coin, a pen and a piece of paper to note down the mnemonic seed.
Instead of picking the words manually you are going to generate them by rolling the dice (1-6) and flipping the coin (t/h).
More info: https://github.com/taelfrinn/Bip39-diceware
There are other methods as well to derive word list just from rolling the dice. But it may not work because you won’t get the checksum right by rolling your own. You’ll have to adjust the last word to meet the checksum requirements.
For this on GitHub there is a utility called Force30. It will tweak your custom word list to be compliant with BIP39 wallets.
More info: https://github.com/IntegersOfK/force39
Using this method you can generated a bip39 compliant wallet using manual entropy.
Use this at your own risk.
If you are really concerned about the safety of the 24 word seed and if you doubt the hardware wallet’s RNG then you should consider using a strong passphrase ( a 25th word).
Selecting a secure 25th word
BIP39 standard supports additional passphrase which is used to encrypt the 24 word mnemonic seed phrase. This is optional and this feature improves the security and flexibility. This feature is supported by all hardware wallets like Ledger, Trezor, Keepkey etc.
Learn how to setup passphrase on Ledger Nano & here is how to configure passphrase on Trezor.
The passphrase you set (25th word) can be completely random and it doesn’t have to be the words from the BIP39 English word list.
But remember that every possible passphrase derives a new set of public / private key pairs in a deterministic way. So make sure to write down the passphrase which you use and that have funds in it.
In case if you lose your passphrase but have the 24 word seed then you’ll not be able to recover the funds. You’ll need both 24 word mnemonic as well as the additional passphrase.
Also remember that passphrase are case sensitive and even a space is a valid character. So backup / write down the exact passphrase without any error. Also store a backup of it somewhere separate from the 24 word seed. For example you could store them on password managers.
Now before you go here are few tips that you need to know about recovery seed and the passphrase.
Tips on custom mnemonic, recovery seed and passphrase
If you are generating 24 word mnemonic seed phrase offline then we recommend you to write down the seed word on paper. If you’ve set an additional passphrase then write that down as well. Import the seed into your hardware wallet or an offline computer. Or you can use tools like https://iancoleman.io/bip39/. Check the 1st Bitcoin public address in the receiving tab and note this down. Then delete everything.
Then again import the 24 word seed phrase and passphrase (if set) to ensure that you have the write combination backed up.
If your BIP39 seed phrase and passphrase is generating exactly the same Bitcoin public addresses then you are good to go.
Do not make any mistakes when backing the 24 word mnemonic and passphrase. If you get any one character wrong then you’ll get a completely different set of addresses. You should only deposit crypto and start using the seed and passphrase combo only if you feel confident and that your backups are robust.
Also remember that more than coins lost in theft there are many reports of users permanently locking themselves out of their own coins by over complicating the security. So try and balance your needs for security versus your ability to remember to backup and to use your passphrase rather than select something that’s so complicated. Protecting your crypto is a balancing exercise.
Hope that explains.
You can read more about BIP 39 spec here:
https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
If you found the information on this page helpful then please do share it.
Excellent post. It’s always advisable to let the wallet software generate a mnemonic phrase rather than creating your own to avoid potential complications.