We regularly encounter and fill out forms—to apply, register, enroll, order things, and the list goes on. Forms are often poorly designed: overly complicated, nonintuitive, and redundant. As a result, we often make mistakes in completing them. We overlook important elements or mis-enter information and we generally do not enjoy the task. This holds true both on paper and on the Web.

Form design is clearly an area where functionality wins the day. Forms do not need to be visually appealing or cleverly worded; users do not expect to be delighted or entertained. Forms are a device for collecting information, and any enjoyment comes from ease of use and successful completion.

Forms should follow a logical and predictable flow, by beginning with personal information—first name, last name, birth date, gender, marital status—followed by contact information—address, phone number, email address. Users should not have to enter the same information more than once. Form fields should be clearly labeled, and fields that require information to be entered in a certain format should be clearly indicated.

Forms can have many different elements: labels, input fields, checkboxes, radio buttons, and dropdown menus. Each element in isolation does not have much use or meaning: what use is a form field without a label, or a label without a form field? The relationship between elements is what provides meaning and logic to a form and helps guide the user through to completion. For visual logic, we generally group related elements. Using proper HTML form tags, we can explicitly code the relationships between elements so nonvisual users can understand and complete forms.

But even a well-designed form built using good, solid HTML may sometimes be inadequate. Forms should not be the sole means for users to communicate with companies, individuals, and organizations represented on the Web. Users should be given an alternate mode of contact for the times when forms fail or do not meet user needs.