Alternatives

Netlify Forms alternative: Ikiform vs Netlify Forms

Ikiform vs Netlify Forms: what changes when your form backend is no longer tied to your host, with a migration guide for data-netlify forms.

Preet SutharFounder, Ikiform

Netlify Forms is part of Netlify's hosting. You add data-netlify="true" to a form, Netlify finds it in your HTML at deploy time and starts collecting posts to your own site. There is no separate account or endpoint, and on Netlify's credit-based plans form submissions are free and unlimited.

Ikiform is a separate service with its own endpoint. That is more setup than an attribute, but the form works the same on any host, in any framework, and from server code. The real question is whether you want the form backend to move with your site or stay with your host.

Checked on October 24, 2026 against Netlify Forms's public pricing pages and docs. Ikiform makes this comparison; every Ikiform fact comes from our own docs. Prices and limits change, so the sources are listed at the end.

At a glance

FeatureIkiformNetlify Forms
Free planNone. Every plan is paidFree and unlimited submissions on Netlify's credit-based plans. Legacy plans meter submissions per site
Paid plansPro from $6/mo for 500 submissions, up to $399/mo for 1,000,000. Every feature on every tier. Yearly is 10 months' price for 12Part of Netlify hosting: Free, Personal $9/mo, Pro $20/mo, Enterprise custom
Where it worksAny host, any framework, server codeSites deployed on Netlify, with forms present in the deployed HTML
Body formatsUrlencoded, multipart and JSONUrlencoded and multipart. JSON isn't supported
File uploadsNot supported yet. A post with a file gets 422 files_not_supportedYes, one file per field, 8 MB per request, 30-second timeout
Webhooks3 endpoints per workspace, signed with HMAC-SHA256, 9 attempts over about 3 d 6 h, with delivery logsEmail and outgoing HTTP POST notifications, optionally signed with a JWS token
Spam protectionHoneypot (_gotcha), content scoring, per-form rate limits, allowed domains and an optional Cloudflare Turnstile check, with no keys neededAkismet on every submission, plus an optional netlify-honeypot field and reCAPTCHA 2
JavaScript-rendered formsWork as they areNeed a hidden static copy of the form or a form-name input so the build can detect them
Data locationCloudflare, with the database in Asia-Pacific. EU Standard Contractual Clauses in the DPANot stated in the Forms documentation

Where Netlify Forms is the better choice

  • Your site already deploys on Netlify and you don't want another account. Adding one attribute is hard to beat.
  • You want it free. On Netlify's credit-based plans form submissions don't cost anything.
  • Your form takes file uploads. Netlify accepts files up to 8 MB per request; Ikiform doesn't take files yet.
  • You want spam checked by Akismet, which Netlify runs on every submission.

Where Ikiform is the better choice

  • You might move hosts, or you already run on Vercel, Cloudflare Pages, GitHub Pages or your own server. The Ikiform endpoint doesn't care where the page lives.
  • Your forms are rendered by React, Vue or Svelte. They post to Ikiform as they are, with no hidden duplicate form for a build step to find.
  • You post JSON. Netlify Forms only takes urlencoded and multipart; Ikiform takes JSON too, and answers with JSON when your code asks for it.
  • You want HMAC-signed webhooks, retried for about 3 days with a delivery log, and up to 3 endpoints per workspace.
  • You want the server to check fields against typed rules and reject bad data with field errors.

Who should pick which

Stay on Netlify Forms if your site lives on Netlify and the form is a simple contact form. It is free, it takes files, and there is nothing else to set up.

Move to Ikiform when the form has to outlive the host, when your forms are rendered client-side, or when submissions feed another system that needs signed, retried webhooks.

Migrating from Netlify Forms

Netlify posts the form to your own site and uses attributes the build strips out. With Ikiform the form posts to a real endpoint, so the Netlify attributes go away and the action changes meaning.

Field mapping

Netlify FormsIkiformNotes
data-netlify="true" or netlifyaction="https://ikiform.com/f/frm_..."Remove the attribute. The endpoint replaces build-time detection.
name="contact" on the formOne Ikiform form per formEach Netlify form name becomes its own Ikiform form with its own endpoint.
Hidden form-name inputRemove itIkiform identifies the form by the URL. Left in, form-name is stored as an ordinary field.
action="/thanks"_redirect or the dashboard redirectThe action is now the endpoint. Put the thank-you URL in a _redirect field as a full https: URL, or set Redirect after submit.
netlify-honeypot="bot-field"Honeypot field settingSet the form's Honeypot field to bot-field and keep your input, or rename the input to _gotcha.
data-netlify-recaptchaSpam check: IkiformRemove the reCAPTCHA div. Turn on the Ikiform human check in the form settings; HTML forms need no other change.
File inputsNoneNot supported yet. Upload files elsewhere and submit the link.
fetch("/", ...) with urlencoded bodyfetch(endpoint, ...)Post to the Ikiform endpoint instead of /. JSON bodies work too.

Before and after

<form name="contact" method="POST" action="/thanks" data-netlify="true" netlify-honeypot="bot-field">
  <p hidden>
    <label>Don't fill this out: <input name="bot-field" /></label>
  </p>
  <label>
    Email
    <input type="email" name="email" required />
  </label>
  <label>
    Message
    <textarea name="message"></textarea>
  </label>
  <div data-netlify-recaptcha="true"></div>
  <button type="submit">Send</button>
</form>

Steps

  1. Create one Ikiform form for each Netlify form name and copy the endpoints.
  2. Add your domain and your Netlify preview domain under Allowed domains.
  3. Set Honeypot field to bot-field if you want to keep the existing hidden input.
  4. Remove data-netlify, netlify-honeypot, data-netlify-recaptcha and any hidden form-name input, then set the action to the endpoint.
  5. Move the old action path into a _redirect field as a full URL, or set it in the dashboard.
  6. Replace Netlify's outgoing notification with an Ikiform webhook, and verify the webhook-signature header instead of the JWS token.
  7. Deploy, send a test, then turn off form detection in Netlify once nothing posts there.

What doesn't carry over

  • Past submissions stay in Netlify. Download them from the Forms section before you turn detection off.
  • File uploads and Akismet filtering have no direct Ikiform equivalent.

FAQ

Can I use Ikiform while my site stays on Netlify?

Yes. Ikiform doesn't care where the page is hosted. Point the form at the Ikiform endpoint and leave Netlify Forms off for that form.

Why does my React form need a hidden copy on Netlify but not on Ikiform?

Netlify finds forms by reading your deployed HTML at build time, so forms that only exist after JavaScript runs are invisible to it. Ikiform takes posts at a URL, so it doesn't need to see the form at all.

Do I need to change my honeypot field?

No. Set the form's honeypot field name to whatever you used with netlify-honeypot, for example bot-field, and the input works unchanged.

How do I verify webhooks after moving?

Netlify signs notifications with a JWS token in X-Webhook-Signature. Ikiform signs each delivery with HMAC-SHA256 using the Standard Webhooks headers; the webhooks docs have a verifier and code for Node and Python.

Sources

Checked on October 24, 2026.

Trademarks and accuracy

Netlify Forms and the other product names on this page are trademarks of their owners. Ikiform isn't affiliated with, endorsed by or sponsored by any of them. What this page says about Netlify Forms comes from its public pricing pages and docs as of October 24, 2026, linked under Sources. If anything here is wrong or out of date, email hello@ikiform.com and we'll correct it.