Flutter Gems is a curated list of 7250+ useful Dart & Flutter packages that are categorized based on functionality.
Top Flutter PIN, OTP and Password Field packages
Last updated: May 18, 2026
Often user verification or transaction verification is required for payments or in banking, finance, and fintech apps. For verification, the user is required to enter a:
- PIN: A four to six-digit numerical code used to verify the identity of the user. This code is only known to the user and can be entered via a number pad.
- One-time password (OTP): A type of password that is only valid for a single use. OTPs provide an extra layer of security and are typically sent via SMS or generated by an authenticator app.
- Password: A custom, persistent string set by the user.
Best Practices for PIN & OTP Fields
Handling secure inputs requires a balance of high security and low friction for the user:
- SMS Autofill: Use packages that support native SMS autofill (like pinput). This drastically reduces friction by automatically populating the OTP when the SMS arrives, so the user doesn't have to switch apps.
- Visual Feedback & Focus: Automatically focus the first input box when the screen loads, and provide immediate visual feedback (e.g., turning the border red) if an incorrect code is entered.
- Resend Mechanisms: Always include a "Resend Code" option accompanied by a cooldown timer to prevent users from spamming OTP requests.
- Security: Never store OTPs locally. Use flutter_secure_storage for storing authentication tokens after successful verification, and ensure all API requests happen over HTTPS.
The complete list of Flutter packages that provide highly customizable fields, animations, and autofill utilities to enter a PIN, SMS code, Password, or OTP in your Flutter app is provided below. The most popular choice in the community is pinput.
pinput
👍 3.45K ⬇️ 450.4K
Dart 3 compatibleMaintenance Status: Good
Pin code input (OTP) text field, iOS SMS autofill, Android SMS autofill One Time Code, Password, Passcode, Captcha, Security, Coupon, Wowcher, 2FA, Two step verification
pin_code_fields
👍 2.36K ⬇️ 334.5K
Dart 3 compatibleMaintenance Status: Good
A highly customizable PIN/OTP input field for Flutter with Material Design support and headless core for custom UIs.
sms_autofill
👍 878 ⬇️ 183.4K
Dart 3 compatibleMaintenance Status: Average
Flutter plugin to provide SMS code autofill support
pin_input_text_field
👍 158 ⬇️ 204.1K
Dart 3 compatibleMaintenance Status: Average
A textField widget to help display different style pin written in pure dart, no extra dependency.
password_strength
👍 156 ⬇️ 200.1K
Dart 3 compatibleMaintenance Status: Poor
A password strength estimator. Can be used to show the user whether the password they chose is strong against bruteforce or dictionary attacks.
otp_autofill
👍 291 ⬇️ 23.3K
Dart 3 compatibleMaintenance Status: Average
Android implementation of OTP autofill with using User Consent API and Retriever API. Add possibility to receive OTP code from another input.
otp_text_field
👍 278 ⬇️ 30.2K
Dart 3 compatibleMaintenance Status: Poor
A flutter package to create a OTP Text Field widget in your application.
smart_auth
👍 202 ⬇️ 91.6K
Dart 3 compatibleMaintenance Status: Average
Wrapper of Android SMS User Consent API, SMS Retriever API to read one time sms code, get user phone number, OTP, OTC, sms autofill, android autofill
otp
👍 201 ⬇️ 61.7K
Dart 3 compatibleMaintenance Status: Good
RFC6238 Time-Based One-Time Password / Google Authenticator Library
flutter_otp_text_field
👍 239 ⬇️ 887
Dart 3 compatibleMaintenance Status: Average
Fully customizable OTP Entry TextField for flutter, Widget accepts pin of any length. Its written in pure dart, no extra dependency.
flutter_pw_validator
👍 176 ⬇️ 3K
Dart 3 compatibleMaintenance Status: Poor
Flutter Pw Validator package helps you to validate sign in user-entered password with your rules.
pin_code_text_field
👍 163 ⬇️ 8.7K
Dart 3 compatibleMaintenance Status: Poor
A beautiful and highly customisable Flutter widget for entering pin code. Suitable for use cases such as login and OTP.
flutter_verification_code
👍 158 ⬇️ 3.4K
Dart 3 compatibleMaintenance Status: Poor
A Flutter package that help you create a verification input.
passcode_screen
👍 117 ⬇️ 4.6K
Dart 3 compatibleMaintenance Status: Poor
A platform agnostic Flutter package for showing passcode input screen, similar to Native iOS. Screen customizable with a colors, sizes, fonts etc.
fancy_password_field
👍 109 ⬇️ 2.5K
Dart 3 compatibleMaintenance Status: Average
A highly customizable password control input widget. It has features such as password strenght and rules validation
sms_otp_auto_verify
👍 93 ⬇️ 168
Dart 3 compatibleMaintenance Status: Average
A new Flutter plugin to enter a digit code usually in cases of Sms Otp Code. and provide SMS Auto Fill using library SMS Retriever API.
sms_user_consent
👍 85 ⬇️ 63
Dart 3 compatibleMaintenance Status: Poor
Request user's phone number (supports dual sim) and/or consent to read SMS without adding any permissions
flutter_password_strength
👍 46 ⬇️ 22.6K
Dart 3 compatibleMaintenance Status: Poor
A password strength checker for flutter, works for Android and iOS.
otp_pin_field
👍 54 ⬇️ 2.7K
Dart 3 compatibleMaintenance Status: Average
A flutter package which will help you to generate pin code fields with beautiful design and animations. Can be useful for OTP or pin code inputs.
password_strength_checker
👍 54 ⬇️ 2.7K
Dart 3 compatibleMaintenance Status: Good
Generate secure passwords, check for exposed passwords, get visual feedback for strength or get form validation with a minimum password strength required.
password_validated_field
👍 54 ⬇️ 73
Dart 3 compatibleMaintenance Status: Poor
With this package you can have a nice, cool and validated password text fields in your application.
random_password_generator
👍 51 ⬇️ 619
Dart 3 compatibleMaintenance Status: Poor
A new Flutter package which help generate strong password for online accounts and password strength estimator for Dart.
custom_pin_screen
👍 49 ⬇️ 273
Dart 3 compatibleMaintenance Status: Average
A flutter package to add screens with custom keyboards and pins to your mobile application.
flutter_otp_kit
👍 41 ⬇️ 205
Dart 3 compatibleMaintenance Status: Good
A comprehensive Flutter OTP verification package with SMS autofill, biometric support, performance monitoring, and extensive customization options.
otp_timer_button
👍 39 ⬇️ 612
Dart 3 compatibleMaintenance Status: Poor
This package for easy implementation otp timer button which will be enabled after specified time.
flutter_dynamic_otp
👍 33 ⬇️ 30
Dart 3 compatibleMaintenance Status: Poor
Flutter package that provides a customizable OTP (One-Time Password)
flutter_pin_code_fields
👍 28 ⬇️ 2.2K
Dart 3 compatibleMaintenance Status: Poor
A flutter package which will help you generate customizable pin code fields. Can be used for login pins or OTP.
flutter_pin_code_widget
👍 27 ⬇️ 241
Dart 3 compatibleMaintenance Status: Poor
PIN Code wiget for creating and checking local pin code with flexible settings.
flutter_verification_code_field
👍 27 ⬇️ 149
Dart 3 compatibleMaintenance Status: Average
Flutter verification code input. Primarily used for entering or pasting OTP codes from authorization emails or messages.
verification_code_field
👍 10 ⬇️ 327
Dart 3 compatibleMaintenance Status: Good
This package provides an input field that allows you to enter a 4, 5 or 6 digit verification code in your applications.
code_input
👍 9 ⬇️ 244
Dart 3 compatibleMaintenance Status: Poor
Flutter Code Input Widget
flutter_otp
👍 85 ⬇️ 48
Maintenance Status: Poor
A Flutter package for sending and validating OTP. Four digit OTP (customizable) is sent as a SMS to the given phone number (and country code).
flutter_lock_screen
👍 49 ⬇️ 76
Maintenance Status: Poor
Flutter Pass Code Page Screen! You can use in your project!.
pin_entry_text_field
👍 35 ⬇️ 15
Maintenance Status: Poor
Fully customizable Pin Entry TextField for flutter, This widget accepts pin of any length and it detects the entry of the last pin.
otp_screen
👍 29 ⬇️ 11
Maintenance Status: Poor
A new Flutter package which helps developer in creating Otp screen with few lines of code.
