A simple and complete bip39 mnemonic (passphrase) and entropy generator in typescript.
This package is similar to bitcoinjs/bip39 but lighter, strongly typed and without the heavy dependency to Buffer
in order to be easily used in the browser.
Install using yarn or npm.
npm install @it-tools/bip39
# or
yarn add @it-tools/bip39
And import :
// EMAScript import
import { entropyToMnemonic, mnemonicToEntropy } from '@it-tools/bip39';
// Or Common JS:
const { entropyToMnemonic, mnemonicToEntropy } = require('@it-tools/bip39');
const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e');
console.log(passphrase);
// alert record income curve mercy tree heavy loan hen recycle mean devote
Default language is english
. The entropy must an hexadecimal string with a length >= 16 or <= 32 and that is a multiple or 4.
import { entropyToMnemonic } from '@it-tools/bip39';
const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e');
console.log(passphrase);
// alert record income curve mercy tree heavy loan hen recycle mean devote
Default language is english
.
import { mnemonicToEntropy } from '@it-tools/bip39';
const entropy = mnemonicToEntropy('alert record income curve mercy tree heavy loan hen recycle mean devote');
console.log(entropy);
// 063679ca1b28b5cfda9c186b367e271e
import { generateEntropy } from '@it-tools/bip39';
// Default is a 32 long entropy
const entropy = generateEntropy();
console.log(entropy);
// 063679ca1b28b5cfda9c186b367e271e
import { generateEntropy } from '@it-tools/bip39';
const entropy = generateEntropy(16);
console.log(entropy);
// b063679ca1b28b5c
To use another language, just import the wordlist an use it in the function:
import { entropyToMnemonic, mnemonicToEntropy, frenchWordList } from '@it-tools/bip39';
const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e', frenchWordList);
console.log(passphrase);
// adroit pastèque glace commande lanceur tarder forcer insigne fougère paternel label culminer
const entropy = entropyToMnemonic('adroit pastèque glace commande lanceur tarder forcer insigne fougère paternel label culminer', frenchWordList);
console.log(entropy);
// a063679ca1b28b5cfda9c186b367e271e
Available languages are:
- chineseSimplified:
import { chineseSimplifiedWordList } from '@it-tools/bip39';
- chineseTraditional:
import { chineseTraditionalWordList } from '@it-tools/bip39';
- czech:
import { czechWordList } from '@it-tools/bip39';
- english:
import { englishWordList } from '@it-tools/bip39';
- french:
import { frenchWordList } from '@it-tools/bip39';
- italian:
import { italianWordList } from '@it-tools/bip39';
- japanese:
import { japaneseWordList } from '@it-tools/bip39';
- korean:
import { koreanWordList } from '@it-tools/bip39';
- portuguese:
import { portugueseWordList } from '@it-tools/bip39';
- spanish:
import { spanishWordList } from '@it-tools/bip39';
You can event define your custom language:
import { entropyToMnemonic, IWordList } from '@it-tools/bip39';
const customWordList: IWordList = {
language: 'my-language',
spacer: ' ', // character used to split word in a sentence, mainly space
words: [
'word1',
'word2',
// ...
],
};
const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e', customWordList);
Pull requests are welcome ! Feel free to contribute.
Coded with ❤️ by Corentin Thomasset.
Inspired from bitcoinjs/bip39
This project is under the MIT license.