๐Ÿ”“ vue-password-strength-meter

January 23, 2026 ยท View on GitHub

npm version vue3 license

ko-fi

Interactive password strength meter based on zxcvbn for vue.js

๐Ÿ”“

๐Ÿ“บ Demo

Demo here

๐Ÿ”ง Install

yarn add vue-password-strength-meter zxcvbn

๐Ÿ‘ˆ Usage


<template>
  <password v-model="password"/>
</template>

<script>
  import Password from 'vue-password-strength-meter'
  import 'vue-password-strength-meter/style.css'

  export default {
    components: { Password },
    data: () => ({
      password: null
    })
  }
</script>

๐Ÿ‘ˆ With events


<template>
  <password
    v-model="password"
    :toggle="true"
    @score="showScore"
    @feedback="showFeedback"
  />
</template>

<script>
  import Password from 'vue-password-strength-meter'
  import 'vue-password-strength-meter/style.css'

  export default {
    components: { Password },
    data: () => ({
      password: null
    }),
    methods: {
      showFeedback ({suggestions, warning}) {
        console.log('๐Ÿ™', suggestions)
        console.log('โš ', warning)
      },
      showScore (score) {
        console.log('๐Ÿ’ฏ', score)
      }
    }
  }
</script>

With custom input

<template>
  <div>
    <input type="password" v-model="password">
    <password v-model="password" :strength-meter-only="true"/>
  </div>
</template>

<script>
  import Password from 'vue-password-strength-meter'
  import 'vue-password-strength-meter/style.css'

  export default {
    components: { Password },
    data: () => ({
      password: null
    })
  }
</script>

Composition API

<template>
  <password v-model="password" />
</template>

<script setup>
  import { ref } from 'vue'
  import Password from 'vue-password-strength-meter'
  import 'vue-password-strength-meter/style.css'

  const password = ref(null)
</script>

Props

PropTypeDefault ValueDescription
secureLengthNumber7password min length
badgeBooleantruedisplay password count badge
toggleBooleanfalseshow button to toggle password visibility
showPasswordBooleanfalseIf you are not using the toggle button you can directly show / hide the password with this prop
defaultClassStringPassword__fieldinput field class
disabledClassStringPassword__field--disableddisabled input field class
errorClassStringPassword__badge--errorerror class for password count badge
successClassStringPassword__badge--successsuccess class for password count badge
strengthMeterClassStringPassword__strength-meterstrength-meter class
strengthMeterFillClassStringPassword__strength-meter--fillstrength-meter class for individual data fills
showStrengthMeterBooleantrueHide the Strength Meter if you want to implement your own
strengthMeterOnlyBooleanfalseHides the built-in input if you want to implement your own
labelHideString'Hide Password'Label for the hide icon
labelShowString'Show Password'Label for the show icon
userInputsArrayempty arrayArray of strings that zxcvbn will treat as an extra dictionary
referenceValueString'input'Prop to change the ref of the input. This way you can have the input outside of the component.

Events

Show / Hide Password

  • @show will be emitted if showing the password
  • @hide will be emitted if hiding the password
  • @score will return the zxcvbn score (Integer from 0-4) [โ„น] (https://github.com/dropbox/zxcvbn#usage)
  • @feedback will return an zxcvbn feedback object with suggestion and warning

๐Ÿ’… Customizing

You can customize the styling of the input field, badge and strength-meter by passing your own css classes to defaultClass, strengthMeterClass etc.

Build Setup

# install dependencies
npm install

# serve with hot reload
npm run dev

# build for production with minification
npm run build

# run tests
npm test

Support

Buy Me A Coffee