Netlify Forms is one of the most convenient form backends for static sites — if you're already on Netlify. A data-netlify="true" attribute on your form, and submissions flow into the Netlify dashboard automatically. No external service, no API key, no configuration. But that convenience comes with real constraints: tight submission limits, vendor lock-in to Netlify hosting, and hidden costs when you scale. This is the full breakdown of Netlify Forms limits in 2026 and what to do when you hit them.
A form backend that works on any host
Not just Netlify — Vercel, Cloudflare, GitHub Pages, S3. One endpoint, every host.
What happens next ⚡
- 📥Submission received — stored in your searchable dashboard
- 📧Email notification — delivered to your inbox instantly
- 🛡️Spam filtered — AI classifier + honeypot, no CAPTCHA
- 🔗Webhook fired — optional: forward to Slack, Discord, Sheets
- ↩️User redirected — to your thank-you page
500 submissions/month free · No credit card
The 100 submissions/month free tier trap
Netlify's free tier includes 100 form submissions per month across all forms on your site. That sounds reasonable for a personal blog, but here's what happens in practice:
- You hit the cap quietly. Netlify doesn't send a warning email at 80 or 90 submissions. Your form simply stops accepting submissions.
- Silent failures. When the cap is reached, submissions appear to succeed from the user's perspective but are silently dropped. No error message, no "try again later."
- No rollover. If you use 20 submissions in January, you don't get 180 in February. The limit resets to 100 each month regardless.
- Shared across all forms. Got a contact form, a newsletter signup, and a lead capture form? They share the same 100-submission pool.
For comparison, splitforms gives you 500 submissions/month free — 5x more — and each form has its own quota.
Vendor lock-in: the hidden cost
Netlify Forms only works on Netlify. The form detection happens at build time — Netlify's build bot scans your HTML for data-netlify attributes and injects its form handling. Move your site to Vercel, Cloudflare Pages, GitHub Pages, or your own server, and every form breaks.
This is a real problem because:
- Hosting needs change. You might outgrow Netlify's build minutes, need a different CDN, or want to self-host.
- Framework migrations break Netlify form detection. Next.js App Router forms, Remix actions, and Astro server islands don't work with Netlify's build-time detection.
- Migrating means rewriting every form — finding every
data-netlifyattribute, removing it, and wiring up a new backend.
splitforms is host-agnostic. Your form posts to https://splitforms.com/api/submit regardless of where your site lives. Move from Netlify to Vercel to your own server — the forms keep working without a single line of code changed.
Pricing when you outgrow free
| Tier | Netlify Forms | splitforms | Savings |
|---|---|---|---|
| Free | 100/mo | 500/mo | 5x more submissions |
| Entry paid | $19/mo (+1,000 subs) | $1/mo (1,000 subs) | $216/year |
| Mid tier | $19/mo add-on | $5/mo Pro (5,000 subs) | $168/year |
| Best value | — | $59/36mo (15,000/mo) | $684/3yr |
Netlify's form pricing is structured as a platform add-on — you're paying for the convenience of having forms bundled with hosting. When you separate concerns (hosting vs form backend), you get better features at a fraction of the cost.
Features Netlify Forms doesn't have
- AI spam filtering. Netlify uses a basic honeypot + reCAPTCHA. splitforms uses an AI classifier that adapts to new spam patterns without CAPTCHA friction.
- Webhooks. Not available on Netlify Forms. splitforms supports webhooks on Starter ($1/month) with HMAC signature verification.
- Autoresponders. Can't send a confirmation email back to the submitter with Netlify. splitforms includes this on all plans.
- Custom SMTP. Netlify sends from their own infrastructure. splitforms lets you configure custom SMTP on paid plans.
- Per-form analytics. Netlify shows aggregate submission counts. splitforms shows per-form breakdowns with spam rates and trends.
- API access. No REST API on Netlify Forms. splitforms has a documented API for fetching, searching, and managing submissions programmatically.
Build-time form detection is fragile
Netlify's form detection runs during the build process — it scans your compiled HTML for data-netlify attributes. This means:
- Dynamic forms aren't detected. If your form is rendered client-side (React state, Vue components, dynamic routing), Netlify might not see it at build time.
- Static HTML files in /public aren't detected. Only forms in pages processed through the build pipeline are registered.
- Hidden forms fail silently. A form in a modal or accordion that isn't in the initial page source may not be registered.
- Multi-page frameworks (Next.js) require workarounds. You often need a static HTML fallback form for detection to work.
splitforms doesn't rely on build-time detection. You explicitly point your form at the endpoint. It works with dynamic forms, client-side rendered forms, framework-managed forms, and plain static HTML — every rendering strategy, every framework.
How to move off Netlify Forms
- Create a free account at splitforms.com/login
- Copy your access key from the dashboard
- Find all forms with
data-netlifyin your codebase:grep -r "data-netlify" . - Remove the
data-netlifyattribute and Netlify's hidden form-name field - Add
action="https://splitforms.com/api/submit"and your access key hidden input - Deploy. Test. You can stay on Netlify hosting — forms just route to splitforms instead.
FAQ
Does Netlify Forms work if I move my site to Vercel or Cloudflare Pages?
No. Netlify Forms only works when your site is deployed on Netlify — it relies on their build-time form detection and serverless backend. If you migrate to Vercel, Cloudflare Pages, GitHub Pages, or any other host, your Netlify forms stop working entirely. splitforms is host-agnostic: the same form works on every host because it's a simple POST to an external endpoint.
What happens when I hit the 100 submissions/month free limit?
Netlify stops accepting form submissions silently. Visitors see your form, submit it, and get what appears to be a success — but the submission is dropped. There's no warning email, no dashboard alert. splitforms sends a 429 status when you hit limits (with an upgrade prompt) so you can handle it gracefully, and the free tier covers 500/month.
Can I keep using Netlify for hosting but use splitforms for forms?
Absolutely. Many developers host on Netlify but use splitforms for form handling. Just remove Netlify's data-netlify attribute from your form, set the action to https://splitforms.com/api/submit, and add your splitforms access key. The form bypasses Netlify's form backend entirely.
Does splitforms have a form detection feature like Netlify?
No, and that's intentional. Netlify's build-time form detection is clever but brittle — it fails on dynamic forms, client-rendered forms, and framework-managed forms (Next.js API routes, Remix actions). splitforms uses explicit endpoint configuration, which works reliably across every framework and rendering strategy.
How much does splitforms cost compared to Netlify Forms?
splitforms is free for 500 submissions/month (vs Netlify's 100). Starter is $1/month for 1,000 submissions. Pro is $5/month for 5,000. The 3-Year plan is $59 for 36 months, averaging $1.64/month for 15,000 submissions/month. Netlify's form add-on costs $19/month for 1,000 extra submissions.