Alpidate

The cleanest validation plugin you’ll ever use with Alpine.js

Zero dependencies • Laravel-style rules • Native array & nested support • 4 KB

npm i alpidate
      

Joining 1,200+ starred Alpine tools • Actively maintained • MIT licensed

Why Developers Love Alpidate

⚡ Zero Dependencies

Pure JS. No weight from external packages.

✨ Beautiful Syntax

rules: { email: ['required','email'] }

🧩 Alpine Native

Perfect DX inside x-data / x-model.

Try Alpidate in 5 Seconds

Please enter a valid email
Password must be 8–20 characters
✓ Valid!

Live Demo – Every Major Feature in Action

This entire form is validated using just 11 lines of real Alpidate rules:

validations: {
  'first_name'           : ['required', 'min:3'],
  'last_name'            : ['required', 'min:3'],
  'email'                : ['required', 'email'],
  'delivery_note'        : ['requiredIf:express_delivery,true', 'max:10'],
  'address'              : ['required', 'array'],
  'address.*.name'       : ['required', 'min:2'],
  'address.*.address'    : ['required', 'min:5'],
  'address.*.phone'      : ['regex:^\\d{10}$']
}
required / min / max email requiredIf:field,value array validation address.*.field → nested arrays regex:

Alpidate vs Other Alpine Validation Solutions

Alpidate simple-validate alpinejs-form-validation FormKit
Alpine mode
Pristine.js
Bundle size (min + gzip) ~4 KB ~3 KB ~4 KB ~32–42 KB ~5 KB
Zero dependencies Yes Yes Yes No Yes
Nested & array validation Native (* syntax) Manual loops Yes Yes No
Syntax style rules: { email: ['required','email'] } x-validate attributes data-* attributes Component-based HTML5 + JS init
Learning curve 2 minutes 2 minutes 3 minutes 15–30 minutes 5 minutes

Clean Laravel-style syntax. Full power. Zero bloat.
Alpidate just feels right.