https://github.com/corentinth/bip39
https://github.com/corentinth/bip39
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/corentinth/bip39
- Owner: CorentinTh
- License: mit
- Created: 2022-04-08T14:37:25.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-04-09T13:10:59.000Z (almost 3 years ago)
- Last Synced: 2025-02-28T13:18:15.134Z (11 months ago)
- Language: TypeScript
- Size: 285 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README

[](https://github.com/CorentinTh/bip39/actions?query=workflow%3A%22Node+CI%22)
[](https://www.npmjs.com/package/@it-tools/bip39)
[](https://github.com/CorentinTh/bip39/blob/master/package.json)
[](LICENCE)
A simple and complete bip39 mnemonic (passphrase) and entropy generator in typescript.
This package is similar to [bitcoinjs/bip39](https://github.com/bitcoinjs/bip39) but lighter, strongly typed and without the heavy dependency to `Buffer` in order to be easily used in the browser.
## Installation
### Node JS
Install using yarn or npm.
```bash
npm install @it-tools/bip39
# or
yarn add @it-tools/bip39
```
And import :
```typescript
// 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
```
## Usage
### Create mnemonic (passphrase) from entropy
Default language is `english`. The entropy must an hexadecimal string with a length >= 16 or <= 32 and that is a multiple or 4.
```typescript
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
```
### Get entropy from a mnemonic (passphrase)
Default language is `english`.
```typescript
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
```
### Generate an entropy
```typescript
import { generateEntropy } from '@it-tools/bip39';
// Default is a 32 long entropy
const entropy = generateEntropy();
console.log(entropy);
// 063679ca1b28b5cfda9c186b367e271e
```
```typescript
import { generateEntropy } from '@it-tools/bip39';
const entropy = generateEntropy(16);
console.log(entropy);
// b063679ca1b28b5c
```
### Other languages
To use another language, just import the wordlist an use it in the function:
```typescript
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:
```typescript
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);
```
## Contribute
**Pull requests are welcome !** Feel free to contribute.
## Credits
Coded with ❤️ by [Corentin Thomasset](//corentin-thomasset.fr).
Inspired from [bitcoinjs/bip39](https://github.com/bitcoinjs/bip39)
## License
This project is under the [MIT license](LICENSE).