Skip to content
Survey research

Potato for survey research and social science

Import a Qualtrics, REDCap, or LimeSurvey questionnaire and run survey experiments, list experiments, and ego-network questions on your own server.

Potato imports a questionnaire from Qualtrics, REDCap, LimeSurvey, SurveyJS, Network Canvas, or an XLSForm and runs the questionnaire with random assignment to conditions, list experiments and randomized response for sensitive topics, and ego-network name generators. Potato is free and open source and runs on your own machine or your institution's server, so the responses stay there.

Beyond a form builder, a survey experiment needs random assignment that stays balanced across conditions, questions shown or skipped by rule, designs that let people answer sensitive questions privately, and an export that records what each respondent was assigned and shown. Potato covers each of these needs in a YAML config. Because Potato runs on your own server, the responses stay under your institution's data agreements. Running your own server matters more as some universities and faculties stop using Qualtrics. Radboud University's Faculty of Social Sciences, for example, asks its researchers to move to LimeSurvey by December 1, 2026.

Survey research designs in Potato

Each row is a feature that ships with Potato 2.12, and the linked page has its options.

TaskHow Potato does itDocs
Survey and vignette experimentsconditions assigns each respondent one cell of a factorial design, and rules on pages and questions read the assigned conditionExperiment flow
List experimentslist_experiment shows the sensitive item to the treatment group only, and the export estimates its prevalenceSensitive questions
Randomized responserandomized_response with forced-response or crosswise designsSensitive questions
Personal networksego_network with name generators, name interpreters, ties between alters, and a sociogramEgo networks
Validated scales55 instruments for personality, mental health screening, affect, attitudes, and demographicsSurvey instruments
Skip logic and branchingdisplay_logic on questions, and show_when and exit_when on pagesMulti-phase workflows
Coding open-ended answersResponses loaded as items and coded with a codebook by several coders, with Krippendorff's alphaContent analysis

A list experiment

The part of a config below splits respondents into a control and a treatment group, and shows the sensitive statement only in the treatment group's list. Respondents report how many statements apply, never which ones, and the survey_experiments export estimates the prevalence of the sensitive item with its standard error and a 95% interval.

yaml
conditions:
  factors:
    list_group: [control, treatment]
 
annotation_schemes:
  - annotation_type: list_experiment
    name: lists
    description: How many of these have you done in the last year?
    items:
      - Gone to a live music concert
      - Bought a book in a shop
      - Volunteered for a local group
    sensitive_item: Driven a car after drinking alcohol
    treatment: {factor: list_group, level: treatment}

Pick control statements that are neither all true nor all false for most respondents. When every statement or no statement applies to a respondent, the count reveals the sensitive answer, which defeats the design.

Importing an existing questionnaire

potato import reads a Qualtrics .qsf, a REDCap data dictionary, a LimeSurvey .lss, an XLSForm used by ODK, KoboToolbox, SurveyCTO, or Ona, SurveyJS JSON, a Beiwe survey, or a Network Canvas protocol. The questions, pages, and show/hide logic become Potato survey pages and rules. None of these files contains responses, so the import moves the instrument and leaves the collected data behind.

bash
potato import -i my-survey.qsf -o survey-project/

Working alongside Qualtrics, REDCap, ODK, and Network Canvas

Each of these tools is built for a different setting. Qualtrics is a hosted commercial survey platform, usually licensed by a university. REDCap is built for clinical and research databases at consortium institutions. ODK and KoboToolbox collect data offline on mobile devices in the field, and Network Canvas runs interviewer-assisted network interviews. Potato runs web surveys on your own server, and adds experimental conditions, sensitive-question designs, annotation tasks in the same session, Prolific and SONA recruitment, and one export.

Frequently asked questions

Can I run a survey experiment with random assignment without Qualtrics?

Yes. conditions assigns each respondent one cell of a between-subjects design, balanced across cells, at random, or round-robin, and the respondent keeps the cell after a reload. Pages and questions can test the assigned condition, and the CSV export writes each respondent's condition to participants.csv.

How do I build a list experiment online?

Use a list_experiment question with a control list and one sensitive item, and a two-level condition that decides who sees the sensitive item. The survey_experiments export computes the difference-in-means estimate of its prevalence with a standard error and a 95% interval. Randomized-response questions work the same way.

Can survey responses stay on my own server for IRB or GDPR requirements?

Yes. Potato runs on a server you choose, and responses are written to that server's disk. Nothing is sent to a third party unless you configure an external service, such as a hosted AI endpoint. Whether a particular setup meets your IRB's or GDPR's requirements is for your institution to decide.

Can I collect ego-network data with a name generator in a web survey?

Yes. An ego_network question runs its stages on one survey page, covering name generators, questions about each person named, the ties among those people, and placement on a map. The ego_network export writes ego, alter and edge tables and one GraphML file per network, with names left out unless you set export_names=true.

Further reading

Start here

Example designs

Each design is a working Potato configuration you can download and run.

Other fields

All use cases