{"id":20618609,"url":"https://github.com/allanchain/wordpass","last_synced_at":"2026-06-10T07:31:11.376Z","repository":{"id":108641919,"uuid":"331834632","full_name":"AllanChain/wordpass","owner":"AllanChain","description":"A English words-based password generator","archived":false,"fork":false,"pushed_at":"2021-06-24T13:14:00.000Z","size":755,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-06T19:44:30.717Z","etag":null,"topics":["password-generator","scrypt","svelte","vitejs"],"latest_commit_sha":null,"homepage":"https://allanchain.github.io/wordpass/","language":"Svelte","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/AllanChain.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":"2021-01-22T04:19:08.000Z","updated_at":"2021-06-24T13:13:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"a8aa095f-0d2d-4057-bebe-e65b629d3eca","html_url":"https://github.com/AllanChain/wordpass","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/AllanChain/wordpass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanChain%2Fwordpass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanChain%2Fwordpass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanChain%2Fwordpass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanChain%2Fwordpass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AllanChain","download_url":"https://codeload.github.com/AllanChain/wordpass/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanChain%2Fwordpass/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34142637,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["password-generator","scrypt","svelte","vitejs"],"created_at":"2024-11-16T12:09:01.471Z","updated_at":"2026-06-10T07:31:11.371Z","avatar_url":"https://github.com/AllanChain.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wordpass\n\nWordpass is a English words-based password generator.\n\n- [Why Wordpass?](#why-wordpass)\n- [How Secure and How to Secure?](#how-secure-and-how-to-secure)\n- [Password Restrictions](#password-restrictions)\n- [Config Option Reference](#config-option-reference)\n- [Word Lists](#word-lists)\n  - [Password Creator Words List](#password-creator-words-list)\n  - [Medium of 10k English Words](#medium-of-10k-english-words)\n- [License](#license)\n\n## Why Wordpass?\n\nWordpass is inspired by xkcd [*Password Strength*](https://xkcd.com/936/), project [vault](https://github.com/jcoglan/vault), and many more.\n\nThe core concept is to generate word-based password from a master password and service name, so that the password is both unguessable, typeable and rememberable (at least for a short time).\n\nTypeable is important, especially on Android devices. It is **risky to copy password to clipboard**, and even more risky if the you or the system have turned on clipboard keeping. So **keep security in mind when copying password**.\n\n## How Secure and How to Secure?\n\nAccording to [zxcvbn](https://www.npmjs.com/package/zxcvbn), password `marked anton fibre` takes 10\u003csup\u003e14.2\u003c/sup\u003e guesses to crack, getting score 4 (very unguessable: strong protection from offline slow-hash scenario), while simply `marked anton` takes 10\u003csup\u003e8.2\u003c/sup\u003e guesses to crack, getting score 3 (moderate protection from offline slow-hash scenario). Not to mention you can even make the password longer.\n\nHowever, it's a slightly different story if the cracker knows the word list. For example, if you are using a word list with 5k words, using 4 words in generated password, then in a simplified model, it takes 5000\u003csup\u003e4\u003c/sup\u003e / 2 guesses to crack, that is 10\u003csup\u003e14.5\u003c/sup\u003e, very unguessable.\n\nWordpass uses scrypt algorithm in the background. Although scrypt is typically used to store password in hash, it can also be used to generate passwords. The core concept is the salt. In wordpass, `salt = \u003ccustom prefix\u003e + \u003cservice name\u003e + \u003ca pre-generated, random suffix\u003e`. Salt protects the password from rainbow table attack to some extent.\n\nImaging a bad guy knows one of your passwords. If you followed a bad practice, using the same password for every service, or having a strong relationship between passwords (e.g. `MyPussw0rd4Google` and `MyPussw0rd4Apple`), then your other accounts are risky. However if the bad guy knows one of your password generated by wordpass, even if he knows that you use wordpass, he cannot guess your another password, thanks for hashing. Alright, even if he generated a rainbow table just for wordpass, he still cannot guess your master password or password generated for other services without knowing your custom salt. Thus **I highly recommend that you should set custom salt prefix**.\n\nHowever, as MIT license says, wordpass comes **without warranty or liability**. So take your own risk using it!\n\n## Password Restrictions\n\nSome services has stupid restrictions on passwords. wordpass offers a few ways o customize the result.\n\n- `capitalize`\n- `separator`\n  - a containing digits or punctuation\n  - set to `$random$` to use random symbol separator\n- `appendSymbol`\n- `appendNumber`\n\nEither check  to capitalize each word, or set custom\n\n## Config Option Reference\n\nIf you cannot remember all these configurations, set to resonable values and write them down.\n\n```typescript\nexport interface WordpassGeneratorOptions {\n  /** scrypt CPU / memory cost parameter */\n  N?: number\n  /** scrypt block size parameter */\n  r?: number\n  /** scrypt parallelization parameter */\n  p?: number\n  /** password strength, how amny words to generate */\n  strength?: number\n  /** prefix to scrypt salt */\n  saltPrefix?: string\n  /** separator to join words. `$random$` to use random symbol separator */\n  separator?: string\n  /** capitalize each word */\n  capitalize?: boolean\n  /** append a random symbol to password */\n  appendSymbol?: boolean\n  /** append a random number to password */\n  appendNumber?: boolean\n}\n\nexport interface WordpassAppOptions extends WordpassGeneratorOptions {\n  /** save config when click generate */\n  saveConfig?: boolean\n  /** word list URL */\n  wordList?: string,\n  /** check the phrase and options are previously known\n   *\n   * There are time when the user is not confident with their inputed\n   * phrase or options. This option enables the app to store password\n   * generated with the phrase and option, setting service to WordPass.\n   * If the generated pwassword does not match previously stored one,\n   * an alert is triggerd.\n   */\n  checkTrace?: boolean\n}\n```\n\n## Word Lists\n\nWordpass comes with two word lists. And you can also use another word list, even in another language, just by pasting the word list json URL.\n\n### Password Creator Words List\n\n*From https://passwordcreator.org/*\n\nURL: `words/password-creator-9806.json`\n\nContains 9806 common English words, 3 - 7 characters.\n\n### Medium of 10k English Words\n\n*From https://github.com/first20hours/google-10000-english*\n\nURL: `words/google-10k-medium-5459.json`\n\nContains 5459 common English words, 5 - 8 characters.\n\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallanchain%2Fwordpass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallanchain%2Fwordpass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallanchain%2Fwordpass/lists"}