Skip to content

omgovich/omgopass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

omgopass

npm Build Status Dependencies

A tiny memorable password generator

Why you should consider using omgopass in your project? The library's goal is to provide the fastest and the smallest (in terms of the bundle size) password generation solution. We have performed a bunch of benchmarks against popular password generation libraries, and omgopass currently beats them all.

Install

npm install omgopass --save

Usage

import generatePassword from "omgopass";
const password = generatePassword(); // "Tu6Log5Bam4"

By default omgopass returns a random memorable password with size in range 9 to 12 characters. To change password length you should config syllablesCount, minSyllableLength and maxSyllableLength options.

Advanced Usage

generatePassword({ hasNumbers: false }); // "MunBedKod"

generatePassword({ syllablesCount: 5 }); // "Rot2Ba5Vim1My8Red4"

generatePassword({ titlecased: false }); // "si5co3ve8"

generatePassword({
  syllablesCount: 4,
  minSyllableLength: 3,
  maxSyllableLength: 4,
  hasNumbers: false,
  titlecased: true,
  separators: "-_",
  vowels: "аеиоуэюя",
  consonants: "бвгджзклмнпрстчш"
}); // "Зер_Коти-Лов_Меч"

Recipe: Generate random passphrase

Looking for long passwords that are easy to remember but hard to guess? Try to generate random passphrase instead.

generatePassword({
  minSyllableLength: 4,
  maxSyllableLength: 6,
  hasNumbers: false,
  titlecased: false,
  separators: " "
}); // "goferu lipeba cyzex"

Available options

Name Description Default
syllablesCount Integer, count of syllables 3
minSyllableLength Integer, minimal length of a syllable 2
maxSyllableLength Integer, max length of a syllable 3
hasNumbers Boolean, put numbers in the password true
titlecased Boolean, use titlecase true
vowels String, vowel alphabet 'aeiouy'
consonants String, consonant alphabet 'bcdfghklmnprstvz'
separators String, symbols that separate syllables ''

Benchmark

name ops/sec size (bytes) memorable browser node
omgopass 1 430 233 322
password-generator 2 163 644
generate-password 696 006 740
randomatic 29 796 1 740
secure-random-password 7 622 8 939
niceware 327 805 195 584
xkpasswd 793 456 732 160

Benchmark results were generated on a MBP 2018, 2,3 GHz Intel Core i5. To perform these tests, execute npm run benchmark in the library folder.

Who uses omgopass

  • LogChimp — self-hosted platform for products makers to get feedback from their users
  • Laravel VPN Admin — Admin panel for VPN servers management
  • Password Pusher - application to securely communicate passwords over the web

Supporting IE11 and obsolete platforms

This library uses features like destructuring assignment and const/let declarations and doesn't ship with ES5 transpiled sources. If you aim to support browsers like IE11 and below → make sure you run Babel over your node_modules