search blog

10 Usability Heuristics

These 10 principles are designed to guide the design of user interfaces that are easy to use and understand. They were set out by a man called Jakob Nielsen in 1994.

1. Visibility of System Status

The design should always keep users informed about what's going on. If something is loading or waiting the user should be made aware and preferably immediately.

2. Match between the System and the Real World

The system should "speak the users language" so that the user can understand what the system is outputting. Use language and conventions from the real world, it may be technology but the people using it are from the real world and understand things from the real world.

3. User Control and Freedom

Users should be able to roam a website, going back, forward, canceling an action, undo, etc. Users should be in control.

4. Consistency and Standards

The design should be consistent with other systems and follow established standards. This helps users understand how to interact with the system. You can deviate from standards (otherwise everything would look the same) but knowing when and how much by is the key.

There are 2 types of consistency: internal and external. Internal consistency is your own consistency. Take a website, if you have a button that's green with a light gray background and then apply those styles to a piece of plain text, the user would be mislead into thinking the text is now a button.

External consistency is where standards are external, take a e-commerce site. There will be a cart feature, it is common for this feature to be an icon in the top right of the site, that looks like a shopping card/trolley. This is easily recognizable to the user.

5. Error Prevention

This states that there should be features and design that prevents the user from committing an error. Take a button, the button should be visible, with contrast from background to foreground, it should be sized right so that people can click it confidently without clicking a different button. Or it could be something like a confirmation dialog to prevent a big action.

6. Recognition Over Recall

The different between recognition and recall is the amount of cues that you are given. If you are given enough cues as context you will not need to recall information, you can recognize it, which is easier for the user. Take icons, it's all well and good designing a new save icon but unless everyone knows the meaning of the action behind the icon is to save it is pointless.

The user should be able to recognize what they are seeing instead of having to dig in memory for something.

7. Flexibility and Efficiency

The world is very big, there are lots of people, and those people have different ways of completing the same task. Some people live by the keyboard and do not like using a mouse, some people like a trackpad and gestures.

New users should be able to use the system, but users who would like to be more efficient should be able accelerate their flow, this could be by liking a photo on instagram by double tapping or by clicking CMD-C to copy instead of right click, copy.

8. Aesthetic and Minimalist Design

The signal-to-noise ratio (useful-to-irrelevant) should be high, the useful and relative information is in battle with the irrelevant information so let there be more useful information "signal". Whitespace can be fantastic at drawing attention to a particular space.

9. Help Users Recognize, Diagnose and Recover from Errors

Let users know if something has gone wrong, explain what is the problem, and then give an action (or more) to fix the error. Or offer a way to move on from the issue.

10. Help and Documentation

Users should be able to find help or documentation for your system. This could be via live chat, popover, or a help page. The documentation should be easily searchable, focuses on the users task, and list concrete steps to resolve the issue.


Published 3/4/2025