Autofill Help
Introduction
Autofill is not like the typical autofill feature built into modern browsers that prompt to fill out your address information. The browser autofill generally works fine, and you should continue using it for such purpose. While the Autofill extension can be used to autofill addresses, it's more an automation tool to reduce your work load and help protect against wrist injuries. Any text input or interaction that you can do using the mouse or keyboard can probably be automated using Autofill, especially if you are proficient at JavaScript.
The core concept is (1) you create autofill rules and (2) the rules are automatically executed when you land on a web page that satisfies one or more rule definitions. Autofill's main UI is the infobar, which is where you execute and generate rules. For quick access, it's a good idea to assign a global hotkey to launch the Autofill infobar. Autofill rules are managed from the Options page, which is what the rest of this documentation will cover.
Basic Usage
To add a new autofill rule, click on the [+] button at the bottom of the rules table. Rules are processed in the order in which they appear except for JavaScript rules, which are executed last. To reorder a rule, click on the
icon and drag it up or down, or drag anywhere on the row where you see the move cursor (this can also be done using Keyboard Shortcuts for keyboard warriors). To perform an action on an autofill rule, click on one of the following buttons to the right of the rule:
- [–] – delete rule
- [›] – move rule to a different profile
Click on the [🔍] button to toggle the search box. You can search for text in any of the columns in the rules table as well as the profile name and site filter (see below). Remember to click the Save button after you have modified one or more rules.
Defining an Autofill Rule
This is where you define all the form fields to automatically fill on page load. A form field, also known as a form control or form element, is used to submit data from the client (your browser) to the server. Below is a detailed description of each column in the rules table.
TIP: The quickest way to define autofill rules is to use the infobar to automatically create all of the rules for you. To generate rules for the entire form, right-click on the page and select "Add rules for this form" from the Autofill context menu, or click on the Autofill lightning bolt icon and expand the Generate Rules section. To generate a rule for one particular text/password input field only, right-click inside that input field and select "Add rule for this field" from the Autofill context menu. Once the rules are created, you can click on the Autofill logo in the infobar to open the Options page and fine-tune them if you wish. No more digging through the source code!
- Type: The type of form field you would like to autofill.
- Text – Select this to autofill text and hidden inputs (
<input type="text">
, <input type="email">
, <input type="number">
, <input type="search">
, <input type="hidden">
), multi-line text boxes (<textarea>
), and iframe-based WYSIWYG edit boxes commonly found in forums and blogs.
- Password – Select this to autofill password fields (
<input type="password">
).
- Select – Select this to auto-select dropdown menus and listboxes (
<select>
).
- Checkbox/Radio – Select this to auto-check or uncheck checkboxes (
<input type="checkbox">
) and radio buttons (<input type="radio">
).
- JavaScript – Select this to execute arbitrary JavaScript code when the page loads (as soon as the DOM is ready). Check out some sample JavaScript rules to get started. You also have access to two special functions:
Autofill('profile ID', delay)
– execute a profile, where 'profile ID'
specifies which profile to execute and delay
is the autofill delay in milliseconds (example: Autofill('c1', 1500)
). The profile ID is displayed in the tooltip when you hover over the profiles dropdown menu. To execute the "All" profile, use Autofill('all')
; to execute the "Unfiled" profile, use Autofill('')
. Note that whenever you execute a profile, that profile also becomes the active profile.
injectJquery()
– inject the jQuery library so that you can use it in your JavaScript rule. Sample usage: injectJquery().then(() => { /* Code to run after jQuery is loaded */ })
TIP: Many modern responsive websites use Bootstrap along with the Bootstrap-select plugin to render highly stylized dropdown menus constructed from <div>
s. For these sites you'll need to find the hidden <select>
elements binded to these "rich" dropdowns (usually immediately above them) in order to create your Select autofill rules. There are also some sites that output the selected value to a hidden field. In such cases, creating a rule based on the Select field type won't work; you'll need to identify the hidden field used for that dropdown menu and create a Text rule instead.
- Name: This is where you identify which fields to autofill. You can match against the following attributes:
name
id
title
placeholder
aria-label
aria-labelledby
aria-describedby
data-bind
(Knockout)
data-reactid
(React)
ng-model
(AngularJS)
value
(only applicable to checkbox/radio inputs)
src
(only applicable to iframe-based rich text editors)
class
Enter the full or partial text that matches one of the attribute values above for the field you want to autofill. If you want to do an exact match instead of partial match, then enter ^name$
; if you want to do a word boundary match (i.e., only matching whole words), then enter \bname\b
. If nothing is entered here, all fields of the selected type (Type column) will be autofilled, so leave it blank with caution. Every HTML form element should have at least one of these attributes. To quickly inspect a field's attributes, right-click on the field and select "Inspect element" from the context menu; alternatively, you can also view the source code (Ctrl+U) and search for the tag manually. Here are some more notes on this column:
- CSS selectors are supported.
- Regular Expressions are supported when matching the attributes above, which makes Autofill quite flexible.
- If you want to match one of the following reserved Regular Expression characters literally, then you need to precede it with a backslash (
\
): ^ $ . ? + * \ | ( ) { } [ ]
- Comments (everything between
/*
and */
) are ignored.
- Partial match is accepted.
- Match is case insensitive.
- Leading and trailing spaces are stripped.
- This column is optional.
This column supports {@variable_name}
and {field reference}
variable expansion (see Other Stuff for more information).
TIP: Regular Expression's lookbehind assertion (?<=
and ?<!
) allows you to create highly complex text patterns such as the one below, which matches anything that contains "name" but is not immediately preceded by "first" or "last":
(?<!first|last)name
This will, for example, match "fullname" and "username", but NOT "firstname" or "lastname" (you can create this rule and see it in action on the Practice Form).
- Value: The nature of this value changes depending on what field type is selected in the Type column.
- If Type = Text or Password, then enter the text that is to be autofilled.
- If Type = Select, then you can enter two types of values. First, you can enter the text or
value
attribute value of the option item you would like to auto-select. The value has to be double-quoted and Regular Expressions are not supported in this context. You can also enter the index number of the option item to automatically select (the first item has an index of 0). For multi-select listboxes, separate each double-quoted value or index number with a pipe (|
). Enter !
or leave blank (1!
and 0!
will also work) to select or unselect all items in the list, respectively. Example: if you want to select the first and third items in a multiple selection listbox, then enter 0|2
(0 2
will also work); if you want to select A and C in a list comprising A, B, C, D, and E, then enter "A"|"C"
. Enter ?
to randomly select one item from the dropdown menu or multi-select list.
- If Type = Checkbox/Radio, enter
1
to check or 0
to uncheck. If it's a checkbox or radio group and you can only match using the name
attribute, then you'll have to specify 1
or 0
for each input in the group. Append !
at the end to check/uncheck all items. Enter ?
to randomly toggle the checkbox. Example: if you want to check the second item in a four-item radio button group, then enter 0100
; to check all checkboxes, enter 1!
.
- If Type = JavaScript, then enter the JavaScript code to execute here or click Edit to edit it in the code editor (JavaScript code will always be evaluated last). This opens up a world of possibilities if you are familiar with JavaScript. For example, you could add a rule to auto-submit the form after all fields have been autofilled. You can use JavaScript rules to simulate almost anything that a human can do (see rules.txt for some ideas).
All field types except Checkbox/Radio support variable expansion; JavaScript rules only support {@variable_name}
variables (see Other Stuff for more information).
NOTE: The data saved by Autofill is NOT encrypted, so any text you enter here remains in the clear. I do NOT recommend using this extension to save passwords of sensitive accounts.
- Site: If you would like to activate Autofill only on certain websites, then enter any part of the document title (text inside
<title>
tag) or URL here. The title or URL of the site you're on has to match the pattern you enter here in order to trigger the autofill. This basically allows you to define form fields to autofill on a per-site basis. If this box is left blank, then autofill will be performed on all sites not matching what's listed in the Exceptions tab. Here are some more notes on this column:
- Regular Expressions are supported, so you can easily bind an autofill to multiple domains (e.g.,
google.com|yahoo.com
).
- If you want to match one of the following reserved Regular Expression characters literally, then you need to precede it with a backslash (
\
): ^ $ . ? + * \ | ( ) { } [ ]
- Put multiple filters on separate lines (or use the
|
pipe character, which means "OR" in Regular Expressions).
- Partial match is accepted.
- Match is case insensitive.
- Spaces and line breaks are stripped.
- This column is optional.
This column supports {@variable_name}
variable expansion (see Other Stuff for more information).
- Mode: The form fill method to use when autofilling. This option is only applicable to Text and Password rules. Backup rules and hidden fields will always be filled using the Safe mode by default.
- Safe – Select this method to autofill only fields that are empty. This is the default method to be on the safe side.
- Overwrite – Select this method to autofill all fields, including non-empty fields.
- Prepend – Select this method to insert Value at the beginning of the field.
- Append – Select this method to insert Value at the end of the field.
- Wrap – Select this method to insert Value at the beginning and end of the field.
- Increment – Select this method to add 1 to the existing field if it contains a number.
- Decrement – Select this method to subtract 1 from the existing field if it contains a number.
Profiles
Profiles allow you to organize all your autofill rules into different categories. For example, you can have separate profiles for addresses, personal info, account logins, blog post templates, and advanced search forms. To add, rename, rearrange, delete, duplicate, and sort profiles, select "Manage..." from the profile chooser to bring up the Manage Profiles dialog. If you delete an existing profile, you have the option to also delete all rules assigned to that profile or delete only the profile and move all rules to Unfiled. Shift- and Ctrl-click on multiple profiles to perform bulk operations on them. After making changes, click the Save and Close button to save your changes; clicking Cancel, clicking anywhere outside the dialog, and pressing Escape will discard all your changes. You can assign an autofill rule to a profile by clicking [›] to move it into the profile, or simply by switching to that profile and adding a new rule (rules added while viewing all profiles will be assigned to Unfiled).
Autofill's default behavior is to only process rules in the active profile. An active profile is the last profile you viewed in Options or the last profile you executed. If you want to execute all matching rules regardless of what the active profile is, then disable the "Autofill active profile only" option (see Other Stuff).
Site – If you would like to restrict all of the autofill rules in a profile to a certain page or domain, then enter any part of the document title (text inside <title>
tag) or URL here. This is similar to the Site column in the rules table, but works at the profile level. Note that rule-level site filters take priority over the profile site filter. As with the Name and Site columns, this field takes a Regular Expression, so these reserved characters should be escaped (i.e., preceded with a backslash): ^ $ . ? + * \ | ( ) { } [ ]
Hotkey – Enter a hotkey combination here to be able to quickly execute all the rules in this profile by pressing the assigned hotkey.
NOTE: Some hotkeys may not work if there is a conflict with another software or extension, or the hotkey is reserved by the operating system or browser.
Here you can set advanced options for profiles and rules. Each line needs to follow this syntax:
profile/rule ID: options
The following options are available:
all=true|false
– set to true
to execute the rule regardless of what the active profile is when the "Autofill active profile only" option is enabled (default is false
)
delay=n
– n
is the number of seconds to wait before autofilling; this overrides the global delay option (default is 0
)
forcefill=true|false
– set to true
to always autofill, even when in manual mode (default is false
)
Multiple options can be separated by spaces, e.g.:
r1: delay=2 forcefill=true
If you supply a profile ID, then the options will apply to all the rules in that profile; if you supply a rule ID, then the options will apply only to that specific rule. Profile and rule IDs are listed in the first column when you export the data.
TIP: You can quickly see a profile's ID by hovering the mouse over the profiles dropdown menu or [›] "move rule" button when in the "All" profile. A rule's ID is the same as its field reference (displayed in the tooltip when you hover over the Name or Value field), except that it starts with "r". For example, if the reference for Name is n1
, then the rule ID would be r1
. To see all of the profile and rule IDs, export your data (see Import/Export).
This is a global list of exceptions, similar to a blacklist. Any document title (text inside <title>
tag) or website URL that matches a pattern listed in this list will be ignored by Autofill. Exceptions take precedence over the Site column and profile Site filter in the Form Fields tab. Some more things to note:
- Regular Expressions are supported.
- If you want to match one of the following reserved Regular Expression characters literally, then you need to precede it with a backslash (
\
): ^ $ . ? + * \ | ( ) { } [ ]
- Enter one exception per line.
- Partial match is accepted.
- Match is case insensitive.
- Spaces and empty lines are stripped.
Text clips are snippets of boilerplate text that can be inserted into text fields via the right-click context menu. Text clips should be defined using this syntax:
Category
(optional) > Title
Text to be inserted
===
Title
Text to be inserted
The category will appear as a submenu under Autofill / Insert text clip. You can organize your text clips using as many categories and subcategories as you like; the text to the right of the last >
on the first line will always be the title. Separate each text clip with ===
on its own line. The text clip will be inserted at the cursor position inside the text field, or replace whatever text you have selected. Here are a few sample text clips:
Business Card
Tom Smith
321 Test Dr
Nowhereville, CA 90000
(408) 767-2676
===
Personal > Email > Gmail
tom@gmail.com
===
Personal > Email > Yahoo
tom@yahoo.com
===
Work > Email
tom@smith.com
NOTE: Chrome has a limit of 998 total context menu items, four of which are already used by Autofill. This leaves us with a maximum of 994 text clips. Since categories are displayed as submenus and each submenu also takes up a menu item slot, use categories sparingly because each category used means one fewer text clip that can be defined.
If you have text that you would like to reuse across multiple rules, then you can assign the text to a variable and reference it in the Value field. Each line needs to follow this syntax:
variable_name = some text
Variable names can only contain letters, numbers, and the underscore character. The text cannot contain line breaks; if you want to output a line break, then use \n
instead. You can even set a variable to a value returned by JavaScript. Here are some examples to get you started (more in variables.txt):
# Example: Monday, January 17, 2022 (format is region-specific)
long_date = javascript:new Date().toLocaleDateString('en-us', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'})
# Example: 1/17/2022 (format is region-specific)
short_date = javascript:new Date().toLocaleDateString()
To use a variable in a rule, enter {@variable_name}
.
Import allows you to load settings from a CSV file. You can copy the data from a CSV file opened in a text editor such as Notepad (do NOT open it in Excel because it does autocorrection that can change some of your values, such as "01" and "1.0" being replaced with "1"). The data to be pasted into this text box needs to be arranged in the following format:
- Profiles (columns):
- Profile ID (e.g.,
c1
)
- Name – profile name
- Site – profile site filter
- Hotkey – profile hotkey
- Autofill Rules (columns):
- Rule ID (e.g.,
r1
)
- Type – field type (
0
for Text, 1
for Password, 2
for Select, 3
for Checkbox/Radio, and 4
for JavaScript)
- Name – field name
- Value – value to autofill
- Site – rule site filter
- Mode – form fill method (
0
for Safe, 1
for Overwrite, 2
for Prepend, 3
for Append, 4
for Wrap, 5
for Increment, and 6
for Decrement)
- Profile – ID of the profile this rule belongs to (empty if it is Unfiled)
- The Rest (rows):
- advanced – list of configurations in the Advanced tab
- exceptions – list of filters in the Exceptions tab
- textclips – list of snippets in the Text Clips tab
- variables – list of variables in the Variables tab
- activecat – "Autofill active profile only" option (
1
to enable and 0
to disable)
- attributesoff – "Attributes to remove" option (
1
to enable and 0
to disable); pipe-separated list of attributes (pipes will be replaced with commas once imported)
- autoimport – "Auto-import" option (
1
to enable and 0
to disable); URL of remote file to import data from
- backup – "Back up text fields" option (
1
to enable and 0
to disable); minimum characters to back up
- badge– "Icon badge" option (
1
to enable and 0
to disable)
- closeinfobar – "Auto-close infobar" option (
1
to enable and 0
to disable); menu selection (index starting from 0)
- debug – "Debug mode" option (
1
to enable and 0
to disable)
- delay – "Autofill delay" option (
1
to enable and 0
to disable); number of seconds to delay
- filtercats – "Filter profiles" option (
1
to enable and 0
to disable)
- fluid – "Fluid layout" option (
1
to enable and 0
to disable)
- hidebackup – "Hide backup profiles" option (
1
to enable and 0
to disable)
- manual – "Manual mode" option (
1
to enable and 0
to disable)
- mask – "Mask passwords" option (
1
to enable and 0
to disable)
- menu – "Context menu" option (
1
to enable and 0
to disable)
- overwrite – "Overwrite by default" option (
1
to enable and 0
to disable)
- sitefilters – "Site filters" option (
1
to enable and 0
to disable); menu selection (index starting from 0)
- skiphidden – "Skip hidden fields" option (
1
to enable and 0
to disable)
- sound – "Sound effects" option (
1
to enable and 0
to disable)
- vars – "Expand variables" option (
1
to enable and 0
to disable)
- voice – "Wizard's voice" option (
1
to enable and 0
to disable); menu selection (index starting from 0)
Import mode:
- Replace – Replace all settings with data imported from the CSV file. Use this option to restore your data.
- Append – Append profiles, autofill rules, advanced options, exceptions, text clips, and variables in the CSV file to the existing data. This option allows you to import individual sections (e.g.,
### AUTOFILL PROFILES ###
). Note that this mode does not apply to CSV auto-imported from a URL (see below).
Export allows you to save all settings to a CSV file for backup. Once your settings are stored in an external file, you can later use the Import feature to restore the settings in your current browser or transfer the settings to Autofill in another browser (Chromium, Firefox, Edge). Since browser extensions cannot access the file system at the moment, you will have to manually copy the generated CSV data, paste it into a text editor (do NOT paste it into Excel), and save the file with a .csv
extension.
TIP: If you have a lot of autofill rules you'd like to reorder, then it's faster if you export your settings to a CSV file, reorder the rules in a text editor, and import the settings back into Autofill. Similarly, if you want to move many rules into different profiles at once, then it's best to do this in a text editor by reassigning their profile IDs (e.g., c1
). Once you get familiar with the CSV data structure, you can edit your autofill rules and settings in bulk before importing them back into Autofill.
As an alternative, you can also import data from a remote file by entering the file's URL in the field below the main Import/Export box and clicking Import. The URL needs to point to a plain text file that has the same structure as the exported CSV data. The server hosting this file needs to have the following two response headers:
Access-Control-Allow-Origin: *
Content-Type: text/plain
The first header is to prevent cross-origin errors; the second header ensures that the file is served in plain text format (as opposed to HTML). Tick the checkbox to the right of the
Import button if you would like to automatically import data from the remote file whenever the browser starts. This is a great way to manage autofill rules for a group of PCs from a centralized location. Here's a sample URL that has rules to autofill the
Practice Form:
https://pastebin.com/raw/k5j87pZB
Operation:
- Attributes to remove – Check this box to automatically remove attributes on page load. Enter the attributes as a space-separated list. This is a good way to remove attributes that can be annoying (e.g.,
autocomplete
) or prevent Autofill from working properly (e.g., readonly
). No autofill rules are required for this option to work, but the site you're on needs to match the active profile's site filter if one is defined.
- Autofill active profile only – Check this box to only execute autofill rules in the active profile (the profile you last executed or selected in Options). Uncheck this box if you want all rules from all profiles to be executed if the URL matches the site filter. Note that if you disable this option, every rule should have a site filter or it can lead to unexpected results since rules are matched by the Site field first, then by the Name field.
- Autofill delay – Check this box to add a delay before Autofill rules are executed. This option should no longer be required starting with Autofill v6.8.0 since it monitors the web page for dynamically generated fields and autofills them as they are inserted into the document. Note that this setting does not apply to backup rules, which are always executed 250ms after page load.
- Back up text fields – Check this box to automatically save text fields in case Chrome crashes. Now you can have the peace of mind that while you're inputing data into a form, everything you type is backed up in real time. The backup rules are saved to a special profile called "Backup - {site domain}". Backup profiles are unique in that they will always be automatically executed without having to set the profile as active. To avoid polluting the profiles list, backup profiles are only displayed on the Options page where you can manage them there. Note that password fields are never backed up for your own protection.
- Debug mode – Check this box to show debugging messages in the Chrome console. To open the console, press
Ctrl+Shift+J
. This is useful for troubleshooting if you want to see which rules are executed on a particular web page.
- Expand variables – Check this box to replace a
{
…}
variable with its output. There are currently five types of variables you can use in the Value column:
{@variable_name}
– This variable outputs the text assigned to the variable defined in the Variables tab.
{field reference}
– This variable outputs the value of the referenced field. The field reference is displayed in the tooltip when you hover over the Name and Value fields in the rules table. Note that you can only reference another field within the same profile, unless the active profile is "All". Examples: {n1}
, {v2}
{number++}
/{number--}
or {number+step}
/{number-step}
– The variable containing ++
/--
increments/decrements the number by one every time it is autofilled. To specify a custom iteration step, add +
/-
and the step amount after the number ({10++}
is equivalent to {10+1}
and {10--}
is equivalent to {10-1}
).
{#}
or {#number}
– This variable outputs a random number. You can specify the number of digits after #
({#1}
is equivalent to {#}
). Example: to generate a random telephone number, you would enter ({#3}) {#3}-{#4}
{$}
or {$number}
– This variable outputs a random alphanumeric string. You can specify the number of characters after $
({$1}
is equivalent to {$}
). Example: to generate a 16-character dummy text string, you would enter {$16}
{word1|word2|...}
– This variable acts like a text spinner, randomly outputting one word from a list of words that you specify. Example: to output "red", "green", or "blue" randomly, you would enter {red|green|blue}
{(word1|word2|...)}
– This variable is like a text spinner (see above), except every time a word is outputted it is removed from the set (you can call it a shrinking text spinner).
{word1,word2,...}
– This variable outputs the words in sequential order as listed instead of randomly. When the last word in the list is outputted, it starts from the beginning again. Example: to output "red", "green", and "blue" in that order, you would enter {red,green,blue}
{(word1,word2,...)}
– This variable is like a sequential list (see above), except every time a word is outputted it is removed from the list (you can call it a shrinking sequential list).
NOTE: For text spinners and sequential lists, you need to escape the following characters with a backslash (\
): , | ( ) { }
. You cannot use these variables inside a JavaScript rule, with the exception of {@variable_name}
variables.
- Manual mode – Check this box to trigger Autofill only when you select a profile to execute under Execute Profile. If you don't like the idea of Autofill automatically filling out forms and prefer to manually choose which profile to execute, then this option is for you.
TIP: Hotkeys go really well with manual mode, so be sure to set them for profiles that you intend to use frequently. You can also set a global hotkey to open the infobar and quickly search for a profile to execute.
- Overwrite by default – Check this box to set the default form fill method to Overwrite. This option does not apply to backup rules, which always default to Safe mode.
- Site filters – Check this box to specify a more specific site filter when generating autofill rules. Given the sample URL https://www.google.com/search?hl=en&q=autofill#top, here is the site filter that would be defined for each policy:
- Domain + Path (default) –
google.com/search
- Domain + Path + Query –
google.com/search?hl=en&q=autofill
- Domain + Path + Query + Hash –
google.com/search?hl=en&q=autofill#top
With this option disabled, only the domain will be used (google.com
), or filename if it's a local file.
- Skip hidden fields – Check this box to bypass autofilling fields that are not visible on the screen. This option can be used to avoid fields that are intentionally hidden (e.g.,
<input name="trap" style="display:none">
) to act as a honeypot to detect spambots and render the form submissions invalid. Read this article for more information.
Interface:
- Auto-close infobar – Check this box to choose when to automatically close the Autofill infobar; otherwise, the infobar will remain open until you manually close it by clicking on the "x" icon or pressing Escape (if the focus is inside the infobar).
- Context menu – Check this box to access Autofill from the right-click context menu. If you remove the context menu, then you can always access Autofill by right-clicking on the extension icon (lightning bolt) in the toolbar. Note that context menu items for text fields ("Insert text clip" and "Add rule for this field") will always be visible.
- Filter profiles – Check this box to only show profiles in the infobar whose site filter matches the current web page. This option ignores rule-level site filters and performs the match strictly based on the profile-level site filter.
- Fluid layout – Check this box to resize the rules table and text boxes to fill the viewport (visible window height) to reduce scrolling. Keep this option enabled if you want the controls at the bottom of the page to always be visible without having to scroll down.
- Hide backup profiles – Check this box to suppress showing backup profiles in the Profiles list. If you have the "back up text fields" option enabled, your Profiles list can quickly be flooded with backup profiles, so this is a way to keep it clean.
- Icon badge – Check this box to show the number of rules executed on the extension icon (lightning bolt). If you do not see the lightning bolt icon, then it's likely hidden away in an extensions submenu. For example, in Chrome try clicking on the icon that looks like a puzzle piece; if the lightning bolt icon is there, click on the pin icon to ensure Autofill is always visible on the toolbar.
- Mask passwords – Check this box to replace passwords with bullets (•). This is to improve security in case someone is standing behind you or looking over at your screen.
- Sound effects – Check this box to play sound effects after every autofill operation. Keep in mind that Autofill also works on hidden iframes, so if this option is enabled and on the rare occasion you go to a page that triggers an autofill rule only in the hidden iframe, then you will still hear the sound effect even if nothing is autofilled in the main (parent) document.
TIP: You can customize the sound effects by replacing sound.ogg
with your own audio file. On Windows, sound.ogg
is located in %USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions\nlmmgnhgdeffjkdckmikfpnddkbbfkkk\{version number}. If you're using Mac or Linux, then try searching for "sound.ogg". There are two requirements for the audio file: (1) it has to be in Ogg Vorbis format, and (2) it has to be at least 0.40 seconds in length.
- Wizard's voice – Check this box if you want to hear the Wizard speak after generating autofill rules. Select "Random" to randomize the voice each time you summon the Wizard.
Subscription:
After you subscribe, you should be getting an order confirmation email from Stripe.
If you don't see it, look in your Spam folder.
Inside this email there should be an invoice number.
Enter this invoice number in the text field and click the "Verify Subscription" button.
After a new seconds, the button should change to "Subscribed" to verify that you have been registered successfully and should no longer see the fundraiser banners.
Click on the "Manage Subscriptions" button to go to the customer portal where you can do things like update your payment method, change subscription plans, and cancel your subscription.
Keyboard Shortcuts
|
Chrome, Edge, Firefox – Windows, Linux |
All Browsers – Mac |
Options – Global |
Close modal |
Esc |
Esc |
Options – Form Fields tab (when cursor is inside a text box) |
Go to previous rule |
↑ |
↑ |
Go to next rule |
↓ |
↓ |
Move rule up |
Alt + ↑ |
⌥ + ↑ |
Move rule down |
Alt + ↓ |
⌥ + ↓ |
Infobar |
Close infobar |
Esc |
Esc |
Frequently Asked Questions
- I don't get it—how does Autofill work?
- How come some fields are not being autofilled? For the life of me I cannot get this to work!
- How do I auto-click a button (e.g., to automatically submit a form after autofilling)?
- How do I randomly select a checkbox from a group of checkboxes? What about randomly toggling one checkbox?
- How do I wait for a dropdown menu to be populated before autofilling it?
- How do I implement a text spinner like
{red|green|blue}
, except ensure that each value is used only once on the form?
- Where does Autofill store its data, and does it send the data anywhere?
- How do I autofill a form that uses generic elements (e.g.,
div
, span
, a
) instead of form elements (input
, select
, textarea
)?
- How do I create an autofill rule using the values from existing rules?
- What does the number on the lightning bolt icon mean?
- How come the extension icon is grayed out sometimes?
- How do I manually create an autofill rule?
- How do I use a JavaScript rule to check every checkbox on the page?
- What if I have multiple sets of data I want to autofill for the same form. Is there a way to select which set of data to fill the form with?
- Can I use jQuery in a JavaScript rule?
- Does Autofill support automating file uploads?
- Does Autofill support autofilling CAPTCHA?
- Autofill stopped working after updating. How do I go back to the previous version?
- How do I add a delay for a specific rule?
- How do I increment a number in an existing form field?
- What if I need further assistance?
- Can I bookmark the Autofill Options page?
- What exactly is a "form field" anyway?
- What should I enter in each column of the Form Fields tab?
- Can I reorder the autofill rules?
- Can I duplicate a profile?
- I pressed the hotkey assigned to a profile, but it didn't execute. What's going on?
- What if I want to create an autofill rule for only one specific field?
- Can I disable a specific rule in a profile?
- The text boxes in the Form Fields tab are too small—can't you make them any bigger?
- I'm a power user. Are there any keyboard shortcuts?
- Just curious, what technologies did you use to develop Autofill?
- What's new in this version?
- How can I help translate Autofill into my local language?
- Is Autofill open source?
- This extension has saved me a ton of time—any way I can give back?
- What permissions are granted to Autofill?
- What's the best way to troubleshoot Autofill issues?
- The field autofills, but how come I still can't submit the form?
- Is there a way to execute different profiles one after another?
- How do I assign a hotkey to open the Autofill infobar?
- How come I do not see all my profiles or text clips in the right-click context menu?
- Q I don't get it—how does Autofill work?
- A The easiest way to see how it works is to go to the practice page and generate some rules:
- Go to the Practice Form.
- Fill out some fields.
- Click on the Autofill icon in the toolbar (if you don't see the icon, then it's most likely hidden, so click on the menu icon to get to it).
- Create a new profile to save the rules in if you want to organize them by topic or website (this step is optional).
- Click on the Generate Autofill Rules button.
Now when you reload the page, all the fields that you filled out before should be autofilled.
- Q How come some fields are not being autofilled? For the life of me I cannot get this to work!
- A The web is like a wilderness—you never know what you'll encounter. With this said, there are generally two types of forms that can trip up Autofill:
- Forms that use dynamic field names. The rules generated by the Autofill infobar should work most of the time, but there are some complex forms where these rules will fail to work because every time you load the page the input elements'
name
attribute values change (e.g., they contain a randomly generated string or timestamp). For example, the first time you use the infobar rules generator the name
attribute for the First Name field is "fname1481162526802", so the generated rule is ^fname1481162526802$
; however, the next time you visit the page the name
attribute changes to "fname1481162889085", so of course the rule won't match anymore and hence this field will not get autofilled. In such cases, you'll have to manually tweak the rules generated by the infobar so that they will continue to match. You can either try a shorter, more generic Regular Expression pattern like ^fname
, or you can try matching against one of the other supported attributes (see Form Fields) instead of the name
attribute if the values in those attributes don't change.
- Forms that rely on elements not supported by Autofill. Only traditional form elements (
<input>
, <select>
, <textarea>
) are supported by the infobar rules generator; for everything else, you'll have to use JavaScript rules. A good example is this online store. Add a product to cart and proceed to Checkout. The terms & conditions checkbox in the checkout form cannot be autofilled using the rule generated by the infobar. This checkbox is not getting checked because what you click on is not really a checkbox. Try right-clicking on it and select "Inspect"—you should see this highlighted:
<ins class="iCheck-helper" style="position: absolute; top: -20%; left: -20%; display: block; width: 140%; height: 140%; margin: 0px; padding: 0px; background: rgb(255, 255, 255); border: 0px; opacity: 0;"></ins>
It's an <ins>
element instead of the usual <input type="checkbox">
form element. To auto-click this, you'll have to use a JavaScript rule. Try this:
To understand what this code is doing, enter the line below in the JavaScript Console. To bring up the Console, press F12 or Ctrl + Shift + J and click on the Console tab.
querySelectorAll()
is a JavaScript method that takes a CSS selector as a parameter and returns a type of list called an array of all elements matching that CSS selector within the document
object (basically, everything between <html>
and </html>
). In this case, it returns an array of elements matching .iCheck-helper
, or class name "iCheck-helper". The [1]
after this method is the index number. You can access items in the array by referencing an item's index number within the array. The thing to remember with JavaScript arrays is that index numbers start at zero, not one. Since the terms & conditions checkbox is the second item in the array, you use index number 1 to reference it. The last part of the statement (click()
) is the meat of the action—it triggers a click on that element.
When you create a JavaScript rule, the most important thing is to figure out what CSS selector to use to "select" an element so that you can act upon it (e.g., element.click()
to simulate a mouse click or element.value = 'something'
to autofill). In addition to querySelectorAll()
, you can also use querySelector()
to return the first matching element, which is simpler since the index number is no longer required. Here are some online references in case you want to dive deeper:
If all else fails and none of the rules work for you, then as a last resort you can follow the instructions in the answer to question 8.
- Q How do I auto-click a button (e.g., to automatically submit a form after autofilling)?
- A You can use a JavaScript rule to do this. Right-click on the button you want to auto-click and select "Inspect". You should see the underlying HTML code for that button highlighted in the Elements panel. Below is the code that you would enter in the Value column for various types of buttons.
<input type="submit" value="Apply">
<button id="continue-btn">Continue</button>
– OR –
If click()
is not working for you, then you can manually trigger a 'click' event like this:
As an alternative, you can add this JavaScript rule anywhere in the profile to auto-submit the form (JavaScript rules are always executed last):
Type = JavaScript
Value =
Also be sure to check out cuddlycows' excellent How-To auto-submit a form tutorial.
- Q How do I randomly select a checkbox from a group of checkboxes? What about randomly toggling one checkbox?
- A To randomly select a checkbox from a group of checkboxes, you can use a JavaScript rule. To give you an idea, here's a rule that will randomly select one of the four checkboxes on this test page:
Type = JavaScript
Value =
To randomly toggle a checkbox on or off, use the "?" value, e.g.:
Type = Checkbox/Radio
Name = ^subscribe$
Value = ?
- Q How do I wait for a dropdown menu to be populated before autofilling it?
- A A common scenario for this is when you want to select a state dropdown menu, but it's only populated when you select Country = US. If you use a standard autofill rule for state, then Autofill will try to execute it before the state dropdown menu is fully populated with all the states, so the rule will likely fail. To work around this, you'll have to use a JavaScript rule. Let's say you have this HTML code:
<select name="country">
…
<option value="US">United States</option>
…
</select>
<select name="state">
<!-- Initial state is empty -->
</select>
Your rule would look something like this:
Type = JavaScript
Value =
The same concept applies for fields that are created dynamically (i.e., don't exist when the page first loads). For example, here's how you would autofill the comment box on YouTube:
- Q How do I implement a text spinner like
{red|green|blue}
, except ensure that each value is used only once on the form?
- A Let's say you have the following input fields and you want to fill them with the values "red", "green" and "blue", where each value is only used once:
<input name="color1">
<input name="color2">
<input name="color3">
Starting from Autofill v10, you can use the new shrinking text spinner variable to accomplish this. Here's what the rule would look like:
Type = Text
Name = ^color[1-3]$
Value = {(red|green|blue)}
As an alternative, you can also use a JavaScript rule. Your rule would look something like this:
Type = JavaScript
Value =
- Q Where does Autofill store its data, and does it send the data anywhere?
- A Autofill stores its data in the extension's
chrome.storage.local
. Autofill does not and will never send your data anywhere. You can verify this by monitoring the Network tab. In fact, Autofill doesn't even track you using Google Analytics or anything else. Note that even though your data is not sent anywhere, you should still NOT use Autofill to store sensitive or confidential information since the storage area is NOT encrypted, which means anybody with access to your computer will be able to see whatever you store in Autofill if they know where to look.
- Q How do I autofill a form that uses generic elements (e.g.,
div
, span
, a
) instead of form elements (input
, select
, textarea
)?
- A Some forms use generic elements to make the UI look pretty, but behind the scenes there is likely JavaScript that stores the selected values in hidden input fields (a good example is Google Forms). Since these "rich" forms are tricky to reliably autofill, I recommend either of the methods below to manually create the rules. Between the infobar-generated rules and the course of action outlined here, you should be able to autofill the vast majority of forms; however, you never know with the internet, so your mileage may vary.
Method 1: Target the form directly. Since the main purpose of a form is to submit information back to the server, you can short-circuit the input selection process and set the relevant form values directly. Chrome comes with a great tool to monitor what information is sent when you submit a form, which you can use to craft your autofill rules. Here are the steps:
- Go to the page with the form you want to autofill.
- Open Developer Tools (F12 or Ctrl + Shift + I).
- Go to the Network tab.
- Ensure the "Preserve log" option is checked.
- Look for the
<form>
element containing the fields you want to autofill and make a note of the action
attribute value. This is the server script that handles the form data. Also make a note of the form's id
or name
attribute value, which you'll need to submit the form later on (last step). A quick way to find the correct <form>
element is to right-click on a field and select "Inspect", then follow the breadcrumbs at the bottom of the Elements tab from right to left until you get to "form".
- Fill out the form with the values you want and submit it.
- In the Network tab, click on the link to the form
action
script from step 5. If you see multiple rows with the same name, then click on the one with "document" under the Type column.
- Go to "Query String Parameters" at the bottom (expand it if it's collapsed) and make a note of all the parameters. For example, if I were to search for "autofill" on Google, I would see something like this after submitting the form:
safe: off
site:
source: hp
q: autofill
oq: autofill
gs_l: hp.3..0i20k1l2j0j0i131k1j0l6.13514.14205.0.24666.11.9.0.0.0.0.511.1305.2-2j1j0j1.4.0....0...1c.1.64.hp..7.1.302.0.B15ZjP-S264
The text to the left of the colon is the parameter key, and it maps to the input's name
attribute; the text to the right of the colon is the parameter value, and it maps to the input's value
attribute. A parameter refers to this key-value pair. These parameters are sent to the server when you submit the form, and they're the only things that matter as far as Autofill is concerned. Once you know what the parameters should be, then you are ready for the next step...
- Create autofill rules for the fields from step 8 (assuming these are hidden inputs, which are equivalent to text inputs). Using the same Google search example, the rules would look like this:
Type = Text
Name = ^q$
Value = autofill
Type = Text
Name = ^oq$
Value = autofill
As you can see, you can usually get away with assigning a value for only the relevant fields, but you should experiment to see what works. If the rules don't work, then there's a chance that Autofill is executing them too fast, in which case you can add a delay by using a JavaScript rule, e.g.:
Type = JavaScript
Value =
This tells Autofill to wait 2000 milliseconds (2 seconds) before executing the JavaScript code. If you want to increase the delay, then change 2000
to a larger number.
Method 2: Simulate user input. In theory, you should be able to autofill any form by simulating a human being via JavaScript. Here's a rule that simulates a person selecting the German language from a sample Google Form:
Type = JavaScript
Value =
- Q How do I create an autofill rule using the values from existing rules?
- A First, enable variables by going to Autofill Options / Other Stuff tab and make sure the "Expand variables" option is checked. With variable expansion enabled, you should see a little gray box with some white text inside in the upper right corner of every field on the Form Fields tab. This is the variable name, or field reference. In order to use the value from that field, you refer to its field reference in your rule. For example, if you have a rule for First Name with the field reference
v1
and a rule for Last Name with the field reference v2
, and you want to autofill "[First Name] [Last Name]", then create a rule with this as the value: {v1} {v2}
. For more information on variables, please refer to the Other Stuff section.
- Q What does the number on the lightning bolt icon mean?
- A This number, also called an icon badge, represents the number of rules that were executed on the current page. Sometimes this number can be higher than you expected because Autofill runs in all iframes in addition to the main page, so the same rule may be executed in iframes as well.
- Q How come the extension icon is grayed out sometimes?
- A The lightning bolt icon is grayed out when there are no fields to autofill, or when the page title or URL matches something on the Exceptions list. The icon will light up when the following elements are detected:
<input>
, <select>
, <textarea>
, <iframe>
(generally used by rich text editors), and elements that have the contenteditable="true"
attribute. The icon is also grayed out when the extension auto-updates in the background; if this happens on a page with form fields, then you should reload the page for proper autofilling operation.
- Q How do I manually create an autofill rule?
- A Follow these steps:
- Right-click on the field you'd like to autofill and select "Inspect". This will bring up the field's HTML code. Most form fields should have a
name
or id
attribute; the value in this attribute will act as a unique identifier for the autofill rule. See the Form Fields section for a full list of attributes you can match against.
- Go to Autofill Options. From the Form Fields tab, click on the [+] button. This will add a new row to the rules table.
- Here's what you would enter for each column in the row:
- Type – the type of field it is. This should be self-explanatory. The JavaScript type allows you to automatically execute JavaScript code on page load.
- Name – a unique identifier for the field to autofill. Use the attribute value from step 1. Note that Autofill does a partial match, so if you enter "email" and there's another field with
name="email2"
, then this rule will autofill both fields. To prevent this, enter ^email$
to force an exact match.
- Value – the value to autofill the field with.
- Site – the page's URL or title. This acts as a site filter to trigger the autofill, so it's highly recommended that you enter something or else Autofill will blindly autofill every field of the selected type.
- Mode – leave this on Safe. If the field contains a default value that you'd like to overwrite, then change the mode to Overwrite.
- The most important step: click Save.
If you reload the page, the autofill rule you just created should kick in and automatically fill out that field.
- Q How do I use a JavaScript rule to check every checkbox on the page?
- A Actually, you don't even have to use a JavaScript rule for this—you can simply use a Checkbox/Radio rule, leave the Name field blank, and enter
1
for the Value field to check every checkbox on the page. However, if you still want to use a JavaScript rule, then you can use this code:
This will click every checkbox, so if one is already checked then it will be unchecked. If you want to have every checkbox checked regardless of its state, then enter this instead:
- Q What if I have multiple sets of data I want to autofill for the same form. Is there a way to select which set of data to fill the form with?
- A Yes, the Profiles feature is great for this. You can create a profile for each set of data. You may also want to enable manual mode (Other Stuff tab) for this purpose. Now you'll be able to manually execute all the rules in a profile from the right-click context menu (Autofill / Execute profile) or by pressing the assigned hotkey.
- Q Can I use jQuery in a JavaScript rule?
- A Yes, you can use jQuery by first injecting it into the document using a special Autofill function called
injectJquery()
. Here's a sample JavaScript rule that demonstrates jQuery injection:
Loading the jQuery library will cause Autofill to consume a tiny bit more memory, so only rely on it if you absolutely need to; otherwise stick to vanilla JavaScript (e.g., querySelector()
, querySelectorAll()
).
NOTE: This function injects jQuery v3. jQuery v1-2 are considered unsafe and no longer in compliance with Mozilla guidelines.
- Q Does Autofill support automating file uploads?
- A No, for security reasons Chrome doesn't allow autofilling of
<input type="file">
elements. The best solution for this is to use a screen recorder or macro utility like AutoHotkey.
- Q Does Autofill support autofilling CAPTCHA?
- A It depends on the type of CAPTCHA. To my knowledge there is currently no way to extract text from a CAPTCHA image with 100% accuracy using JavaScript. Please post in the support group if you have a good solution for this. However, it is possible to auto-check the "I'm not a robot" reCAPTCHA. For example, here's a rule that works on this reCAPTCHA demo:
Type = JavaScript
Value =
- Q Autofill stopped working after updating. How do I go back to the previous version?
- A You can install an older version of Autofill in Chrome by doing the following:
- Download and unzip one of the following Autofill versions to a folder (click the "Download" button):
- Go to chrome://extensions.
- Enable Developer mode (top right corner).
- Click the "Load unpacked" button (top left).
- Select the folder from step 1 (e.g., Autofill_v780) and click the "Select Folder" button.
You can install an older version of Autofill in Firefox by doing the following:
- Go to Autofill version history.
- Click on "Download file" for the version you want.
- Click the "Add" button, then the "Okay" button.
Note that if you manually install Autofill this way, then it will never get auto-updated.
- Q How do I add a delay for a specific rule?
- A The Delay option applies to all rules globally. If you want to add a delay for only one specific rule, then you'll have to use a little bit of JavaScript. Here's an example of waiting two seconds to autofill a field:
- Q How do I increment a number in an existing form field?
- A Let's say you want to increment the number in
<input name="count">
. You would create a JavaScript rule and enter this code:
Type = JavaScript
Value =
- Q What if I need further assistance?
- A If you need further assistance, please visit the official Autofill support group to start a new discussion or join an existing one. You can also post to the support group directly by sending an email to chrome-autofill@googlegroups.com. To get acquainted with Autofill, see what the rules look like for the Practice Form by automatically generating them using the infobar as outlined in the answer to question 1.
- Q Can I bookmark the Autofill Options page?
- A Yes, you can bookmark the following URL for quick access to Autofill Options:
chrome-extension://nlmmgnhgdeffjkdckmikfpnddkbbfkkk/options.html
The Options page can also be accessed through the right-click context menu if the setting is enabled in the Other Stuff tab, or by right-clicking on the extension icon (lightning bolt).
- Q What exactly is a "form field" anyway?
- A A form field, also known as a form control or form element, is used to submit data from the client (your browser) to the server. It can have the following HTML tags:
<input>
, <textarea>
, <select>
. Though not technically a form field, Autofill also supports WYSIWYG edit boxes that use the <iframe>
tag.
- Q What should I enter in each column of the Form Fields tab?
- A Move the mouse pointer over the
icon in the column header for some guidance. A detailed description is also available by clicking the Help button.
- Q Can I reorder the autofill rules?
- A Yes, you can easily reorder any rule by dragging the
icon on the right. If you are currently editing inside a text box, then you can press Alt + ↑ to move that rule up or Alt + ↓ to move it down.
- Q Can I duplicate a profile?
- A Yes, you can do this by following these instructions:
- Create a new empty profile in Options (this is the profile you want to duplicate to).
- Export the data to a CSV file under the Other Stuff tab.
- Open the CSV file in a text editor like Notepad.
- Copy the rows of the profile you want to duplicate and paste it immediately above
### OPTIONS ###
.
- In the newly pasted rows, change the profile ID to the ID of the profile you just created (this can be found under the
### PROFILES ###
section).
- Import the CSV data back into Autofill.
If you master the CSV data structure, you can do all sorts of raw manipulations in your text editor, copy all, then paste directly into the Import/Export text box. This opens up a whole new level of flexibility and power for you. Note that if you copy directly from Excel, some values may change as Excel does some autocorrection (e.g., "01" and "1.0" will be changed to "1"), which can lead to unexpected results. This is the reason why you should open the CSV file in a text editor instead of Excel.
- Q I pressed the hotkey assigned to a profile, but it didn't execute. What's going on?
- A Chances are very likely that this hotkey is already used by Chrome, another Chrome extension, another program, or possibly your operating system. Try setting another hotkey for that profile.
- Q What if I want to create an autofill rule for only one specific field?
- A You can generate an autofill rule for one text field by right-clicking inside this field and selecting "Add rule for this field..." in the Autofill context menu.
- Q Can I disable a specific rule in a profile?
- A The quickest way to disable a rule is to set its site filter to something that will never match, like
xyz
.
- Q The text boxes in the Form Fields tab are too small—can't you make them any bigger?
- A You can resize a text box by dragging the gripper (e.g.,
in Chrome) at the bottom right corner of the box. The new size will be preserved until you reload the page. You can also click on the Edit button to edit the value in a code editor (very useful for JavaScript rules).
- Q I'm a power user. Are there any keyboard shortcuts?
- A Yes, see the Keyboard Shortcuts section.
- Q Just curious, what technologies did you use to develop Autofill?
- A Mainly HTML, CSS, and JavaScript. HTML5: data attributes for various functionalities on the Options page, the
<audio>
tag for sound effects, and range input for the slider control. CSS3: border-radius
for the rounded corners, box-shadow
for the gradient shadows, flexbox for the modal dialog positioning, and transitions/transforms for the animations. Microsoft Ajax Minifier was used to keep the extension fast and light, and no JavaScript frameworks were used to further reduce the weight. All JavaScript performance testing was done using jsPerf. All coding was initially done in Notepad2, then later Notepad++.
- Q What's new in this version?
- A Click on the version number in the upper right corner to see the changelog.
- Q How can I help translate Autofill into my local language?
- A I'm glad you asked, and it's much appreciated! Please go to the Translations thread for guidelines on how to submit your translations.
- Q Is Autofill open source?
- A The Autofill extension is currently closed source.
- Q This extension has saved me a ton of time—any way I can give back?
- A I have poured countless hours into Autofill over the years, which began life in 2010 as an assistance tool for my disabled computer students and eventually evolved into the all-purpose extension that you see now. Since I'm just a one-person shop doing this in my spare time, anything that you can contribute would be a blessing whether it be posting how-to tutorials or answering questions in the support group. If you would like to donate money or subscribe, then head over to the Donate section. Thank you so much for your generosity.
- Q What permissions are granted to Autofill?
- A For full disclosure, here are all the permissions that are required by Autofill:
- host (http://*/*, https://*/*, file://*/*) – allow Autofill's content script to operate on all non-secure pages, secure pages, and local files. Technically, Autofill has to be able to read data (to detect form fields) and change data (to fill out the form for you) on the web pages that you visit. Note that Autofill does not and will never track your browsing history, nor does it transmit any data back to a remote server. Your data remains on your local hard drive at all times.
- contextMenus – add Autofill to the right-click context menu.
- storage – store rules and settings on your hard drive.
- unlimitedStorage – allow unlimited storage. Without this permission you would only be able to store 5 MB of data.
For a complete list of permissions and possible warnings, please refer to Chrome's Permissions with Warnings.
- Q What's the best way to troubleshoot Autofill issues?
- A To help me help you faster, it would be best if you could provide me with enough information to reproduce the issue consistently because the first step in resolving the issue is to be able to reproduce it. Please provide me with the following:
- Autofill rules you're having problems with – you can export the data and either email it to me privately or post it in the support group. If the rules contain private information, then remember to remove the sensitive bits or replace them with dummy data.
- URL of the form you're having problems with – if the page requires a login or is behind a private portal, then the next best thing is to save the page as HTML and provide the complete HTML code. You can save any web page by pressing Ctrl + S and selecting "Webpage, Complete". If you're having a problem with only one specific field, then you can provide me with the HTML code for that field by right-clicking on it and selecting "Inspect" to bring up the Elements panel. This element should already be highlighted for you; to grab the HTML code, right-click on the highlighted element and select Copy / Copy outerHTML.
- Error logs (if any) – Autofill can throw errors in two locations:
- Background page – to see if there are errors here, go to the extensions page (chrome://extensions) and click on "background page" to the right of "Inspect views" in the Autofill tile (if you don't see this link, then click "more..."). A new window should pop up; click on the Console tab. Make sure the dropdown menu to the right of the Filter input is set to "Default levels". Any errors should be printed in red text in the console.
- Content script – to see if there are errors here, go to the form you're having problems with and bring up the JavaScript console by pressing F12 and clicking on the Console tab. Make sure the dropdown menu to the right of the Filter input is set to "Default levels". Any errors should be printed in red text in the console.
- Q The field autofills, but how come I still can't submit the form?
- A Some sites use JavaScript validation to ensure that the user manually types the text into the field. Every site is different, but you can usually fool the validation by using
dispatchEvent()
to simulate user input. Example:
Type = JavaScript
Value =
If the input
event doesn't work, then try other keyboard events such as keyup
, keydown
, and keypress
. I once came across a form that required a mouse click on the field (mousedown
event) in order to properly validate the user input.
- Q Is there a way to execute different profiles one after another?
- A Yes, starting with v9.0.0 you can execute profiles from a JavaScript rule. This way you can chain a bunch of profiles together by having the first profile execute; the first profile contains a JavaScript rule that executes the second profile, and so on. Here is the function you can use to execute a profile:
Autofill('profile ID', delay)
.
To execute profile c1 (the profile ID is displayed in the tooltip when you hover over the profiles dropdown menu):
To execute the "All" profile:
To execute the "Unfiled" profile after a 1.5-second delay (1500 ms):
- Q How do I assign a hotkey to open the Autofill infobar?
- A To assign a global hotkey to activate the Autofill infobar:
- Chrome – go to chrome://extensions/shortcuts and enter the hotkey for Autofill.
- Edge – go to edge://extensions/shortcuts and enter the hotkey for Autofill.
- Firefox – go to about:addons, click on the gear icon, select "Manage Extension Shortcuts", and enter the hotkey for Autofill.
You can close the infobar by clicking on the "x" icon or pressing the Esc key.
- Q How come I do not see all my profiles or text clips in the right-click context menu?
- A This can occur in Chrome when you have too many profiles or text clips. Chrome is limited to a total of 1000 context menu items (inclusive of the parent Autofill menu). This means, for example, if you have 1000 profiles set up, you would only see 997 profiles (the other three are used by the "Autofill", "Add rules for this page", and "Execute profile" menu items), and Option would not be displayed in the context menu.
Donation
Autofill was a labor of love that sucked an enormous amount of time and energy to develop, test, continuously improve, and support.
As work commences on Automate, Autofill's MV3 successor, any financial contribution you can make will go towards ensuring that Automate will be the ultimate automation tool as I have left my day job to focus on extensions development full-time.
You can choose to do a one-time donation below.
Bitcoin address (BTC):
1F2dzJQozNLpErRtseSM1fTsG27v94gbZF
Ethereum address (ETH):
0x7d5A91B956fB8419D74f9B3CCBD63B916905CC41
Subscription
If you would like to continue to support me as an independant developer, then you can subscribe to Autofill as a service.
Subscribe
Thank you for your support. 🙏
– Tom
Origin Story
What most people don't know is that Autofill started life with a very different purpose than the automation tool they're used to today: as an accessibility plug-in to help people with disabilities be more productive on the computer.
From 2008–2010 I did service work at a Swiss NGO called Maison Chance.
One of my primary responsibilities as a web design teacher was to ensure that my 23 students were proficient enough at using the keyboard and mouse to be able to land a job so that they can be financially independant.
Most of my students had difficulty doing things that we take for granted, such as using their fingers or having enough motor functions to operate the mouse.
I built the original Autofill v1 in order to facilitate the rudimentary data entry that I saw them struggling with in the classroom every day.
The goal was for my students to identify where the repititions and boilerplate content were in their assignments, then spend all the time they needed to write the autofill rules that would do the work for them automatically on page load.
For the most part, this turned out to be wildly successful.
There was that initial one-time time investment to painstakingly input the rules, but after that my students' productivity literally shot up 200–500%!
Before my two-year contract was over, I managed to instill enough confidence and skills in my students to get them all hired.
Depending on the severity of their conditions, the jobs ranged from basic web design (Joomla admin) and Photoshop work to data entry (something Autofill is particularly good at).
In the beginning I would go to each computer in the classroom and manually install Autofill locally.
As I started adding more and more features to it, updating Autofill became quite a chore, so that's when I decided to try uploading it to the Chrome Web Store (or whatever it was called in 2010).
This saved me so much time as every time I published an update, it would roll out to all the computers in the classroom automatically.
The valuable time that I got back I would put into creating more interesting curriculums for my beloved students—a win-win.
Over the years, long after I ended my service work, Autofill sort of took on a life of its own as more and more people outside of my classroom started installing it.
Before I knew it, there was a bona-fide community built around Autofill, and the creative things that people do with it every day continue to blow my mind. 🤯
This is where it all began...
Credits
Modified versions of the following packages are used in Autofill:
- CodeFlask by Claudio Holanda – This powers the lightweight code editor you use when you click on the Edit button in the Value column.
- Fading JavaScript Tooltips 2kb by Michael Leigeber – This is responsible for the pretty tooltips you see when you hover over
in the Form Fields tab.
- Snarkdown by Jason Miller – This is used to parse the latest news in Markdown format and render it as HTML.
- TableDnD by Denis Howlett (ported to vanilla JavaScript) – This allows you to reorder rules in the Form Fields tab by simply dragging them up and down.