Tesler’s Law (Law of Conservation of Complexity)

Tesler’s Law (Law of Conservation of Complexity): Balancing Simplicity and Functionality in UX Design

Tesler’s Law, also known as the Law of Conservation of Complexity, asserts that there is a certain amount of complexity that cannot be reduced in a system. The key to effective UX design is determining where this complexity should reside: with the user or within the system. By thoughtfully managing complexity, designers can create more intuitive and user-friendly interfaces.

What is Tesler’s Law?

Tesler’s Law, named after Larry Tesler, a computer scientist and user experience pioneer, states that for any system, there is a certain amount of complexity that cannot be eliminated. The challenge is to decide how to distribute this complexity between the system and its users. In other words, while some complexity is inevitable, designers should aim to internalize it within the system to keep the user experience as simple as possible.

Importance of Tesler’s Law in UX Design

  1. Enhanced Usability: By internalizing complexity within the system, designers can create interfaces that are easier and more intuitive for users to navigate.
  2. User Satisfaction: Simplifying user interactions reduces frustration and cognitive load, leading to higher user satisfaction and engagement.
  3. Efficiency: Efficiently managing complexity can streamline tasks and processes, making it quicker and easier for users to achieve their goals.
  4. Competitive Advantage: Products that effectively manage complexity often stand out in the market, offering a smoother and more pleasant user experience.
  5. Error Reduction: Reducing complexity on the user side minimizes the likelihood of errors, improving overall system reliability and user trust.

Key Strategies for Applying Tesler’s Law

  1. Understand User Needs: Conduct thorough user research to understand the tasks users need to accomplish and the challenges they face. This helps in identifying areas where complexity can be reduced.
  2. Prioritize Features: Focus on essential features and functionalities that provide the most value to users. Avoid overloading the interface with unnecessary options that can increase complexity.
  3. Automate Where Possible: Automate repetitive or complex tasks within the system to minimize the burden on users. This can include features like auto-complete, predictive text, and intelligent defaults.
  4. Streamline Workflows: Design workflows that guide users through tasks in a logical and straightforward manner. Break down complex processes into manageable steps.
  5. Use Progressive Disclosure: Reveal information and options as needed rather than all at once. This helps users focus on the task at hand without being overwhelmed by too many choices.
  6. Design Intuitive Interfaces: Use familiar design patterns and intuitive controls that align with users’ mental models. This makes interactions more predictable and less complex.

Best Practices for Managing Complexity

  1. Conduct Usability Testing: Regularly test designs with real users to identify areas of complexity and gather feedback on how to simplify interactions.
  2. Iterative Design: Adopt an iterative design process that allows for continuous refinement and improvement based on user feedback and testing results.
  3. Provide Clear Instructions: Ensure that any necessary complexity is accompanied by clear, concise instructions and helpful tooltips to guide users.
  4. Offer Customization: Allow advanced users to customize their experience, providing access to more complex features if needed, while keeping the default experience simple for general users.
  5. Leverage Visual Hierarchy: Use visual hierarchy to prioritize important information and actions, making it easier for users to focus on what matters most.

Tools for Managing Complexity in UX Design

  1. Prototyping Tools: Tools like Figma, Sketch, and Adobe XD enable designers to create and test interactive prototypes, helping to identify and reduce complexity.
  2. Usability Testing Platforms: Platforms like UserTesting and Lookback facilitate user testing sessions, providing insights into how users interact with the system and where complexity can be minimized.
  3. Analytics Tools: Google Analytics, Hotjar, and Mixpanel help track user behavior and identify areas where users may be struggling with complexity.
  4. Automation Tools: Tools like Zapier and IFTTT can automate repetitive tasks and processes, reducing the burden on users.
  5. Feedback Tools: Collect user feedback through tools like SurveyMonkey and Typeform to understand user needs and preferences, guiding efforts to simplify the interface.

Real-World Examples

  1. Google Search: Google’s search engine is a prime example of internalizing complexity. The interface is simple and intuitive, but the system handles complex algorithms and data processing behind the scenes.
  2. Apple iPhone: The iPhone’s user interface is designed to be extremely user-friendly, hiding the complexity of its powerful capabilities. Features like Siri and automated updates simplify the user experience.
  3. Amazon One-Click Ordering: Amazon’s one-click ordering simplifies the purchasing process by automating steps like address and payment information input, reducing the complexity for users.
  4. Tesla Autopilot: Tesla’s Autopilot feature internalizes the complexity of driving automation, providing a simple interface for users while handling sophisticated tasks internally.
  5. Dropbox: Dropbox offers a straightforward interface for file storage and sharing, but manages complex synchronization and security tasks behind the scenes.


Tesler’s Law emphasizes the importance of balancing complexity within a system to enhance user experience. By internalizing complexity and simplifying user interactions, designers can create more intuitive, efficient, and satisfying products. Implementing strategies and best practices for managing complexity ensures that both the system and its users benefit from a well-designed, user-centric interface.

Ondrej Zoricak
Ondrej Zoricak