{"id":20228947,"url":"https://github.com/jambolo/bip39","last_synced_at":"2026-04-29T21:37:20.364Z","repository":{"id":78056055,"uuid":"260798807","full_name":"jambolo/bip39","owner":"jambolo","description":"BIP-39 tools using Node and implemented in Coffeescript","archived":false,"fork":false,"pushed_at":"2023-12-17T21:39:48.000Z","size":868,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-26T20:50:08.561Z","etag":null,"topics":["bip39","bitcoin","coffeescript","node-js"],"latest_commit_sha":null,"homepage":"","language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jambolo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-03T00:14:47.000Z","updated_at":"2025-12-04T03:45:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"bfa9b6f1-1415-4d96-a116-d73d3fdadc3a","html_url":"https://github.com/jambolo/bip39","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/jambolo/bip39","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jambolo%2Fbip39","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jambolo%2Fbip39/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jambolo%2Fbip39/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jambolo%2Fbip39/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jambolo","download_url":"https://codeload.github.com/jambolo/bip39/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jambolo%2Fbip39/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32445543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T20:22:27.477Z","status":"ssl_error","status_checked_at":"2026-04-29T20:22:26.507Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bip39","bitcoin","coffeescript","node-js"],"created_at":"2024-11-14T07:33:42.617Z","updated_at":"2026-04-29T21:37:20.342Z","avatar_url":"https://github.com/jambolo.png","language":"CoffeeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bip39\nBIP-39 tools using Node and implemented in Coffeescript\n\n## encode\nEncodes the input into a mnemonic string.\n\n#### Command syntax\n\n    encode [--words \u003cnumber\u003e] [--strict] [--language \u003clanguage\u003e] [--json] (hex|base58|base64) \u003cinput\u003e\n\n#### Formats (one must be specified)\n\n| Format | Description |\n|--------|-------------|\n| hex    | Input is a hex value |\n| base58 | Input is a Bitcoin address or private key encoded using base-58 |\n| base64 | Input is a base-64 value |\n\n#### Options\n\n| Option         | Description |\n|----------------|-------------|\n| --words, -n    | Number of words to be generated. The input is truncated or padded with 0's if it doesn't match the specified value. If --strict is specified and the input doesn't match, the encode will fail. |\n| --strict, -s   | The length of the input must match the number of words (if specified). |\n| --language, -l | The wordlist to use. Currently, only *english* is supported and it is the default. |\n| --json, -j     | Outputs the words in json format |\n\n#### Notes\n\n* The size of a BIP-39 source must be a multiple of 32 bits. If the size of the input is not a multiple of 32 bits, then it is automatically padded with 0's.\n* If the input is _automatically_ padded (i.e, padded without the use of `--words` ), the length of the input (up to 255) is stored in the last byte of the padding. This is an incomplete solution to the problem of the varying size of a WIF-encoded private key. If you don't want this value in the padding, use `--words`.\n\n## decode\nDecodes a mnemonic string back to the source value.\n\n#### Command syntax\n\n    decode [--language \u003clanguage\u003e] (address|wif|base58|base64|hex) \u003cmnemonic phrase\u003e\n\n#### Formats (one must be specified)\n\n| Format   | Description |\n|----------|-------------|\n|  address | Decoded into a bitcoin address.  |\n|  wif     | Decoded into a WIF-formatted private key. |\n|  base58  | Output format is base-58. |\n|  base64  | Output format is base-64. |\n|  hex     | Output format is hex. |\n\n#### Options\n\n| Option          | Description |\n|-----------------|-------------|\n|  --language, -l | The wordlist to be used to validate the mnemonic phrase. Currently, only *english* is supported and it is the default. (optional) |\n\n\n## seed\nGenerates a seed from a mnemonic string.\n\n#### Command syntax\n\n    seed [--passphrase \u003cpassphrase\u003e] [--validate] [--language \u003clanguage\u003e] \u003cmnemonic phrase\u003e\n\n#### Options\n\n| Option           | Description |\n|------------------|-------------|\n| --passphrase, -p | Passphrase. (optional) |\n| --validate, -v   | If specified, the mnemonic phrase is validated. (optional) |\n| --language, -l   | The wordlist used to validate the mnemonic phrase. Currently, only *english* is supported and it is the default. (optional) |\n\n## share\nUses Shamir Secret Sharing or XOR to create multiple mnemonic phrases that can be joined to recreate the original.\n\n#### Command syntax\n\n    share [--language \u003clanguage\u003e] [--json] sss \u003cM\u003e \u003cN\u003e \u003cmnemonic phrase\u003e\n    share [--language \u003clanguage\u003e] [--json] xor \u003cN\u003e     \u003cmnemonic phrase\u003e\n\n#### Methods\n\n| Method | Description |\n|--------|-------------|\n| sss    | Shamir Secret Sharing |\n| xor    | XOR |\n\n#### Sharing Parameters\n\n| Sharing Parameter  | Description |\n|--------------------|-------------|\n| M                  | Minimum shares necessary to recreate the original. |\n| N                  | Number of shares |\n\n#### Options\n\n| Option         | Description |\n|----------------|-------------|\n| --language, -l | The wordlist to be used. Currently, only *english* is supported and it is the default. (optional) |\n| --json, -j     | Outputs the words in json format. (optional) |\n\nOne method of sharing is a secret is Shamir Secret Sharing (SSS). A description can be found here: [Wikipedia](https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing). Using SSS you can generate *N* shares, of which *M* are required in order to recreate the original mnemonic.\n\nAnother method for for sharing a secret is called the XOR method. This implementation is based on the implementation described here: [XOR Seed Splitting: Theory and Practice](https://github.com/mmgen/mmgen/wiki/XOR-Seed-Splitting:-Theory-and-Practice). In this scheme, all shares are required.\n\nThis program decodes the mnemonic and generates the shares, which are then re-encoded. Note that while the encoded share phrases have the standard BIP-39 error-detection, there is no way to ensure that the value recreated by joining shares matches the original value.\n\n## join\nUses Shamir Secret Sharing or XOR method to recreate the original mnemonic phrase from shares read from stdin.\n\n#### Command syntax\n\n    join [--language \u003clanguage\u003e] [--json] (sss|xor)\n\n#### Methods (one must be specified)\n\n| Method | Description |\n|--------|-------------|\n| sss    | Shamir Secret Sharing |\n| xor    | XOR |\n\n#### Options\n\n| Option         | Description |\n|----------------|-------------|\n| --language, -l | The wordlist to be used. Currently, only *english* is supported and it is the default. (optional) |\n| --json, -j     | Outputs the words in json format. (optional) |\n\nThe shares are read from stdin, one per line and joined using SSS or the XOR method.\n\n## missing\nGenerates all possible mnemonic phrases, given a partial mnemonic phrase.\n\n#### Command syntax\n\n    missing [--language \u003clanguage\u003e] [--indexes \u003clist\u003e|--end|--any] [--count \u003cN\u003e] [--verbose] [--json] \u003cmnemonic phrase\u003e\n\n#### Options\n\n| Option         | Description |\n|----------------|-------------|\n| --any, -a      | Signifies that the missing words in the phrase can be at any location. (optional) |\n| --count, -n    | Total number of words in the mnemonic phrase. (default is a multiple of 3 and depends on how many are known) |\n| --end, -e      | Signifies that the last words in phrase are missing. (default) |\n| --indexes, -i  | List of the possible locations of the missing words. The first location is 1. Use - to end the list if it is not followed by another option. (optional) |\n| --json, -j     | The possible mnemonics are listed in json format. (optional)\n| --language, -l | The wordlist to be used. Currently, only *english* is supported and it is the default. (optional)\n| --verbose, -v  | Displays helpful information in addition to the results. (optional)\n\n#### Examples:\n\n* All but the last two words of a 12-word mnemonic are known:\n\n      missing crisp three spoil enhance dial client moment melt parade aisle\n\n* Two missing words could be anywhere:\n\n      missing --any crisp three enhance dial client melt parade aisle analyst case\n\n* The two missing words could be at locations 1, 3, or 7:\n\n      missing --indexes 1 3 7 --count 12 crisp three enhance dial client melt parade aisle analyst case\n\n* A count should be specified because eight known words implies a 9-word phrase and this one has 12 words:\n\n      missing --count 12 crisp three spoil enhance dial client moment melt:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjambolo%2Fbip39","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjambolo%2Fbip39","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjambolo%2Fbip39/lists"}