Tabellab
Business & operations

Van Westendorp price sensitivity meter: how to calculate it in Excel

The Van Westendorp price sensitivity meter asks people four questions about price, from "so cheap you doubt the quality" to "so expensive you would not consider it", and turns the answers into four cumulative curves. Where the curves cross, you read the optimal price point, the indifference price point and the range of acceptable prices. This guide builds the whole Van Westendorp analysis in Excel for a monthly app subscription, from twelve survey answers to an acceptable range of $8 to $12 a month with an optimal price point of $9, using nothing but COUNTIF and INDEX/MATCH.

Updated 21 Oct 2026 5 min read By Tabellab team

The four Van Westendorp questions

Each respondent gives four prices. The usual wording is:

  • Too cheap: at what price would it be so cheap that you would doubt its quality?
  • Cheap: at what price would it be a bargain, a great buy for the money?
  • Expensive: at what price would it start to get expensive, but you would still consider it?
  • Too expensive: at what price would it be so expensive that you would not consider buying it?

Ask them as open questions or with a price slider, and describe the product first, so that people price the same thing. Before analysing, check the logic: every respondent should answer too cheap ≤ cheap ≤ expensive ≤ too expensive. Drop or fix the rows that do not.

Step 1: cumulative curves with COUNTIF

Make a price grid ($5 to $15 here) and, for each price, the share of respondents for whom that price is already too cheap, cheap, expensive or too expensive. The two "expensive" curves rise with the price: $12 is expensive for everyone whose "expensive" answer is $12 or less.

=COUNTIF($D$2:$D$13,"<="&A16)/COUNT($D$2:$D$13)

The two "cheap" curves fall with the price: $8 is still cheap for everyone whose "cheap" answer is $8 or more, so they use ">="&A16. Many analyses also plot the reversed curves not cheap = 1 − cheap and not expensive = 1 − expensive, which define the edges of the acceptable range.

Worked example: Van Westendorp for a $/month app subscription

Rows 2 to 13 are the answers of twelve respondents (yellow). Rows 16 to 26 are the cumulative curves on a $1 grid, rows 28 to 31 the price points. The survey is fictional.

Worked example: Van Westendorp for a $/month app subscription
ABCDE
1RespondentToo cheapCheapExpensiveToo expensive
2R1471114
3R2691317
4R335811
5R49111519
6R5791215
7R65799
8R710131722
9R8681112
10R92479
11R108101418
12R11581214
13R12691216
14
15Price ($/month)Too cheapCheapExpensiveToo expensive
16575%92%0%0%
17658%83%0%0%
18733%83%8%0%
19825%67%17%0%
20917%50%25%17%
21108%25%25%17%
22110%17%42%25%
23120%8%67%33%
24130%8%75%33%
25140%0%83%50%
26150%0%92%58%
27
28OPP: too cheap = too expensive9
29IPP: cheap = expensive10
30PMC: too cheap = not cheap (1 − cheap)8
31PME: too expensive = not expensive (1 − expensive)12
Key formulas
  • B16=COUNTIF($B$2:$B$13,">="&A16)/COUNT($B$2:$B$13)Falling curve: too cheap at this price
  • E16=COUNTIF($E$2:$E$13,"<="&A16)/COUNT($E$2:$E$13)Rising curve: too expensive at this price
  • E28=INDEX(A16:A26,MATCH(MIN((B16:B26-E16:E26)^2),(B16:B26-E16:E26)^2,0))OPP: smallest gap between the two curves
  • E31=INDEX(A16:A26,MATCH(MIN((E16:E26-(1-D16:D26))^2),(E16:E26-(1-D16:D26))^2,0))PME: too expensive vs not expensive

On a $1 grid the price points are rounded to whole dollars. With real data, use more respondents and a finer grid.

Step 2: find where the curves cross

On a price grid, a crossing is the price where the gap between two curves is smallest. One formula finds it without a helper column:

=INDEX(A16:A26,MATCH(MIN((B16:B26-E16:E26)^2),(B16:B26-E16:E26)^2,0))

Squaring makes every gap positive, MIN finds the smallest, MATCH its position and INDEX the price. It works as a normal formula in Microsoft 365 and Google Sheets. In older Excel, confirm it with Ctrl+Shift+Enter, or use a helper column with =ABS(B16-E16). A finer grid ($0.50 or $0.25 steps) or linear interpolation between two grid prices gives a more precise crossing.

Step 3: read the four price points

  • Point of marginal cheapness (PMC), $8: too cheap crosses not cheap. Below it, quality doubts dominate.
  • Optimal price point (OPP), $9: too cheap crosses too expensive. At $9 only 17% find the price too cheap and 17% too expensive, the fewest rejections overall.
  • Indifference price point (IPP), $10: cheap crosses expensive. As many people (25%) see $10 as a bargain as see it as getting expensive. It is often read as the normal market price.
  • Point of marginal expensiveness (PME), $12: too expensive crosses not expensive. Above it, too many people walk away.

The range of acceptable prices runs from PMC to PME: $8 to $12 a month. Some textbooks pair the curves slightly differently for PMC and PME, so always state which definition you used.

What Van Westendorp does not tell you

The method measures what people say is a reasonable price, not how many would actually buy at each price, so it cannot find a revenue-maximising price. Use it to set the corridor, then test demand inside it with Gabor-Granger questions ("would you buy at $10?") or a live price test. It also works poorly for luxury goods, where a high price is part of the appeal, and for products people cannot judge without trying. Twelve answers are enough to learn the mechanics. A real study needs a few hundred respondents per segment, and the margin of error matters as much as in an NPS survey.

Common mistakes

  • Using the same comparison for all four curves. The expensive curves count answers at or below the price, the cheap curves at or above it. Mixing them up makes the curves run the wrong way.
  • Not cleaning illogical answers. A respondent whose too-cheap price is above their expensive price distorts every curve. Check the order of the four answers first.
  • Dividing by the wrong count. Divide by the number of valid answers in that column, not by the number of rows in the sheet.
  • Reading the OPP as the profit-maximising price. Van Westendorp says nothing about volume or margin. Test demand inside the range before you set the price.
  • Too coarse a grid. With $2 steps, two prices can tie for the smallest gap and the formula returns the first one. Use a finer grid or interpolate.
  • Mixing segments. Students and business users can have very different ranges. Run the analysis per segment if the sample allows it.

Frequently asked questions

What is the Van Westendorp price sensitivity meter?

A survey method for pricing that asks respondents four questions about when a product seems too cheap, cheap, expensive and too expensive. The crossings of the cumulative answer curves give an acceptable price range and an optimal price point.

How do you calculate the optimal price point in Van Westendorp?

Build the cumulative too cheap and too expensive curves on a price grid and find the price where they cross, which on a grid is the price with the smallest gap between the two curves.

What is the difference between OPP and IPP?

The optimal price point is where equal shares find the price too cheap and too expensive, so the fewest people reject it. The indifference price point is where equal shares find it cheap and expensive, often read as the normal price in the market.

How many respondents does a Van Westendorp study need?

There is no fixed rule, but the curves become stable with a few hundred respondents per segment you want to price. Small samples give jumpy curves and ties between grid prices.

Practise it in a lab

Related guides

Reading is step one. Doing is step two.

Every guide links to a lab where you build the same calculation in an online spreadsheet and get instant feedback.

Open the lab