HTML form generator

Build a form visually and copy clean, accessible HTML — no framework, no dependencies.

Fields
Generated HTML

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

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