Forgiveness in UI design

November 17, 2009

Users make mistakes, no matter how good your user interface is designed. But there is something you can do about it. There are approaches you can use to allow users to recover from errors, or even better to prevent errors. One such approach is called forgiveness. Let’s explain it in more detail and see some inspiring examples.

Feedback and error recovery

One of the most important aspects of forgiveness is good feedback. Users should be informed about (potential) errors and how they can affect their work. Good feedback doesn’t consist only of well explained error messages. It also contains actions which users can perform in order to recover from the error.

However, users won’t be able to undo every mistake. Some mistakes are simply irreversible. Those are situations where users get really frustrated so, it is important to suggest solutions to help remedy problems. 

Error prevention

Feedback is necessary not only after an error happens; it has an important role in error prevention. Users should be warned of possible consequences of their actions. A good example is when users want to navigate away from the web form that was edited but not saved. A confirmation dialog can prevent loss of data. 

Error prevention can also be done by creating less constraints on the user interface. For example, an input field can accept various formats and let the system take care of it.

A few good examples – do it the Google way (not wave)

You don’t have to search much to find good examples, you are using them every day. Google really takes full advantage of forgiveness. Let’s see how they do it.


Undo feature is one of the most common and most useful means of forgiveness. If you delete email messages from Gmail inbox you will be able to undo your action immediately. Also, deleted messages can be recovered from trash 30 days after deletion.

Did you mean…?

If you search for a term and misspell it, there will be a suggestion to try a different search by clicking on a link which contains corrected terms, placed next to “Did you mean” label. Also, top two results from this corrected query will be shown above the original results. It is easy to recover from this mistake.

Auto save

When dealing with large amount of data such as text documents, one of the most efficient ways to prevent errors and loss of data is auto save feature. Users’ work is frequently saved thus minimizing potential damage of data loss. Even if something happens with unsaved work, you will be able to restore the last save. This is usually implemented in word processors but it can be used almost anywhere. 

Are you sure…?

An example from Google Docs. If you type something and try to close an open tab or window, you will be prompted with a confirmation dialog.

Forgiving format

User interface can be forgiving in less obtrusive ways than confirmation dialogs and warnings. It can accept various kinds of input from users and let the system handle them. This UI pattern is called forgiving format. In Google Maps search field you can search by any combination of these terms: country, city, address, zip and other places. 

Enable/disable actions when needed

Another good way to prevent users making errors is to enable actions only when it is possible to perform them. If you want to add a link in the body of an e-mail message in Google mail, you’ll be able to do so only if you actually type it in an input field. This simple trick can sometimes prevent serious damage.


There are many ways in which user interface can be forgiving. Good feedback with suggested actions for error recovery or even error prevention will highly affect the overall user experience. However, you should be careful because it is easy to overdo the usage of different measures. For example, if an action can be undone, there is no need to overwhelm users with confirmation dialogs and warnings.

Do you have some other examples of forgiveness? I am sure there are more excellent ideas besides Google.

Let's discuss this on twitter.

Before you leave