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()}>

Dependents (0)

Package Sidebar


npm i semantic-password-generator

Weekly Downloads






Unpacked Size

66.6 kB

Total Files


Last publish


  • sospedra