Free plan250 submissions a month, spam filtering included, no card.See pricing →
Comparison · Netlify Forms

A Netlify Forms alternative that works on any host

Netlify Forms is well made: add an attribute, deploy, and submissions appear in the dashboard with Akismet spam filtering. It is also tied to Netlify, because Netlify finds forms by reading your HTML when it builds the site. This page sets out when that trade is fine and when it is not.

3 min readAny host, including NetlifyLast reviewed

On this page

Plans, compared

Netlify changed its pricing on September 4, 2025: accounts created since then are on credit-based plans where forms are free and unlimited, while older accounts on legacy plans keep form limits.

PlanWorks onSubmissionsJavaScript-rendered formsSpam filteringSends to
Netlify Forms, current plansNetlify onlyUnlimited, freeNeeds a hidden HTML copyAkismet, honeypot, reCAPTCHA 2Email, Slack, webhooks
Netlify Forms, legacy freeNetlify only100 a month, then every site on the account pausesNeeds a hidden HTML copyAkismet, honeypot, reCAPTCHA 2Email, Slack, webhooks
MakeTheForm FreeAny host250 a monthPost from any codeHoneypot, scoring, TurnstileDaily email digest, inbox
MakeTheForm ProAny host5,000 a month, then $2 per 1,000Post from any codeHoneypot, scoring, TurnstileEmail, Slack, webhooks, 18 more

Netlify Forms facts checked from Netlify’s credit-based billing FAQ, legacy billing FAQ, forms setup and spam filter documentation. Everything about Netlify Forms is taken from Netlify’s own documentation on that date. MakeTheForm’s figures come from the same plan catalog as its own pricing page.

The minimal integration

The same form, pointed at an endpoint instead of detected at deploy time. It works whether the site is on Netlify, Vercel, Cloudflare Pages, GitHub Pages or a server of your own.

HTML
<form action="https://mtform.co/f/your-form-key" method="POST">
  <label>
    Name
    <input name="name" autocomplete="name" required>
  </label>

  <label>
    Email
    <input type="email" name="email" autocomplete="email" required>
  </label>

  <label>
    Message
    <textarea name="message" required></textarea>
  </label>

  <!-- Spam trap: hidden from people, tempting to bots. Leave it empty. -->
  <input
    type="text"
    name="_mtf_honeypot"
    tabindex="-1"
    autocomplete="off"
    aria-hidden="true"
    style="position:absolute;left:-9999px"
  >

  <button type="submit">Send</button>
</form>

Swap in your own endpoint. No build step has to find this form; it posts from the browser.

Step by step

  1. 1

    Create a form in MakeTheForm

    Sign up and create a form to get an endpoint URL and an inbox.

  2. 2

    Point the form at the endpoint

    Set the form’s action to your endpoint and method to POST, and remove the data-netlify or netlify attribute so Netlify stops registering the form.

  3. 3

    Move the honeypot

    Remove netlify-honeypot="bot-field" from the form tag and rename the bot-field input to _mtf_honeypot.

  4. 4

    Delete the Netlify-only parts

    Remove the hidden form-name input, any data-netlify-recaptcha markup, and for a JavaScript form the hidden HTML copy you kept for Netlify’s build. A fetch to the endpoint replaces all of them.

  5. 5

    Deploy and test

    Deploy, verify your recipient address, and submit the live form. It arrives in your inbox and by email.

Troubleshooting

SymptomWhat’s happeningFix
still in NetlifySubmissions keep appearing in Netlify’s dashboard.The form still carries data-netlify or its action is empty. Remove the attribute and set the action to your endpoint.
form-name fieldA form-name value shows up in each submission.Delete the hidden form-name input; only Netlify needed it.

When Netlify Forms is the better choice

Your site is on Netlify, on a current plan

Forms are free and unlimited there, with nothing extra to sign up for. If you have no plans to move and your forms are plain HTML, Netlify Forms is the simpler choice.

You want zero configuration

Netlify Forms needs one attribute and a deploy. There is no endpoint to create and no address to copy.

You rely on Akismet

Netlify filters every submission through Akismet and keeps the flagged ones in a spam list you can review. MakeTheForm uses its own scoring, a honeypot and optional Turnstile instead.

Frequently asked questions

Is Netlify Forms free?

On Netlify’s credit-based plans, which every account created since September 4, 2025 uses, form submissions are free and unlimited. On legacy plans the free tier allows 100 submissions and 10 MB of uploads a month, and reaching the limit pauses every site on the account until it is upgraded.

Can I use Netlify Forms on a site not hosted on Netlify?

Netlify finds forms by reading your HTML when it builds and deploys the site, so the forms it handles are the ones on sites it deploys. A site on another host needs a form backend that accepts a POST from anywhere.

Why does Netlify need a hidden form for React or Next.js?

A form rendered by JavaScript is not in the HTML Netlify reads at build time, so Netlify asks for a hidden static copy with matching field names. An endpoint has no build step to satisfy: the form posts to it wherever it was rendered.

How do I move a form off Netlify Forms?

Set the form’s action to your new endpoint, remove the data-netlify attribute and the hidden form-name input, and rename the honeypot field. Keep a copy of any past submissions you need from Netlify’s dashboard before you switch.

Keep going

Ship this form for real.

Create an endpoint, paste it in and watch the first submission land in your inbox.

Create free endpoint