> For the complete documentation index, see [llms.txt](https://programmingblockchain.gitbook.io/programmingblockchain/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://programmingblockchain.gitbook.io/programmingblockchain/key_generation/bip_39.md).

# Mnemonic Code for HD Keys (BIP39)

As you have seen, generating HD keys is easy. However, what if we want an easy way to transmit such a key by telephone or hand writing?

Cold wallets like Trezor, generate the HD Keys from a sentence that can easily be written down. They call such a sentence “the seed” or “mnemonic”. And it can eventually be protected by a password or a PIN. ![](/files/-LL8tRwc_WbUqltY4dtK)

The language that you use to generate your 'easy to write' sentence is called a **Wordlist**.

![](/files/-LL8tRwe3lxxlQLIGsGo)

```csharp
Mnemonic mnemo = new Mnemonic(Wordlist.English, WordCount.Twelve);
ExtKey hdRoot = mnemo.DeriveExtKey("my password");
Console.WriteLine(mnemo);
```

`minute put grant neglect anxiety case globe win famous correct turn link`

Now, if you have the mnemonic and the password, you can recover the **hdRoot** key.

```csharp
mnemo = new Mnemonic("minute put grant neglect anxiety case globe win famous correct turn link",
                Wordlist.English);
hdRoot = mnemo.DeriveExtKey("my password");
```

Currently supported languages for **wordlist** are, English, Japanese, Spanish, Chinese (simplified and traditional).
