MaxDiff (Best-Worst Scaling) Analyzer
Ask people to rate ten things and they will call nine of them important. Ask them to pick a best and a worst, and they have to choose. This tool turns those forced choices into a ranked list of priorities on a 0–100 scale that sums to 100 — so you can say one item is worth twice another, see which gaps are real and which are a statistical dead heat, and find the people who disagree with the average.
METHOD OVERVIEW & EQUATIONS
MaxDiff, or best-worst scaling, replaces the question “how important is each of these?” with a question that has a scarce answer: “of these four, which is most important and which is least?” Nobody can call everything important, because naming a best requires naming a loser.
A set of \(a\) items is modelled as two linked choices. The best choice is a logit over the whole set; the worst choice is a logit over what remains, on negated utility, because picking the worst item is choosing the most attractive option under a reversed preference order:
$$P(\text{best} = b) = \frac{e^{u_b}}{\sum_{j \in S} e^{u_j}} \qquad P(\text{worst} = w \mid b) = \frac{e^{-u_w}}{\sum_{j \in S \setminus \{b\}} e^{-u_j}}$$
Utilities are reported on a 0–100 scale that sums to 100, which is what makes MaxDiff output usable by someone allocating a budget:
$$\text{score}_i = \frac{e^{u_i}}{e^{u_i} + a - 1} \times \frac{100}{\sum_j \left( e^{u_j} / (e^{u_j} + a - 1) \right)}$$
Key Concepts
- Why best-worst beats a rating scale: a rating is denominated in a private currency. Generous respondents live in the 8–10 band and severe respondents never pass 6, so averaging ratings across people adds up quantities that were never in the same units. A best-worst answer records only which item beat which, which has no scale to misuse.
- Information per screen: one set of \(a\) items yields \(a - 1\) comparisons from the best choice plus \(a - 2\) from the worst, so \(2a - 3\) in total. A set of five gives seven comparisons where “pick your favourite” would give four.
- Ratio-scaled: because the scores sum to 100, an item at 20 really is worth about twice an item at 10. Raw utilities are log-odds and do not have that property.
- Counting analysis: best count minus worst count, over times shown. The napkin version. It should broadly agree with the model; where it does not, an item probably appeared in unusually strong or weak company.
- Relative, never absolute: the scores always sum to 100, so they describe how items rank against each other. Run MaxDiff on ten things nobody wants and you still get a confident-looking winner.
What your data file needs to look like
Long format: one row per item, per set, per respondent.
| respondent_id | task_id | item | best | worst |
|---|---|---|---|---|
| R001 | 1 | No monthly fees, ever | 1 | 0 |
| R001 | 1 | No minimum balance | 0 | 0 |
| R001 | 1 | Credit score monitoring | 0 | 1 |
| R001 | 2 | … | … | … |
best and worst are indicator columns — exactly one row per set
flagged for each. 1, TRUE and yes are all accepted.
Any set that is incomplete or self-contradictory is skipped and reported with a
reason rather than quietly dropped.
When to use MaxDiff instead of conjoint
- MaxDiff ranks a list of separate items: messages, claims, features, brand associations, benefits, barriers. There is no product being configured.
- Conjoint models a product made of attributes that vary together, so it can simulate market share and compute willingness to pay. MaxDiff cannot do either, because nothing has a price and nothing is being built.
- Rule of thumb: if the answer you want is a priority list, use MaxDiff. If it is a configuration or a price, use conjoint.
STEP 1: LOAD DATA
Use a Case Study
Load a realistic MaxDiff dataset with a written brief.
Select a scenario above to load a preset MaxDiff dataset with context.
Upload Your Own Data
Long-format best-worst data (CSV or TSV).
Drag & drop your MaxDiff file
Needs respondent, task, item, best and worst columns
No file loaded.