A Swift library for defining strong password generator rules.

This functionality is discussed in the NSHipster article
Password Rules / UIText​Input​Password​Rules.


  • Swift 4.0+


Swift Package Manager

Add the PasswordRules package to your target dependencies in Package.swift:

import PackageDescription

let package = Package(
  name: "YourProject",
  dependencies: [
        url: "",
        from: "1.0.0"

Then run the swift build command to build your project.


To use PasswordRules in your Xcode project using Carthage,
specify it in Cartfile:

github "NSHipster/PasswordRules" ~> 1.0.0

Then run the carthage update command to build the framework,
and drag the built PasswordRules.framework into your Xcode project.


Define an array of PasswordRules cases
and use the descriptor(for:) method to create a string representation:

import PasswordRules

let rules: [PasswordRule] = [ .required(.upper),
                              .minLength(20) ]

let descriptor = PasswordRule.descriptor(for: rules)
// "required: upper; required: lower; required: special; minlength: 20;"

Initialize a UITextInputPasswordRules object using the descriptor
and pass that to the passwordRules property of a secure text field:

import UIKit

guard #available(iOS 12, *) else {

self.passwordTextField.passwordRules =
    UITextInputPasswordRules(descriptor: descriptor)