TypeScript icon, indicating that this package has built-in type declarations

    6.4.0 • Public • Published


    Build Status dependencies Status Code Climate JavaScript Style Guide

    Secure passwords that humans can read 🔒💬


    // pick up your style!
    yarn add semantic-password-generator
    npm install semantic-password-generator


    The Semantic Password Generator (spg) uses the official Wikipedia API to get random articles which are transformed into the passwords. Hence, to allow a better usage of the network bandwich spg generates the password in 2 steps:

    1. Load a generator with a Wikipedia article
    2. Use the generator to get passwords
    import spg from 'semantic-password-generator'
    const generator = await spg()
    const password = generator()

    You can then safely generate multiple (similar) passwords with the same generator.

    while (passwords.length < 50) {

    The generator accepts a length argument. Note that the length won't be enforced. This means that if you want, say, a 10 chars length password. spg probably will return a bit longer one that you can trim if you want to. This is because spg tries to keep a logic sentences as much as possible and forcing a hard length will cut the last word almost all the times.

    const spg = require('semantic-password-generator')
    spg().then((generator) => {
      const password = generator(32)

    Notice that internally spg ensures a minimum password length of 8. And a maximum as large as the Wikipedia article can provide. If you need less than 8 (please don't) you can trim it. If you want a larger one you can combine multiple generated passwords.


    To explore the lib and explore it check out the /demo directory. Here's a snapshot of the final component:

    import React from 'react'
    import spg from 'semantic-password-generator'
    class App extends React.Component {
      constructor (props) {
        this.state = { password: '' }
      async renewGenerator () {
        this.generator = await spg()
      onClickGenerate () {
        return () => {
          if (this.generator) {
            // always renew the generator to get 100% different passwords
            // using the current generator create a new one with default values
              password: this.generator()
      render () {
        return (
            <button onClick={this.onClickGenerate()}>

    Dependencies (6)

    Dev Dependencies (13)


    npm i semantic-password-generator

    DownloadsWeekly Downloads






    Unpacked Size

    66.6 kB

    Total Files


    Last publish


    • sospedra