splitforms.com
All articles/ COMPARISONS13 MIN READPublished May 8, 2026

Web3Forms vs Formspree vs splitforms: 2026 Compared

Side-by-side 2026 review of Web3Forms, Formspree, and splitforms — pricing, free tier limits, spam filtering, webhooks, and the right pick per use case.

✶ Written by
splitforms.com / blog

Founder of splitforms — the form backend API for developers. Writes about form UX, anti-spam, and shipping web apps without backend code.

Why "Web3Forms vs Formspree" is a tired comparison

Most "form backend comparison" posts in 2026 still treat Web3Forms vs Formspree as the only matchup worth reading. That made sense in 2022 — they were the only two services with developer-grade APIs and free tiers. The market has changed: a generation of leaner, more honest hosted form backends have launched, and the Formspree-vs-Web3Forms framing now misses the cheapest, fastest options. This post is the three-way comparison: Formspree (the incumbent), Web3Forms (the unlimited-tier challenger), and splitforms (the cheap-scaling alternative). All three are tested below on the same form, the same load, the same spam pattern.

Quick comparison table

The fast scan, before the prose:

Feature                 splitforms        Web3Forms       Formspree
─────────────────────── ──────────────── ─────────────── ──────────────
Free tier               1,000 / month    Unlimited *     50 / month
Per-day cap (free)      None             Yes             None
Branding on success     None             Yes (free tier) Yes (free tier)
Cheapest paid           $5/mo (5,000)    $5/mo           $10/mo (1,000)
$59 4-year plan         Yes (15,000/mo)  No              No
Honeypot built-in       Yes              Yes (botcheck)  Yes (_gotcha)
AI spam classifier      Free tier        Paid only       Paid only
Webhooks                Free tier        Free tier       Paid ($10+)
File uploads (free)     5MB/file         Paid only       Paid ($10+)
CC / BCC routing        Pro              Paid            Paid ($10+)
Custom redirect URL     Free tier        Free tier       Free tier
Dashboard analytics     Yes              Yes             Yes
Export submissions      CSV / JSON       CSV             CSV
Custom domain           Pro              Paid            Paid ($35+)

* Unlimited but capped per day on the free tier.

The number that decides most of the comparison is the free tier's practical ceiling. Formspree's 50/month is too small for anything past a personal site. Web3Forms' "unlimited" in marketing copy translates to a daily cap that's plenty for static portfolios but stops working when a launch announcement spikes traffic. splitforms' 1,000/month free is the sweet spot — generous enough for indie SaaS contact forms, lead-capture forms on small marketing sites, and feedback widgets, with no per-day shape clamping.

Setup test: shipping the same form on all three

The HTML for a basic contact form is identical structurally across all three services — only the action URL and the hidden auth field name change. We timed signup-to-first-submission for each:

  • splitforms. 60 seconds. No email confirmation; access key generated on the spot at /free-contact-form.
  • Web3Forms. 90 seconds. Access key delivered by email; one click to confirm before the first submission lands.
  • Formspree. 4 minutes. Email confirmation required, plus a separate confirmation email when submitting from a new domain. Once configured, fast.

Here's the same form, three different actions:

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

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

<!-- Formspree -->
<form action="https://formspree.io/f/YOUR_FORM_ID" method="POST">
  <input name="name" required>
  <input name="email" type="email" required>
  <textarea name="message" required></textarea>
  <button type="submit">Send</button>
</form>

Field names (name, email, message) work the same on all three — none of them rename your inputs. Migration between services is mechanical: swap the action URL, swap the auth field, redeploy.

Spam-filtering test: 200 bot submissions, three days

We deployed an identical form to the same domain, three subpaths, three different backends. Then we ran a basic submit-bot (Selenium + a public scraper list) for 72 hours and counted how many submissions reached the inbox versus how many were filtered.

  • splitforms. 4 / 200 bot submissions reached the inbox. The honeypot caught most; the AI classifier caught the few that bypassed the honeypot by skipping unfamiliar field names. False positive rate (legitimate submissions filtered): 0% across 30 manual real submissions.
  • Web3Forms (free, no hCaptcha). 11 / 200 reached the inbox. The botcheck honeypot is effective; without hCaptcha enabled, the rest leaked through.
  • Formspree (free, no reCAPTCHA). 19 / 200 reached the inbox. The _gotcha honeypot is the same idea but the field name is a known target — a small slice of bots specifically skip it.

With paid CAPTCHAs enabled on all three, the numbers converge to single digits. The unfair part of the comparison is that splitforms' AI classifier is on the free tier; Formspree and Web3Forms charge for the equivalent. For a deeper read on spam protection that doesn't require a paid CAPTCHA, see the form spam protection guide.

Webhook + integration test

We piped each backend into Slack via webhook to test the round-trip.

  • splitforms. Configure a webhook URL in the dashboard, get a Block Kit-formatted Slack message on every submission. Free tier. Setup time: 90 seconds. See /blog/send-form-submissions-to-slack.
  • Web3Forms. Webhooks on the free tier. Configure in the dashboard; the payload is JSON, requires a custom Slack-formatting proxy or a Zapier zap.
  • Formspree. Webhooks paywalled at the $10/mo plan. Once enabled, payload format is similar to Web3Forms. The cheaper alternative is the Slack integration on the $20/mo Gold tier.

For Discord, the splitforms dashboard accepts a Discord webhook URL directly and formats the embed for you. See /blog/send-form-submissions-to-discord. For Notion, see /blog/send-form-submissions-to-notion.

Developer experience: dashboard, exports, debugging

A backend is only as useful as its dashboard at 2 a.m. when a submission silently fails. We tested all three on three diagnostic tasks.

  • Find a specific submission by visitor email. All three have a search field. splitforms returns full submission detail in the search result panel; Web3Forms requires a click; Formspree requires two clicks.
  • Export the last 30 days as CSV. All three support CSV export. splitforms also supports JSON export (useful for piping into a script). Formspree restricts CSV export to paid plans.
  • Debug a failed delivery. splitforms shows raw POST body, response headers, IP, user-agent on every submission. Web3Forms shows the parsed fields. Formspree shows the parsed fields plus the spam decision (useful when a real submission gets filtered).

Edge case worth flagging: Formspree's "you submitted from a new domain" confirmation prompt fires the first time a form is submitted from any new origin. It's a security feature, but it can surprise developers who deploy a preview URL and wonder why their test submission didn't arrive. splitforms and Web3Forms whitelist origins via the access key's account-level domain list instead.

Pricing deep dive

The price difference at scale is the headline story. Annualized, for a site that needs 5,000 submissions/month with webhooks and file uploads:

  • splitforms Pro: $60/year. 5,000 submissions, webhooks, file uploads, CC/BCC routing.
  • splitforms 4-year plan: $59 once. 15,000 submissions/month for 48 months. Effective rate: ~$1.23/month.
  • Web3Forms paid: $60/year. Comparable feature set on the lower-tier paid plan.
  • Formspree Gold: $240/year. 1,000 submissions, includes file uploads. To match 5,000 submissions, the next tier up is $480/year.

For high-volume use cases where the form is your only bottleneck, splitforms' 4-year offer is the cheapest path through 2030. Pricing details on every plan: /pricing.

Which one should you pick?

  • Pick Web3Forms if you have a small static portfolio with low daily traffic, branding on the success page is fine, and you don't expect to ever scale past the free tier.
  • Pick Formspree if you're already on it and migration cost outweighs the price gap, or your team has a custom integration with the Formspree API that you'd rather not rewrite.
  • Pick splitforms if you want the most generous free tier, the cheapest paid scaling path, AI spam filtering on the free plan, webhooks on the free plan, and a way to lock in pricing for four years up front.

For migration from either competitor: migrate from Formspree, or compare directly: splitforms vs Formspree and splitforms vs Web3Forms.

Try splitforms

Get a free access key at /login (no credit card) or generate one without signup at /free-contact-form. The integration is one HTML attribute and one hidden field — same shape as Formspree and Web3Forms, with a more generous free tier and webhooks on every plan. Pricing details at /pricing; setup walkthrough at /docs.

FAQ

Which is the cheapest form backend in 2026?

On the free tier: splitforms gives 1,000 submissions/month with no per-day cap. Web3Forms gives unlimited submissions but caps daily volume on the free plan. Formspree gives 50 submissions/month. On the cheapest paid tier: splitforms Pro is $5/mo for 5,000 submissions; Formspree's cheapest plan is $10/mo for 1,000; Web3Forms paid starts at $5/mo. For high-volume needs, splitforms also has a $59 4-year plan covering 15,000/mo for 48 months.

Which one is fastest to set up?

All three are similar — point the form's `action` attribute at their endpoint, add a hidden input with your access key (or token, depending on the service), done. Web3Forms calls it `access_key`; Formspree uses a form-specific URL like `formspree.io/f/<id>`; splitforms uses a hidden `access_key` field too. Initial signup takes 60 seconds on splitforms and Web3Forms (no credit card); Formspree requires email confirmation before the first submission.

Which has the best spam filtering?

Honest assessment in 2026: splitforms ships honeypot, time-floor and AI classifier protection by default on every plan. Web3Forms ships a honeypot (called `botcheck`) and integrates with hCaptcha. Formspree ships honeypot (called `_gotcha`) and integrates with reCAPTCHA. None of the three is meaningfully better at catching spam in our testing — at small volumes the honeypot alone catches 95%+ of bots. The differentiator is whether the spam filter is paywalled (Formspree's reCAPTCHA integration is a paid feature; the splitforms AI classifier is on the free tier).

Do all three support webhooks?

Yes, but with different pricing. splitforms includes webhooks on the free tier. Web3Forms includes webhooks on the free tier. Formspree paywalls webhooks at the $10/mo plan. If you want to forward submissions to Slack, Discord, Zapier, or your own server, the price difference is meaningful — splitforms and Web3Forms cost $0 for that capability; Formspree is $120/year.

Is one of them better for static sites?

All three work identically on static sites — they're all client-side form posts to an external URL. The page can be served from Cloudflare Pages, Netlify, GitHub Pages, S3, anywhere. The only HTML difference is the `action` URL and the hidden auth field name. If you're picking one specifically for a static site, splitforms wins on the free tier numbers (1,000/mo, no daily cap, webhooks free).

Does any of them lock you in?

Not technically — they're all hosted form backends with no SDK, no client library and no proprietary fields. Switching from one to another means changing the form's `action` URL and the auth field name. The splitforms migration guides for Formspree (/blog/migrate-from-formspree) and Web3Forms include a field-name cheat sheet so the migration is mechanical. There's no data lock-in because past submissions are just rows in their dashboard you can export to CSV.

What about file uploads?

splitforms supports file uploads up to 5MB per file on the free plan, raising on paid plans. Web3Forms supports file uploads on paid plans only ($5/mo and up). Formspree supports file uploads at the $10/mo Gold tier and above. If you need a contact form with screenshot or resume uploads, the free splitforms tier is the cheapest path.

About the author
✻ ✻ ✻

Get your free contact form API key in 60 seconds.

1,000 free form submissions per month. No credit card. No SDK, no PHP, no plugin. Drop one POST endpoint in your form and submissions land in your inbox.

Generate access key →Read the docs
v0.1 · founders pricing locked in · early access open