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.
| Plan | Works on | Submissions | JavaScript-rendered forms | Spam filtering | Sends to |
|---|---|---|---|---|---|
| Netlify Forms, current plans | Netlify only | Unlimited, free | Needs a hidden HTML copy | Akismet, honeypot, reCAPTCHA 2 | Email, Slack, webhooks |
| Netlify Forms, legacy free | Netlify only | 100 a month, then every site on the account pauses | Needs a hidden HTML copy | Akismet, honeypot, reCAPTCHA 2 | Email, Slack, webhooks |
| MakeTheForm Free | Any host | 250 a month | Post from any code | Honeypot, scoring, Turnstile | Daily email digest, inbox |
| MakeTheForm Pro | Any host | 5,000 a month, then $2 per 1,000 | Post from any code | Honeypot, scoring, Turnstile | Email, 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.
<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
Create a form in MakeTheForm
Sign up and create a form to get an endpoint URL and an inbox.
- 2
Point the form at the endpoint
Set the form’s action to your endpoint and method to POST, and remove the
data-netlifyornetlifyattribute so Netlify stops registering the form. - 3
Move the honeypot
Remove
netlify-honeypot="bot-field"from the form tag and rename thebot-fieldinput to_mtf_honeypot. - 4
Delete the Netlify-only parts
Remove the hidden
form-nameinput, anydata-netlify-recaptchamarkup, 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
Deploy and test
Deploy, verify your recipient address, and submit the live form. It arrives in your inbox and by email.
Troubleshooting
| Symptom | What’s happening | Fix |
|---|---|---|
| still in Netlify | Submissions 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 field | A 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
Last reviewed by the MakeTheForm team.