HD Wallets refer to Hierarchical Deterministic wallets. They are wallets that, from a root, can generate multiple "child" private keys in a deterministic way. You only need to remember the "path" of the child key.
For example hardware wallets use them - from a single root you can generate separate keys for Bitcoin (with path m/44'/0'/0'/0
) and Ethereum (path m/44'/60'/0'/0
).
A JavaScript library that support HD wallets ethereumjs-wallet.
var hdkey = require("ethereumjs-wallet/hdkey")
var bip39 = require("bip39");
// You can generate a mnemonic seed with bip39 library
var mnemonic = "seed sock milk ...";
var path = "m/44'/60'/0'/0/0";
var hdwallet = hdkey.fromMasterSeed(bip39.mnemonicToSeed(mnemonic));
var wallet = hdwallet.derivePath(path).getWallet();
var address = "0x" + wallet.getAddress().toString("hex");
console.log(address);