---
title: "Tree test the navigation before you build · Agent Wranglers"
url: https://agentwranglers.se/playbook/ux-design/research-and-structure/tree-tests
id: UXD-10
level: Recommended
updated: 2026-10-27
build: a2a6bdfed830
tokens: 769
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Tree test the navigation before you build it

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Research and structure](https://agentwranglers.se/playbook/ux-design/research-and-structure.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-27.

- ID: UXD-10
- Level: Recommended
- Chapter: [Research and structure](https://agentwranglers.se/playbook/ux-design/research-and-structure.md)
- Rule: Name menu groups from an open card sort with the users' own words. Then tree test the text-only menu. Change it until at least 70% of participants find each main item on their first path.
- Check: The design record holds a tree test with at least 30 participants for the current menu. Every main item has a first-path success of at least 70%, and the menu in the app matches the tested tree.
- How: A menu named after the company's departments makes users guess. In an open card sort, people group the product's items and name the groups themselves. In a tree test, people see only the menu as text and point to where they would find each item. That measures the structure without the look of the page. Use 30 or more participants per tree test, so one person's guess moves the result by little. Keep the winning labels in the interface and in [usability tests](https://agentwranglers.se/playbook/ux-design/research-and-structure/usability-tests.md), and test again after each new top-level item.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### JavaScript example

```js
const MIN_FIRST_PATH_SUCCESS = 0.7

export function weakItems(results) {
  return Object.entries(results)
    .filter(([, { firstPathHits, participants }]) => firstPathHits / participants < MIN_FIRST_PATH_SUCCESS)
    .map(([item]) => item)
}
```

### Python example

```python
MIN_FIRST_PATH_SUCCESS = 0.7

def weak_items(results: dict[str, dict]) -> list[str]:
    return [item for item, r in results.items() if r["first_path_hits"] / r["participants"] < MIN_FIRST_PATH_SUCCESS]
```

## Related rules

- UXD-9 [Test each main task with five users before launch](https://agentwranglers.se/playbook/ux-design/research-and-structure/usability-tests.md) in UX and deceptive design

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/ux-design/research-and-structure/tree-tests">Agent Wranglers UX and deceptive design playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Test each main task with five users before launch](https://agentwranglers.se/playbook/ux-design/research-and-structure/usability-tests.md)
- [Research and structure](https://agentwranglers.se/playbook/ux-design/research-and-structure.md)
