PHPackages                             furqansiddiqui/bip39-mnemonic-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. furqansiddiqui/bip39-mnemonic-php

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

furqansiddiqui/bip39-mnemonic-php
=================================

BIP39 Mnemonics implementation in PHP

0.2.1(1y ago)56176.9k↓25.6%2318MITPHP

Since Feb 1Pushed 1y ago2 watchersCompare

[ Source](https://github.com/furqansiddiqui/bip39-mnemonic-php)[ Packagist](https://packagist.org/packages/furqansiddiqui/bip39-mnemonic-php)[ RSS](/packages/furqansiddiqui-bip39-mnemonic-php/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (2)Versions (10)Used By (18)

BIP39 Mnemonic
==============

[](#bip39-mnemonic)

Mnemonic BIP39 implementation in PHP

Installation
------------

[](#installation)

### Prerequisite

[](#prerequisite)

- PHP ^8.2
- [ext-mbstring](http://php.net/manual/en/book.mbstring.php) (MultiByte string PHP ext. for non-english wordlist)

### Composer

[](#composer)

`composer require furqansiddiqui/bip39-mnemonic-php`

Generating a Secure Mnemonic
----------------------------

[](#generating-a-secure-mnemonic)

Generate a mnemonic using a secure PRNG implementation.

### `BIP39::fromRandom`

[](#bip39fromrandom)

ArgumentTypeDescription$wordList`AbstractLanguage`Langage instance for wordlist$wordCountintNumber of words (12-24)**Returns instance of [Mnemonic](#mnemonic-class) class.**

#### Example:

[](#example)

```
// Generate entropy using PRNG
$mnemonic = \FurqanSiddiqui\BIP39\BIP39::fromRandom(
    \FurqanSiddiqui\BIP39\Language\English::getInstance(),
    wordCount: 12
);

# array(12) { [0]=> string(4) "tape" [1]=> string(8) "solution" ... [10]=> string(6) "border" [11]=> string(6) "sample" }
var_dump($mnemonic->words);
# string(32) "ddd9dbcd1b07a09c16f080637818675f"
var_dump($mnemonic->entropy);
```

Entropy to Mnemonic
-------------------

[](#entropy-to-mnemonic)

Generate mnemonic codes from given entropy

### `BIP39::fromRandom`

[](#bip39fromrandom-1)

ArgumentTypeDescription$entropy`AbstractByteArray`Entropy$wordList`AbstractLanguage`Langage instance for wordlist**Returns instance of [Mnemonic](#mnemonic-class) class.**

#### Example:

[](#example-1)

```
$mnemonic = \FurqanSiddiqui\BIP39\BIP39::fromEntropy(
    \Charcoal\Buffers\Buffer::fromBase16("ddd9dbcd1b07a09c16f080637818675f"),
    \FurqanSiddiqui\BIP39\Language\English::getInstance()
);

# array(12) { [0]=> string(4) "tape" [1]=> string(8) "solution" ... [10]=> string(6) "border" [11]=> string(6) "sample" }
var_dump($mnemonic->words);
```

Mnemonic sentence/Words to Mnemonic
-----------------------------------

[](#mnemonic-sentencewords-to-mnemonic)

Generate entropy from mnemonic codes

### `BIP39::fromWords`

[](#bip39fromwords)

ArgumentTypeDescription$wordsArray&lt;string&gt;Array of mnemonic codes$wordList`AbstractLanguage`Langage instance for wordlist$verifyChecksumboolDefaults to `TRUE`, computes and verifies checksum as per BIP39 spec.**Returns instance of [Mnemonic](#mnemonic-class) class.**

#### Example:

[](#example-2)

```
$mnemonic = \FurqanSiddiqui\BIP39\BIP39::fromWords(
    ["tape", "solution", "viable", "current", "key",
        "evoke", "forward", "avoid", "gloom", "school", "border", "sample"],
    \FurqanSiddiqui\BIP39\Language\English::getInstance()
);

#string(32) "ddd9dbcd1b07a09c16f080637818675f"
var_dump($mnemonic->entropy);
```

Mnemonic Class
--------------

[](#mnemonic-class)

### `readonly class` Mnemonic

[](#readonly-class--mnemonic)

This lib will create this Mnemonic object as a result:

PropertyTypeDescriptionlanguagestringLanguage name (as it was passed to constructor of wordlist class)wordsArray&lt;string&gt;Mnemonic codeswordsIndexArray&lt;int&gt;Position/index # of each mnemonic code corresponding to wordlist usedwordsCountintNumber of mnemonic codes (i.e. 12, 15, 18, 21 or 24)entropystringEntropy in hexadecimal encoding### Generating Seed with Passphrase

[](#generating-seed-with-passphrase)

#### `Mnemonic->generateSeed`

[](#mnemonic-generateseed)

Generates seed from a mnemonic as per BIP39 specifications.

ArgumentTypeDescription$passphrasestringDefaults to empty string ("")$bytesintNumber of bytes to return, defaults to 64.**Returns**:

TypeDescriptionstringReturns computed PBKDF2 hash in RAW BINARY as stringGenerate non-english mnemonic codes
-----------------------------------

[](#generate-non-english-mnemonic-codes)

Check `AbstractLanguage` and `AbstractLanguageFile` classes. [English](src/Language/English.php) class has all 2048 words pre-loaded instead of reading from a local file every time. To implement other languages or custom set of 2048 words, check [ChineseWords.php](tests/ChineseWords.php) file in `tests` directory for example of implementation.

```
class CustomWords extends \FurqanSiddiqui\BIP39\Language\AbstractLanguageFile
{
    /**
     * @return static
     */
    protected static function constructor(): static
    {
        return new static(
            language: "some_language",
            words: static::wordsFromFile(
                pathToFile: "/path/to/wordlist.txt",
                eolChar: PHP_EOL
            ),
            mbEncoding: "UTF-8"
        );
    }
}
```

and then use in place of `AbstractLanguage` where required:

```
CustomWords::getInstance()
```

Test Vectors
------------

[](#test-vectors)

Include PHPUnit tests for all test vectors mentioned in [official BIP-0039 specification](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#user-content-Test_vectors). Use following command to execute all tests using `phpunit.phar`

`php phpunit.phar --bootstrap vendor/autoload.php tests/`

###  Health Score

43

—

FairBetter than 91% of packages

Maintenance34

Infrequent updates — may be unmaintained

Popularity48

Moderate usage in the ecosystem

Community23

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~287 days

Recently: every ~298 days

Total

8

Last Release

653d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/11485189?v=4)[M. Furqan Siddiqui](/maintainers/furqansiddiqui)[@furqansiddiqui](https://github.com/furqansiddiqui)

---

Top Contributors

[![furqansiddiqui](https://avatars.githubusercontent.com/u/11485189?v=4)](https://github.com/furqansiddiqui "furqansiddiqui (30 commits)")

---

Tags

mnemonicsbip39BIP-0039

### Embed Badge

![Health badge](/badges/furqansiddiqui-bip39-mnemonic-php/health.svg)

```
[![Health](https://phpackages.com/badges/furqansiddiqui-bip39-mnemonic-php/health.svg)](https://phpackages.com/packages/furqansiddiqui-bip39-mnemonic-php)
```

###  Alternatives

[pocketmine/pocketmine-mp

A server software for Minecraft: Bedrock Edition written in PHP

3.5k74.6k86](/packages/pocketmine-pocketmine-mp)[godruoyi/php-snowflake

An ID Generator for PHP based on Snowflake Algorithm (Twitter announced).

8582.3M61](/packages/godruoyi-php-snowflake)[bitwasp/bitcoin

PHP Bitcoin library with functions for transactions, signatures, serialization, Random/Deterministic ECDSA keys, blocks, RPC bindings

1.1k533.2k43](/packages/bitwasp-bitcoin)[bitwasp/buffertools

Toolbox for working with binary and hex data. Similar to NodeJS Buffer.

65764.4k41](/packages/bitwasp-buffertools)[pocketmine/math

PHP library containing math related code used in PocketMine-MP

45573.2k14](/packages/pocketmine-math)[pocketmine/nbt

PHP library for working with Named Binary Tags

42574.4k13](/packages/pocketmine-nbt)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
