Formify Docs

Strong Password

Enforce password strength — length plus uppercase, lowercase, number, and special character requirements

Strong Password

The strongPassword rule enforces a configurable password policy: a minimum length plus optional character-class requirements.

Configuration

Config flagTypeDescription
strongPasswordbooleanEnables the check with the default policy.
validationSchema: {
  password: { strongPassword: true },
}

Default policy

strongPassword: true applies all requirements:

  • minLength: 8
  • at least one uppercase letter
  • at least one lowercase letter
  • at least one number
  • at least one special character

Custom policy

Pass an options object to V.strongPassword to adjust the policy. Each requirement is a boolean switch, all defaulting to true:

import { V } from "formify-js";

// Same as `strongPassword: true`
V.strongPassword();

// 12 characters minimum, letters/digits only (no special characters required)
V.strongPassword({ minLength: 12, special: false });

// Only require a number on top of the default length
V.strongPassword({ uppercase: false, lowercase: false, special: false });
OptionTypeDefaultDescription
minLengthnumber8Minimum password length.
uppercasebooleantrueRequires at least one uppercase letter.
lowercasebooleantrueRequires at least one lowercase letter.
numberbooleantrueRequires at least one digit.
specialbooleantrueRequires at least one special character.

Set a requirement to false to drop it from the policy.

V builder

V.strongPassword()                          // default policy
V.strongPassword({ minLength: 12 })         // custom policy
V.strongPassword({ minLength: 12 }, "Password is too weak")

Default message

The failure message is generated from the active policy, so the requirements it names always match your configuration — e.g. Password must be at least 8 characters long, with at least 1 uppercase letter, 1 lowercase letter, 1 number, and 1 special character.

Things to know

  • Empty values pass unless required: true is also set.
  • This rule does not enforce a maximum length — add maxLength if you need one.
  • For granular checks (uppercase only, number only, …), use the individual rules: containsUppercase, containsLowercase, containsNumber, containsSpecial.
  • For a live strength meter instead of a pass/fail check, see passwordStrengthPlugin in Plugins.

On this page