Skip to main content

How to Fill Forms Automatically with AI

Filling forms automatically with AI means describing what you want typed, selected, or checked in plain English, and having an agent do it directly in the page you already have open — not just replaying values you saved to a browser profile once. Vibe does this with two tools, fill and fill_form, that work on real, framework-heavy forms: job applications, internal admin panels, multi-step signup flows, CRM records. This is different from Chrome's built-in autofill, which only pastes in data you've previously saved (name, address, a card number) into fields Chrome recognizes by type. Vibe fills any field from a natural-language instruction, including ones Chrome's pattern matching has never seen before, and it can work through multi-step or multi-page forms in one instruction rather than a single one-shot pass.

How it works

Vibe's fill tool doesn't just set a field's .value and call it done. It runs document.execCommand('insertText', false, value) inside the page, via the Chrome DevTools Protocol's Runtime.callFunctionOn — the same mechanism the browser itself uses when a real person types. That matters on modern sites because React, Vue, and Angular-controlled inputs don't read the DOM .value property directly; they listen for native beforeinput and input events to know a field changed. A naive script that sets .value = "..." leaves the framework's internal state stale — the field looks filled on screen, but the submit button stays disabled because the app's JavaScript never saw an input event fire. execCommand('insertText') fires those native events, so the framework updates its state the same way it would for a human typist. If execCommand returns false on a given field, Vibe falls back to .value assignment plus synthetic events.

This also runs through renderer-scoped CDP commands, not Chrome's Input.* domain — which means it works on background tabs too. Vibe doesn't need to steal your window focus or bring a tab to the foreground to fill it.

Dropdowns and checkboxes use different, purpose-built mechanisms (below), because native <select> and checkbox elements don't have the same framework-state problem that text inputs do.

Filling a single field with a specific value

For one field, tell Vibe the field and the exact value:

Fill the "Current job title" field with "Senior Product Manager at Acme Corp"
On this page, fill the email field with jane.doe@example.com

The agent locates the field from the current page snapshot and fills it with your exact text — not a paraphrase or a guess at formatting.

Filling a multi-field form in one instruction

For forms with several fields, fill_form fills them all in a single call instead of one fill per field. Give the whole set of values in one instruction:

Fill out this application form: first name "Jane", last name "Doe", email jane.doe@example.com,
phone 555-0142, and cover letter "I'm excited to apply because..."
Fill in the shipping address form using: 123 Main St, Apt 4B, Austin, TX, 78701

Vibe maps each value to the matching field on the page and fills the whole form in one pass, rather than requiring a separate prompt per field.

Native <select> dropdowns are handled differently from text fields: Vibe sets the dropdown's .value and dispatches a native change event. That's sufficient for <select> elements specifically — the browser's own implementation updates the control's internal state on .value assignment, and React's onChange handler for selects listens for exactly that change event.

In the "Country" dropdown, select "Canada"

Checkboxes and toggles use a native .click() call, which correctly fires the browser's own change event — so it works for standard HTML checkboxes and for the CSS-styled custom toggle switches many modern apps use instead of a plain <input type="checkbox">.

Check the "Subscribe to newsletter" box
Turn on the "Enable dark mode" toggle in settings

Repetitive data entry across records or pages

Because Vibe reads the live page at each step, it can repeat a fill pattern across multiple records without you re-describing the fields each time:

For each of these 3 leads, open their CRM record and fill the "Status" field with "Contacted" and
add the note "Followed up July 11": [list of names/URLs]
Go through each product row in this admin table and set the "In Stock" toggle on for the ones
with quantity greater than 0

This is closer to what a person doing manual data entry does — read the current row, act on it, move to the next — than a fixed script that assumes every page looks identical.

Reviewing what was filled

After acting, Vibe reports the visible end state: what values landed in which fields, whether a toggle is now on or off, or what a submitted form's confirmation screen shows. Ask directly if you want the readback before doing anything else:

What does the form show now? List every field and its current value before I submit.

That's also a good use for Ask Mode — switch to it first to have Vibe read out a form's required fields without touching anything, then switch to Agent Mode to fill it.

Honest limitations

AI form filling with Vibe is not unlimited automation:

  • Automation stops before real purchases, payments, or other irreversible actions. Vibe will fill out every field on a checkout form — shipping address, card number field, promo code — but it will not complete a real purchase for you. Treat it as filling the form, not authorizing the transaction.
  • Very unusual custom widgets can fail. Canvas-rendered inputs, heavily obfuscated custom form components, or fields that don't expose a normal DOM value are rare but do exist, and Vibe may not fill them correctly. Standard HTML controls and typical CSS-styled toggles work; exotic ones are the exception.
  • It fills what you ask it to fill. If your instruction is vague ("fill out this form"), the agent will do its best from context, but a specific value per field, as in the examples above, gets more reliable results than an open-ended request.

For a broader look at what Vibe automates beyond forms, see AI Browser Agent and Browser Automation Without Code.

Get started

Install Vibe from the Chrome Web Store — see the extension installation guide for setup across Chrome, Edge, and Brave. Once it's installed, open the side panel on the form you want filled, stay on Agent Mode, and describe the values in plain English.

Because form data is often personal or sensitive — application details, addresses, account information — you can also choose which AI model handles it: the managed Vibe API (Free/Pro/Max), your own API key (OpenAI, Anthropic, Gemini, OpenRouter, Azure), or fully local options that never send data off your machine (Ollama self-hosted, or Chrome's built-in Gemini Nano). See Providers for details.

FAQ

Is this different from my browser's built-in autofill? Yes. Chrome's autofill only pastes data you've saved to your profile (name, address, a saved card) into fields it pattern-matches by type. Vibe fills any field based on a natural-language instruction, including fields Chrome has never seen before, and can work through multi-field and multi-step forms in one instruction.

Will it accidentally submit a payment? No. Per Vibe's form-automation behavior, the agent stops before real purchases, payments, or other irreversible actions. It will fill in checkout fields but will not complete the transaction for you.

Does it work with dropdowns and checkboxes? Yes. Native <select> dropdowns are handled via .value plus a change event; checkboxes and custom CSS toggle switches are handled via a native .click() call, which works on both standard controls and custom-styled ones.

Does it work on forms behind a login, like a job application portal or internal CRM? Yes. Vibe attaches to your real, already-open Chrome tab, so it acts in the same logged-in session you're already using — there's no separate automation browser or credential re-entry required.