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
Pure JS. No weight from external packages.
rules: { email: ['required','email'] }
Perfect DX inside x-data / x-model.
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}$']
}
| 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.