Paste your form markup
Copy a complete <form> element or a full HTML page that contains a form. The converter reads the first form it finds.
HTML form to JSON
Paste your <form> markup and get a JSON schema plus a realistic sample payload instantly — the data contract you need before a backend exists. Everything parses in your browser, no signup.

type, properties, required, enum, and writeOnly keywords, so validators and code generators read the schema directly.
A realistic submission object for webhook tests, API examples, and integration specs.
Clean markup that POSTs to a real backend — paste your access key and the form is live.
HTML form to JSON schema
The converter reads every field — inputs, textareas, selects, radio and checkbox groups, hidden fields, labels, and options — and returns a JSON Schema-style object like this, plus a matching sample payload and splitforms-ready HTML.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "Contact form",
"properties": {
"name": { "type": "string" },
"email": { "type": "string", "format": "email" },
"message": { "type": "string" },
"topic": { "type": "string", "enum": ["Sales", "Support"] },
"access_key": { "type": "string", "writeOnly": true }
},
"required": ["name", "email", "message"]
}Setup
Four steps from raw markup to a working, deploy-ready form — all in the browser, no signup.
Copy a complete <form> element or a full HTML page that contains a form. The converter reads the first form it finds.
Confirm field names, labels, types, required status, hidden fields, and option values before copying the JSON output.
Use the JSON schema for documentation and validation. Use the sample payload for webhook tests, API examples, and integration specs.
Copy the regenerated HTML, paste your access key, and deploy a working form with email delivery, spam filtering, dashboard storage, and webhooks.
Why JSON
Developers need to document a form before the backend is finished. A JSON schema gives the API team a contract, gives QA a payload to test, and gives automation tools a predictable shape. Copy the regenerated HTML, paste your access key, and the same fields become webhook payloads and dashboard rows.

What you get
Three usable outputs from one paste — a schema to document and validate against, a payload to test with, and clean HTML that submits to a real backend.

API + MCP
Need the JSON without a live form? The REST API returns stored submissions in this same shape, and the MCP server lets AI agents create forms and read submissions using the field names shown in the schema.

How SplitForms works
Connect your form, collect every submission, and send data where it needs to go — without building backend infrastructure.

Point your form to your unique SplitForms endpoint. That's it.

We instantly capture and organize every submission in your inbox.

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

No credit card required. Set up in under 60 seconds.
Connect & automate
SplitForms works with the destinations you route to and the platforms you build on — from Slack and Sheets to WordPress, Shopify, and Next.js.

Trusted by indie teams and agencies shipping forms worldwide
Testimonials
40 quotes on record — from indie hacks to agency migrations.
“I replaced a Lambda + DynamoDB + SES contact form with six lines of HTML. It took eleven minutes, and the dashboard is better than what I was going to build.”
“We migrated 14 client sites off Formspree in a single weekend. The price is a third of what we paid, the API is more honest, and the spam filter actually works.”
“The webhook payload is signed, idempotent, and well-shaped. It reads like code from a competent team, not a CRUD app held together with duct tape.”
“I stopped reaching for Typeform on small marketing sites. splitforms covers 90% of the use case at none of the bloat.”
“I onboarded our whole agency in an afternoon. The MCP integration meant Cursor literally dropped the form straight into our client repos for us.”
“The free plan gave me 500 submissions before I paid a cent, and Starter is a dollar a month. I've spent more on coffee deciding which backend to use.”
“Spam went from forty junk entries a day to zero, with no reCAPTCHA puzzle ruining the form. The honeypot and time-trap just quietly do their job.”
“Point the form action at one endpoint and you're done. No SDK, no client library, no build step. This is how a form backend should feel.”
“Leads land in Slack the second someone submits, and a copy goes to Google Sheets for the sales team. I wired both up in under ten minutes.”
“I run a static Hugo site on a five-dollar VPS. splitforms gave it a real contact form without me standing up a single server.”
FAQ
It parses the first form in your pasted HTML and generates three outputs: a JSON schema for the named fields, a sample submission payload, and clean splitforms-ready HTML that posts to a real backend. It detects inputs, textareas, selects, radio groups, checkbox groups, hidden fields, required fields, labels, placeholders, and option values.
No. The converter runs entirely in your browser using DOMParser. The HTML you paste is never sent to splitforms or any third party. You can load the page, disconnect from the internet, and keep converting forms locally.
Paste rendered HTML, not JSX. React, Next.js, Vue, Svelte, and Astro all render normal HTML in the browser. Open DevTools, copy the outerHTML for the form element, then paste that markup into the converter.
Yes. The schema is a JSON Schema-style object with type, properties, required, enum, and writeOnly keywords, so validators and code generators can read it directly. Text inputs map to string, number and range inputs to number, checkboxes to boolean, and multi-selects and choice groups to array, with any detected option values listed under enum.
Copy the splitforms-ready HTML output, replace YOUR_ACCESS_KEY with your free splitforms key, and paste the form into your site. The form posts to splitforms, which handles dashboard storage and spam filtering on Free; Free includes owner email delivery; Starter adds webhooks.
Yes. Hidden fields are detected and marked as write-only in the schema. If the form does not include a splitforms access_key or botcheck honeypot, the generated HTML adds both so the copied form can submit and resist basic spam.
Yes. GET https://splitforms.com/api/submissions with an Authorization: Bearer token returns { submissions, has_more } as JSON, filterable by form, limit, before, or since (60 requests/min). Your token lives at Dashboard → MCP, and the JSON shape it returns matches what this converter generates.
Yes. splitforms ships a free MCP server (all plans) with tools like create_form, generate_form, and list_submissions, so an agent can create a form and read its submissions using the same field names this converter outputs. A chatbot that collects a lead in conversation can POST the gathered fields as JSON to https://splitforms.com/api/submit with the form's access_key, exactly like the splitforms-ready HTML this page generates.
Simple pricing
Choose a plan that fits your workflow — from a free form endpoint to full automations, exports, and higher submission limits.
Free forever
For side projects and indie devs.
For builders who want every paid feature for $1/month.
For agencies and growing products.
Pay $59. 3 years sorted.
No credit card required on Free • Cancel anytime