splitforms.com
← Back to the journal

Static Site Form Handling: Every Method Compared (2026)

Compare every way to handle forms on a static site in 2026: form backend APIs, Netlify Forms, serverless functions, email forwarding, and self-hosted.

Start free — 500 submissionsSee pricing →No card, no time limit. Pro is $5 per month.
Short answer
There are five ways to handle forms on a static site: (1) a third-party form backend API, (2) platform-native forms (Netlify), (3) serverless functions, (4) email-based forwarding, (5) self-hosted backend. For 90% of sites, a form backend API like splitforms is the best choice — minimal setup, maximum features, works on every host.
Try it on your own form

Point any HTML form at one endpoint. 500 free submissions — no card, no time limit — and unlimited forms.

Create free account

Static sites can't process form submissions on their own — there's no server to receive the POST request, validate input, send emails, or store data. But forms are essential: contact pages, lead capture, newsletter signups, event registrations. This article compares every method for handling forms on static sites in 2026, ranked from simplest to most complex. By the end, you'll know exactly which approach fits your project. If you already know you want the copy-paste route, jump straight to the static site contact form guide.

contact-form.html

The simplest static site form backend

One endpoint, any host, zero server code. 500 free submissions total with dashboard and spam filtering.

What happens next ⚡

  • 📥Submission received — stored in your searchable dashboard
  • 📧Email notification — delivered to your inbox instantly
  • 🛡️Spam filtered — rule-based content filter + honeypot, no CAPTCHA
  • 🔗Webhook fired — optional: forward to Slack, Discord, Sheets
  • ↩️User redirected — to your thank-you page
Submission handling
Saved first
stored before notification delivery
Get Free Access Key →

500 free submissions total · No credit card

Method 1: Third-party form backend API (Recommended)

You point your HTML form at an external API endpoint. The service handles storage, email delivery, spam filtering, and webhooks. splitforms is the leading option:

<form action="https://splitforms.com/api/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_KEY">
  <input type="text"  name="name"    required>
  <input type="email" name="email"   required>
  <textarea           name="message" required></textarea>
  <button type="submit">Send</button>
</form>

Pros:

  • Works on any host — GitHub Pages, Netlify, Vercel, S3, anywhere
  • Zero server code to write or maintain
  • Dashboard with searchable submission history
  • Smart spam filtering (on splitforms, not all providers)
  • Webhooks for Slack, Discord, Zapier integrations
  • Free tier covers most personal sites (500 total on splitforms)

Cons:

  • External dependency (if the service goes down, forms break)
  • Submission limits on free tiers
  • Less control over the exact email formatting (though custom SMTP available)

Best for: 90% of static sites — portfolios, blogs, small business sites, landing pages.

Method 2: Platform-native forms (Netlify Forms)

If your site is hosted on Netlify, you can use data-netlify="true" and Netlify handles submissions at build time.

<form name="contact" method="POST" data-netlify="true">
  <input type="text" name="name" required>
  <input type="email" name="email" required>
</form>

Pros:

  • Zero configuration — just add an attribute
  • No external service or API key needed
  • Bundled with your hosting plan

Cons:

  • Vendor lock-in — only works on Netlify
  • Build-time form detection is fragile (fails on dynamic/client-rendered forms)
  • Only 100 submissions/month free ($19/month for +1,000)
  • No webhooks, no autoresponders, no smart spam filtering
  • Move hosts = rewrite every form

Best for: Sites already on Netlify with simple form needs and low traffic.

Method 3: Serverless functions

Vercel, Cloudflare Workers, Netlify Functions, and AWS Lambda let you write a small handler that receives form POSTs and processes them.

// /api/contact.ts (Vercel / Next.js)
export async function POST(req: Request) {
  const data = await req.json();
  // Validate, store, send email, filter spam...
  // You build ALL of this yourself
  return Response.json({ ok: true });
}

Pros:

  • Full control over every aspect
  • No per-submission costs (just function invocation limits)
  • Can integrate with any database or email service

Cons:

  • You build and maintain everything: validation, email delivery, spam filtering, storage, dashboards
  • Email deliverability is your problem (SPF, DKIM, DMARC, IP reputation)
  • Spam protection is your problem
  • Time sink — 1 form = 4-8 hours of backend work vs 5 minutes with a form backend

Best for: Large teams with specific compliance, data residency, or integration requirements that off-the-shelf services can't meet.

Method 4: Email-based forwarding (FormSubmit, Web3Forms)

Both services forward submissions to email, but their storage differs: FormSubmit has no stored history, while Web3Forms Free lists 30 days of submission history. Neither includes free webhooks.

<!-- FormSubmit -->
<form action="https://formsubmit.co/your@email.com" method="POST">

<!-- Web3Forms -->
<form action="https://api.web3forms.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_KEY">

Pros:

  • Dead simple setup
  • FormSubmit is unlimited; Web3Forms includes 250/month
  • No account needed (FormSubmit)

Cons:

  • No stored history on FormSubmit; 30-day free history on Web3Forms
  • No spam filtering on FormSubmit; advanced protection and hCaptcha on Web3Forms Free
  • No free webhooks

Best for: Hobby projects and personal sites where you just want submissions in your inbox and nothing more.

Method 5: Self-hosted backend

You run your own server (VPS, Docker, etc.) with a form-handling application — either custom-built or an open-source project.

Pros:

  • Complete control over data and infrastructure
  • No per-submission costs or limits
  • Data never leaves your servers

Cons:

  • Significant setup and maintenance time
  • You handle SSL, uptime, backups, security patches
  • Email deliverability (SPF/DKIM/DMARC) is your problem
  • Spam protection is your problem
  • Server costs ($5-20/month minimum for a VPS)

Best for: Organizations with strict data sovereignty requirements or existing infrastructure they want to leverage.

All methods compared

MethodSetup timeFree limitDashboardSpam filterHost lock-in
splitforms (API)5 min500 total✅✅ AINone
Netlify Forms2 minUnlimited on current credit plans✅BasicNetlify only
Serverless function4-8 hrsVariesDIYDIYPlatform
FormSubmit / Web3Forms2 minUnlimited / 250 mo❌ / 30-day history❌ / hCaptchaNone
Self-hostedDays—DIYDIYNone

The recommendation

For the vast majority of static sites, Method 1 (a form backend API) is the right choice. It gives you the most features for the least effort, works on every host, and scales from free to affordable. Specifically:

  • splitforms — Best overall. 500 total free, smart spam filtering, webhooks from $5/mo (Pro), works everywhere. Endpoint: https://splitforms.com/api/submit.
  • Netlify Forms — Best when you're already on Netlify and plan to keep hosting there.
  • Serverless — Only if you have specific requirements a form backend can't meet.
  • Email forwarding — Only for hobby projects where you don't need a dashboard.
  • Self-hosted — Only for strict data residency requirements.

For a side-by-side comparison of hosted backends, platform-native forms and self-managed serverless endpoints, see the static site form backend chooser. If you don't want to run a database at all, see how a form without a database stores and emails each submission for you.

Email hello@splitforms.com if you need help choosing the right method for your specific stack.

FAQ

What is the best form handling method for a static site?

A third-party form backend API like splitforms is the best method for most static sites. You add a standard HTML form pointing at an external endpoint (https://splitforms.com/api/submit), and submissions are stored, filtered for spam, and emailed to you — all without writing server code. Free for 500 submissions total.

Can I handle forms on a static site without any backend?

Yes, using a form backend service. Services like splitforms, Formspree, and Getform provide an external API endpoint that your static HTML form posts to. The service handles storage, email delivery, spam filtering, and webhooks. No server-side code required on your site.

Does GitHub Pages support form handling?

No. GitHub Pages serves static files only — no server-side processing. To handle forms on a GitHub Pages site, use a third-party form backend. Point your form's action at https://splitforms.com/api/submit with your access key, and submissions work immediately.

What about Netlify Forms vs splitforms for static sites?

Netlify Forms only works when your site is hosted on Netlify and detected at build time; current credit plans include unlimited form submissions. splitforms is a portable external POST endpoint with 500 free submissions total that works on Netlify, Vercel, GitHub Pages, S3, and Cloudflare Pages.

Can I use a serverless function for static site forms?

Yes — platforms like Vercel, Cloudflare Workers, and Netlify support serverless functions you can write to process form submissions. However, you'll need to build and maintain email delivery, spam filtering, storage, and dashboards yourself. A dedicated form backend like splitforms provides all of this out of the box.

Related articles

More practical guidance from comparisons.

Browse the journal →
Tutorials

Contact Form Without PHP: 3 Modern Alternatives (2026)

Build a contact form without PHP in 2026. Three modern alternatives that work on Vercel, Net…

9 min readRead →
Guides

What Is a Form Backend? Plain-English Guide (2026)

A form backend receives HTML form submissions, delivers them to email, filters spam, and sto…

7 min readRead →
Comparisons

Freedback Alternatives (2026): Pricing, Limits & Options

Freedback pricing and limits (1 free form, Professional $19 per month), plus alternatives co…

8 min readRead →

Explore this topic

Start with the overview, then move into focused guides.

OverviewContact Forms for Every FrameworkStart here →GuideContact Form for Next.jsRead →GuideContact Form for ReactRead →GuideContact Form for VueRead →ReferenceContact form guideOpen →

Building forms with ChatGPT, Claude, Cursor, or v0? Connect the native MCP server and give your agent a production form backend.

Explore the MCP server →

Next steps

Put this article into practice with the matching tool or guide.

Give your form a production backend.

One endpoint adds delivery, spam filtering, storage, and integrations. Start with 500 free submissions — no card, no time limit.

Create free accountRead the docs →
Secure checkoutSSL encryptionPrivacyProtected
VISAAMERICANEXPRESSstripe