# SnipForm DDF - Complete Reference
> Directive Driven Forms - The form backend that actually handles everything.
## Why SnipForm
### The Problem with Traditional Form Backends
Every form backend works the same way: POST your data to their endpoint, they store it, send you an email. That's it. You still have to:
- Write JavaScript for validation
- Build your own error display logic
- Handle loading states manually
- Create success/thank you screens
- Figure out spam protection yourself
You're doing all the work. They're just receiving a POST request.
### What Makes SnipForm Different
SnipForm flips the model. Instead of "here's an endpoint, good luck", you get a complete form engine that runs on your page:
**Directive-Driven**: Validation, error states, loading states, success content - all declared in HTML attributes. No JavaScript to write.
```html
```
That's a validated input with error display, error/valid styling - zero JavaScript.
**Fully State-Managed AJAX Form**: The ~8KB library (gzipped) handles:
- Form state (pristine, touched, submitting, success, error)
- Field validation with 30+ rules (server-verified, can't be bypassed)
- Reactive error/valid state on inputs and display elements
- Loading/submit state UI (spinners, button text, overlays)
- Success content with field interpolation
- SPA navigation support with proper cleanup
**Behavioral Spam Scoring**: Not just honeypots. The library tracks:
- Time from page interaction to submit
- Keystroke patterns
- Focus events and field touches
- Mouse movement and scrolling
- WebDriver detection
- Datacenter IP detection
Submissions get scored. Bots get fake success responses (they think it worked, nothing saved). Real users aren't affected by CAPTCHAs.
**No Submit Limits**: Free plan has no submission limits. Not "100/month free" or "first 50 free". Unlimited.
**No Cookies**: SnipForm doesn't use cookies. No cookie consent banners needed. GDPR-friendly out of the box.
### When to Use SnipForm
- Static sites (Astro, Next.js static, Hugo, Jekyll, plain HTML)
- Jamstack / serverless architectures
- Any site where you don't want to build a form backend
- When you want validation that can't be bypassed (server-side)
- When you hate writing form JavaScript
---
## Quick Start
```html
Thank you %email%!
```
Get your form key at https://app.snipform.io (free, no submit limits).
---
## Container Element
### ``
Wraps your form. Required attributes:
| Attribute | Description |
|-----------|-------------|
| `key="FORM_KEY"` | Your form's unique key (from dashboard) |
| `transition="ms"` | Fade transition duration in milliseconds (default: 150) |
| `transition="none"` | Disable transitions |
| `mode="test"` | Test mode - form won't actually submit |
```html
```
---
## Validation Directives
Add to ``, `