For test teams
Checking a form means filling it in dozens of times a day. Verifill runs each attempt in one click, remembers your settings for each form, handles fields that appear along the way, and keeps a record of the values used.
Verifill analyses the form on screen, identifies what each field expects and enters a value the site will actually accept. For teams that automate their tests, it also provides a verified selector for every field, with an indication of its robustness. Everything happens on your computer: no data is transmitted.
First time? The first steps in pictures, in five minutes →
The extension panel, simplified: click the tabs
Typing a name, an address and a date of birth for the hundredth time adds nothing. Verifill takes care of it, accurately.
Checking a form means filling it in dozens of times a day. Verifill runs each attempt in one click, remembers your settings for each form, handles fields that appear along the way, and keeps a record of the values used.
For every field and button: a selector verified on the page, the right frame, and a ready-to-use script in Robot Framework, Python with Selenium, or JavaScript. Fragile selectors are flagged as such.
Long online forms: creating an account, signing up, answering a questionnaire, completing a formality. Save your details once; Verifill places them in the right spot, in the format each field expects, even on a site it has never seen.
Many form fillers type any value into any field, and the site rejects it. Verifill examines the form, identifies each field, then writes the appropriate value.
A well-formed email address, the date of birth of an adult, a number within bounds, the pattern the field requires, a confirmation that repeats the original value. These details are what get a form accepted, or rejected.
Save your own values once and for all: Verifill places them in the right spot. When you do not need them, it composes a fictitious profile (first name, last name, address, phone), currently in French and Moroccan formats.
“Doc. no.”, “File ref.”, a label in Arabic in the middle of a French page: when a field's name is not explicit, Verifill still determines its purpose, and tells you when it is unsure.
React, Angular or Vue applications, older internal screens, custom drop-downs, fields inside an embedded frame, fields that appear along the way: that is where the difference shows.
Fields to leave empty, forced list choices, preferred values: everything is kept for that specific form. When you come back, your settings are in place, and one button resets them.
Every filled field is outlined in colour on the page and logged in a history: the value written, its rule, and whether it was accepted. The history exports to CSV, Excel or JSON.
Before filling, it separates what it is certain of from what deserves a check, and gives the reason. Afterwards, every written field is outlined on the page and logged. Nothing happens without your knowledge.
It understands labels in French, English and Arabic. An Arabic field in the middle of a French page is filled in Arabic, and only that field.
A table of profiles in CSV, Excel or JSON: Verifill matches columns to fields, works through the rows one by one and remembers your corrections (the first 5 rows in the free version, all rows with Verifill Enterprise). You can also show it once: fill in by hand, click “Learn the current form”, and it will replay the entry.
An ordinary generator gives you a selector that works today. Verifill tells you whether it will still work after the next release: it recognises ids generated by modern UI libraries, checks what each selector actually matches, and flags what is fragile instead of delivering it without warning.
Every selector is replayed before it is offered to you: it matches the field, and only that field.
Each field can be targeted in several ways, each rated robust, ambiguous or fragile. An id that changes with every release is recognised, and set aside.
Every line carries the field's label, “Date of birth”, not input_42.
If the field sits inside an embedded frame, the script enters it first through a stable marker, then leaves it.
Robot Framework, Python with Selenium or JavaScript; CSS, XPath or JavaScript for each field. The free version exports the complete script for the screen on display; Verifill Enterprise exports the whole journey, in the order visited.
# Generated by Verifill — Try-it page · Verifill
# Each selector was REPLAYED on the page: it matches the field and only that field.
# Title — Choice (radio) · required · by name + value · options: Ms | Mr
Click Element css=input[name="title"][value="Ms"]
# First name — First name · required · by id
Input Text css=#prenom Salma
# Date of birth — Date of birth (adult) · required · by id
Input Text css=#naissance 01/01/1990
# Nationality — Country / Nationality · required · by id · options: British | American | Irish | Canadian | Moroccan | Other
Select From List By Label css=#nationalite British
# Username — required · by name
Input Text css=input[name="username"] VALUE_TO_ENTER
# How did you hear about us? — List (auto choice) · by id · options: A friend | A search engine | Social media | An article | Other
Click Element css=#source # opens the list
Click Element xpath=//*[@role="option"][normalize-space()="A friend"] # picks “A friend”
# --- inside the “Delivery address” frame ---
# --- in the frame 0 (4 element(s)) ---
Select Frame css=iframe#cadre-livraison # frame located by id
# Recipient's name — required · by id
Input Text css=#dest VALUE_TO_ENTER
Unselect Frame
# Generated by Verifill — Try-it page · Verifill
# Each selector was REPLAYED on the page: it matches the field and only that field.
# Title — Choice (radio) · required · by name + value · options: Ms | Mr
driver.find_element(By.CSS_SELECTOR, "input[name=\"title\"][value=\"Ms\"]").click()
# First name — First name · required · by id
driver.find_element(By.CSS_SELECTOR, "#prenom").send_keys("Salma")
# Date of birth — Date of birth (adult) · required · by id
driver.find_element(By.CSS_SELECTOR, "#naissance").send_keys("01/01/1990")
# Nationality — Country / Nationality · required · by id · options: British | American | Irish | Canadian | Moroccan | Other
Select(driver.find_element(By.CSS_SELECTOR, "#nationalite")).select_by_visible_text("British")
# Username — required · by name
driver.find_element(By.CSS_SELECTOR, "input[name=\"username\"]").send_keys("VALUE_TO_ENTER")
# How did you hear about us? — List (auto choice) · by id · options: A friend | A search engine | Social media | An article | Other
driver.find_element(By.CSS_SELECTOR, "#source").send_keys("A friend")
# --- inside the “Delivery address” frame ---
# --- in the frame 0 (4 element(s)) ---
driver.switch_to.frame(driver.find_element(By.CSS_SELECTOR, "iframe#cadre-livraison")) # frame located by id
# Recipient's name — required · by id
driver.find_element(By.CSS_SELECTOR, "#dest").send_keys("VALUE_TO_ENTER")
driver.switch_to.default_content()
// Generated by Verifill — Try-it page · Verifill
// Each selector was REPLAYED on the page: it matches the field and only that field.
// Title — Choice (radio) · required · by name + value · options: Ms | Mr
document.querySelector("input[name=\"title\"][value=\"Ms\"]").click()
// First name — First name · required · by id
document.querySelector("#prenom").value = "Salma"
// Date of birth — Date of birth (adult) · required · by id
document.querySelector("#naissance").value = "01/01/1990"
// Nationality — Country / Nationality · required · by id · options: British | American | Irish | Canadian | Moroccan | Other
document.querySelector("#nationalite").value = "GB"
// Username — required · by name
document.querySelector("input[name=\"username\"]").value = "VALUE_TO_ENTER"
// How did you hear about us? — List (auto choice) · by id · options: A friend | A search engine | Social media | An article | Other
document.querySelector("#source").value = "A friend"
99.4% of suggested selectors rated robust, across 467 elements on 61 pages, re-measured with every release.
Many tools claim that they work. We verify it: a collection of reference forms is replayed in full with every new release, and the result is published, including when it goes down.
Rebuilt from real sites: sign-ups, checkouts, formalities, business portals, multi-step journeys, pages in Arabic.
The expected value for each field is written by a person, without looking at what the tool suggests.
Replayed before every release. A single failed check, and the version is not published.
369 out of 376, and zero blockers: no value written that the form would reject. The figure is dated and re-published with every release.
Measured on 21 October 2026, version 3.79.2. A field is “understood” when the tool applies the same rule a person would; the 122 choice fields (lists, checkboxes, radio buttons) are excluded from this rate, since their value comes from an option. Selectors: 99.4% rated robust across 467 elements.
Does a form resist it? Report it to us. It joins our test collection, and the tool improves for everyone.
Report a formThis is not a marketing claim: the extension simply has no means of sending anything. No account, no server, no connection.
No online sync, no usage statistics, no tracking. We have no way of knowing that you use the tool.
Act on the tab on screen when you click, and keep your settings on your machine. Not your browsing history, not your cookies, not your other tabs.
The extension installs and is ready at once. No email address to provide, no password, nothing to activate online.
Turn the connection off: the tool fills in exactly the same way. It is the simplest demonstration, and it takes a few seconds.
The full backup is written to a folder you choose on your machine or network, never to a server of ours.
Settings → All memory, by address: you see everything that is kept, and erase it in one click. No other copy exists anywhere.
For teams that test and automate at scale: every feature without limit, a licence in your organisation's name, installation by your IT department and dedicated support.
A single script for an entire multi-screen journey, in the order visited, and selectors exported as JSON.
Complete datasets, several fills replayed at once, the whole history exported, unlimited custom fields and learning.
A licence in your organisation's name, verified on each workstation without any connection, and installation by your IT department across the fleet.
Rules tailored to your applications, guided onboarding and priority support.
Demonstration, trial for your team, then a quote: one email is enough to start.
Yes. The free version can be used on all your forms, on every site, and provides verified selectors, with no account and no time limit. Teams that need unlimited volumes, complete journeys and a licence in their organisation's name can get Verifill Enterprise, on quote.
No. Install the extension, open a form, click “1. Analyze fields” then “2. Fill checked fields”. There is nothing to configure and no account to create. Advanced settings exist but stay out of the way: you never have to open them.
No, never. The extension contains no networking code at all: no online sync, no usage statistics, no tracking. Turn your connection off and fill in a form: the extension works exactly the same way.
Your browser replays what you typed before, when it recognises the field. Verifill also fills in forms it has never encountered: it determines what each field expects, respects the required format and shows you what it did.
To anyone who automates tests. For every field and button, the tool suggests a CSS or XPath selector verified on the page, states whether it is robust, and exports a script in Robot Framework, Python with Selenium, or JavaScript. The selectors themselves work in common automation tools.
Yes, from the most modern web applications to older internal screens: React, Angular, Vue, custom drop-downs, embedded frames, fields that appear along the way. The tool always shows, field by field, what it wrote. Does a particular form resist it? Report it to us: it joins our test collection and the engine improves for everyone.
Yes. Save your own values (name, address, numbers) and the tool reuses them instead of inventing new ones. They stay in your browser only, and can be erased in one click.
A fictitious profile (first name, last name, address, phone, date of birth) that currently follows French and Moroccan formats. For other countries, save your own values or load a dataset: the tool uses them first.
Nothing is written without you seeing it. Every filled field is outlined in colour on the page, and the tool shows what it did and what it skipped. You correct it, and it remembers your choice for that form.
Google Chrome and Microsoft Edge. Firefox and Safari will follow: the engine is ready, only the packaging differs.
Only to install it from your browser's store. After that, never: not to activate it, not to use it.
To read the Security page: it answers a security review point by point. The package contains no third-party library and no downloaded code, and we gladly provide the source code for review before any rollout.
The extension installs from your browser's store in one click. No setup is needed: open a form, click “1. Analyze fields”, then “2. Fill checked fields”.