HTML form generator
Build a form visually and copy clean, accessible HTML — no framework, no dependencies.
Every form starts as the same handful of tags, and everyone rewrites them from memory. This builds them for you: add the fields you need, and the markup on the right updates as you go.
The output is plain HTML. No framework, no build step, no dependencies — every input is wrapped in a real `<label>` tied to it by `id`, which is the part people most often skip and the part screen readers most need.
What it does not do is receive the submission. An HTML form needs a server behind its `action`, and writing that is the actual work. If you would rather not, formformform gives you the same form with the hosting, storage, notifications and exports already attached.
Labels are not optional
Every field gets a <label for="…"> bound to its input id. Placeholder text is not a label — it disappears the moment someone types, and most screen readers ignore it.
Names decide what you receive
The name attribute is the key your server sees. The generator slugs your label into a sensible one and warns you if two fields end up sharing it, which silently drops data.
Types do free validation
Using type="email" or type="tel" gets you browser validation and the right mobile keyboard for nothing. Required fields get the required attribute rather than a script.
Nothing is uploaded
The generator runs entirely in your browser. Your field names never reach us, and the page works offline once loaded.
Frequently asked questions
Where do the submissions go?
Wherever the action attribute points. Plain HTML has no storage of its own — you need a script or service at that URL to receive the POST. The generator leaves the action for you to fill in.
Can I style the output?
Yes. The markup carries simple, predictable class names and no inline styles, so it takes your own CSS cleanly. Turn on the starter stylesheet option if you want something that looks reasonable immediately.
Does it handle file uploads?
The file field type is there, and it sets enctype="multipart/form-data" on the form automatically — miss that and the file never arrives. Handling the upload server-side is still up to you.
Is the markup accessible?
It gets the fundamentals right: bound labels, real fieldsets with legends around radio and checkbox groups, and required marked as an attribute rather than only an asterisk. Accessibility also depends on your styling and focus states.
Other free tools
- Form accessibility checker
Audit form HTML for labels, grouping, instructions and common keyboard or error-message problems.
- HTML input pattern generator
Build and test HTML pattern validation with live matching examples and ready-to-copy attributes.
- Form endpoint tester
Preview the GET URL or POST payload a form would send, without making a network request.
Want the form to collect the answers too?
Hand-written HTML still needs somewhere to post to. formformform gives you the form, the hosting, the responses and the notifications — free while we are in early access.
Start free