FreeToGenerate.com

Every autocomplete field name with the kind of control the specification says it belongs on — the part reference tables leave out. Nothing is uploaded.

Whatever you would put in the attribute. Tokens have an order: an optional section, then shipping or billing, then a contact hint, then the field name, then a credential type.

Try one:

What this value says

Section
none
Address
shipping
Contact
none
Field name
street-address
Credential
none
Bare value
none
Control group
multiline

Belongs on a textarea. This is the one people most often get wrong — a postal address needs more than one line.

This is a well-formed value. Every token is defined and they are in the right order.

Every field name54

All 54 field names the specification defines, grouped by the kind of control each belongs on. That grouping is normative, and it is what most reference tables leave out.

TokenBelongs on
nametext
honorific-prefix
given-name
additional-name
family-name
honorific-suffix
nickname
organization-title
organization
address-line1
address-line2
address-line3
address-level4
address-level3
address-level2
address-level1
country
country-name
postal-code
cc-name
cc-given-name
cc-additional-name
cc-family-name
cc-number
cc-csc
cc-type
transaction-currency
language
sex
tel-country-code
tel-national
tel-area-code
tel-local
tel-local-prefix
tel-local-suffix
tel-extension
usernameusername
email
new-passwordpassword
current-password
one-time-code
street-addressmultiline
cc-expmonth
cc-exp-monthnumeric
cc-exp-year
transaction-amount
bday-day
bday-month
bday-year
bdaydate
urlurl
photo
impp
teltel

Hint tokens

These qualify a field name rather than replacing it, and they come before it. on and off are the exception: they stand alone.

billing · fax · home · mobile · off · on · pager · section · shipping · work

Credential types

Appended after a field name. autocomplete="username webauthn" is what makes a browser offer a passkey.

webauthn

What autocomplete=off actually promises

Less than most people think. The specification says the user agent should not remember the control's data — a should, not a must — so a browser that remembers anyway is still conforming. Worth being precise about what is not being claimed here: the specification contains no clause saying browsers may ignore off for password fields. It does not mention password managers or phishing at all. The should is the whole of it.

The field names and their control groups are generated from the HTML Standard's own definition anchors rather than read out of its table, because that table uses merged cells in both directions and cannot be read by position.

Also available in: Español · Português · Français · العربية

HTML autocomplete Attribute

The complete autofill vocabulary, a checker for the value you have written, and a precise answer to what autocomplete=off actually promises.

What is the autocomplete attribute?

The autocomplete attribute tells the browser what a form field is for, so it can fill it from what it already knows about the person using it. Writing autocomplete="given-name" on an input is the difference between a browser offering somebody's first name and offering nothing at all.

The vocabulary is larger and more structured than most people use. The HTML Standard defines 54 field names, from the obvious ones like email and postal-code to cc-exp-month, honorific-suffix, transaction-currency and one-time-code. Alongside them are 10 hint tokens that qualify a field name rather than replacing it — shipping, billing, home, work, mobile, fax, pager, a section grouping token, and the bare values on and off. There is also exactly one credential type, webauthn, which is appended after a field name and is what makes a browser offer a passkey.

Order matters and is fixed: an optional section token, then shipping or billing, then a contact hint, then the field name, then the credential type. This page parses whatever you paste and tells you which of those slots each token filled.

How to use it

  1. Paste the value you have written. Just the attribute's value, not the whole tag. The four sample buttons cover a postal address, a passkey login, a value with the tokens in the wrong order, and a typo.
  2. Read the control group. This is the useful part. The specification assigns every field name to a kind of control, and the tool says which one and what that means in practice.
  3. Check the problems, if any. An unrecognised token, a hint in the wrong place, a missing field name, or a section token with nothing after it. All of these are silent in a browser — nothing warns you.

The control group is the part everyone drops

Look up the autocomplete values anywhere and you will get a list of tokens with a sentence of meaning each. What that leaves out is normative and immediately useful: the specification also assigns every field name to a control group, and the group tells you what kind of input the token belongs on.

The one worth knowing first is street-address, which is in the multiline group. It is meant for a textarea, because a postal address does not fit on one line. If you want single-line inputs you want address-line1, address-line2 and address-line3, which are in the text group. Putting street-address on a single-line input is the commonest mistake this page can show you, and nothing in a browser will mention it.

The date-shaped tokens split the same way. bday is in the date group and belongs on an input of type date, because it is a whole year, month and day. bday-day and bday-year are in the numeric group — they are single numbers and belong on numeric inputs. cc-exp is in the month group, which is a year and a month together, while cc-exp-month is numeric. Four tokens that all look like dates, three different kinds of control.

A few more that surprise people: one-time-code is in the password group, not the numeric one, which is what lets a browser offer a code it has just seen arrive. photo and impp are both in the url group, because their values are addresses rather than names. And cc-number is in the text group rather than numeric, since a card number is a string of digits and not a quantity.

What autocomplete=off actually promises

Less than its reputation suggests, and it is worth being exact. The specification says that when a field's autofill field name is off, the user agent should not remember the control's data and should not offer past values. That is a should, not a must. A browser that remembers anyway is still conforming.

It is equally worth saying what the specification does not contain, because this is where a lot of writing on the subject overreaches. There is no clause permitting browsers to ignore off on password fields. The section does not mention password managers, and it does not mention phishing. The should is the whole of it. Browsers do behave in ways that people describe as ignoring off, and that behaviour is real, but it is not something the standard authorises in the text — so this page does not claim that it does.

The practical reading is simple enough. off is a request, not a control. If a value must not be stored, the attribute is not the mechanism that guarantees it.

Honest limitations

This checks a value, not a page. It cannot see which element the attribute is on, so it can tell you that street-address belongs on a textarea but not that yours is on an input. That is the check that would catch the most real mistakes and it needs your markup, not your attribute value.

Nor can it tell you whether a browser will actually fill the field. Autofill depends on what the browser has stored, on heuristics that vary between browsers, and on the surrounding form — a correct attribute makes the right behaviour possible rather than certain.

The vocabulary is a snapshot. The specification adds to it: webauthn is a recent arrival, and one-time-code is newer than much of the writing you will find about this attribute. The list here is generated from the standard rather than typed out, which makes it straightforward to regenerate, but it is still the standard as it stands today.

One note on how that list was built, because it affected what this page can claim. The specification's own table uses merged cells in both directions — it has a class named for non-rectangular indentation — so it cannot be read by position, and a positional read produces a table that looks right and is wrong. The data here comes from the specification's definition anchors instead, with the extraction checked against tokens whose answers were known in advance.

Why is it free?

The list is static and the parsing runs in your browser. There is no server involved, so there is nothing to bill for and no account to create.

Nothing is uploaded and nothing is stored. Reload the page and it has forgotten what you typed.