# AI form checker

> Paste the form your AI tool wrote and see why it doesn’t send. Get a fixed HTML form and a prompt for Lovable, Bolt, v0, Cursor or ChatGPT.

Paste the form your AI tool wrote and find out why it doesn’t send. The checker reads HTML, React, JSX and Vue, lists every problem in plain words, and gives you a fixed form plus a prompt your AI tool can use to fix its own code. It’s free and runs in your browser.

-   Free
-   No account
-   Runs in your browser
-   Updated 2 November 2026

## Check your form

Paste your form code (HTML, React, JSX or Vue) Your access key (optional, fills in the fixed form) 

 

Paste the form your AI tool wrote (or any form) and press **Check my form**. Nothing leaves your browser.

## How to use the AI form checker

1.  Copy the form from your project: the HTML, or the whole React or Vue component that renders it.
2.  Paste it into the box and press Check my form.
3.  Fix everything marked “Must fix”. These are the reasons the form doesn’t reach your inbox.
4.  Copy the fixed HTML form, or copy the prompt and paste it into Lovable, Bolt, v0, Cursor, Claude or ChatGPT.
5.  Add your FormDoc access key (free at app.formdoc.dev) and send yourself a test message.

## Why AI-built forms often don’t send

AI website builders and coding assistants write forms that look finished: fields, a button and even a “Thanks!” message. What they usually leave out is somewhere for the message to go. A typical AI-written handler stops the browser from sending the form, logs the data to the console and shows success after a short delay, so the visitor believes it worked while the message disappears.

The fix is small. Point the form at a form backend, give each field a name and add a hidden key. Read the full explanation in [why your AI-built form isn’t sending emails](https://www.formdoc.dev/blog/ai-built-form-not-sending/).

## What the checker looks for

| Check | Level | Why it matters |
| --- | --- | --- |
| Fake sending (preventDefault with console.log, setTimeout or alert) | Must fix | The visitor sees success but nothing is sent |
| No action, “#”, mailto: or an address with no server behind it | Must fix | The form has nowhere to deliver the message |
| Method isn’t POST | Must fix | GET puts the message in the address bar and isn’t accepted |
| No access key, or still a placeholder | Must fix | FormDoc can’t tell whose form it is |
| Fields without a name | Must fix | Only named fields are sent; React state alone doesn’t count |
| No submit button | Must fix | Visitors can’t send the form |
| Fields without labels | Should fix | Placeholders vanish as people type and aren’t read reliably |
| Email field isn’t type="email" | Should fix | Phones show the wrong keyboard and typos get through |
| No spam trap | Should fix | Bots fill in the form; a hidden honeypot stops them quietly |
| Repeated field names | Should fix | Only one of the answers would arrive |
| Name, email or phone without `autocomplete` | AI agents | Browsers and AI agents can’t be sure what the field wants |
| Custom dropdowns or checkboxes built from other elements | AI agents | They often send nothing and are hard for agents and keyboards to use |
| A submit button with no words | AI agents | Agents and screen readers can’t tell what it does |
| Marked \* but not `required` | AI agents | Agents don’t know the field must be filled in |

## Is your form ready for AI agents?

More people now ask an AI assistant to fill in forms for them, for example Claude in Chrome booking a table or sending an enquiry. Agents read the page’s accessibility tree, the same structure screen readers use, so they rely on real labels, native controls and `autocomplete` values. The checks marked “AI agents” make sure an agent can fill your form correctly, and they make it easier for everyone else too.

## Fix it in your own code with a prompt

If your site was built with an AI tool, the quickest fix is often to let the same tool make the change. The checker writes a prompt that keeps your design and components and only changes how the form submits. For React sites it asks for a fetch request with a JSON response check, so visitors see a real success or error message. For plain HTML it sets the action, method and hidden fields.

Prefer to start fresh? Build a new form with the [HTML form builder](https://www.formdoc.dev/tools/html-form-builder/) or copy a ready [form template](https://www.formdoc.dev/templates/). The [AI-built websites guide](https://www.formdoc.dev/docs/ai-builders/) has a general prompt as well.

## Common questions

### Does the checker send my code anywhere?

No. It runs entirely in your browser. Your code and your access key never leave your computer.

### Which AI tools does it work with?

Any of them. It reads the code itself, so forms from Lovable, Bolt, v0, Replit, Cursor, Claude, ChatGPT or Copilot all work, as do forms you wrote by hand.

### My form uses its own API route. Is that wrong?

Not if you’ve written the server code behind it that emails you. Many AI-built sites have an /api/contact route with nothing behind it, or a static host where it can’t run. If you’re not sure, send a test message: if nothing arrives, point the form at FormDoc instead.

### Will the fixed form match my design?

The fixed HTML has no styles of its own, so it takes your site’s CSS. If you’d rather keep your existing components, use the prompt instead: it tells your AI tool to change only how the form submits.
