Upload hypothetical purchase task (HPT) survey data in wide format, aggregate responses at each price, and fit the exponentiated demand model (Koffarnus et al., 2015) — overall and by group. Everything runs in your browser: your data never leaves your computer, and your session is saved locally so you can pick up where you stopped.

1 Upload data 2 Clean & recode 3 Map columns 4 Results

Upload your survey data

Wide format: one row per respondent, one column per price point. Cells hold either a yes/no purchase response (e.g. 1/0, Yes/No) or a quantity the respondent would buy. Extra columns (ID, sex, site, condition…) are fine — you can use one for group comparisons. CSV or Excel (.xlsx).

Drop a CSV or Excel file here or click to browse
Nothing is uploaded to any server — parsing happens in your browser.

Clean & recode (optional)

Build new grouping variables or exclude rows. Your uploaded values are never modified — your recodes are applied on top of them and saved with your session. Blank cells in price columns are already treated as missing automatically.

New grouping variable

Create a new column by recoding an existing one — collapse categories (sites → regions) or bin numbers into ranges (age → age groups). The original column is kept; the new one appears as a grouping option in the next step.

Exclude rows

Drop respondents from all analyses by a column value (e.g. a failed attention check).

Map your columns

Fits a separate curve for each group, alongside the overall (“All”) curve.

Columns

Price columns were auto-detected from the headers — check the assigned price values and fix any that are wrong.

Data preview

Results

Settings
Applies to every curve. The default of 2 means demand can fall to about 1% of Q₀ at very high prices.
Applies when the data has a free (price-0) condition.

Individual responses

Aggregated data

The aggregated values the curves are fitted to, at each price.