Skip to content

Werkzeuge für Verhaltensexperimente im Vergleich: jsPsych, PsychoPy, Gorilla, Qualtrics, lab.js und Potato

Vergleicht jsPsych, PsychoPy, Gorilla, Qualtrics, lab.js und Potato bei Hosting, Kosten, dokumentiertem Timing, Bedingungszuweisung sowie Unterstützung für Prolific und SONA.

jsPsych, PsychoPy, Gorilla und lab.js sind für Verhaltensaufgaben auf Trial-Ebene gebaut, bei denen Stimulus-Timing und Reaktionszeiten die Daten sind, und Qualtrics ist für Fragebögen gebaut, die auch Gorilla hostet. Potato ist für Studien gebaut, in denen Teilnehmende Items beurteilen, bewerten oder labeln, und seine Konfiguration deckt Bedingungszuweisung, Screener, ausbalancierte Seiten und die Übergabe an Prolific oder SONA ab. Seit Potato 2.12.0 führt es außerdem eine jsPsych-Timeline, einen Kopfhörertest oder eine Aufgabe auf einem anderen Server als eine Seite einer solchen Studie aus und führt Self-Paced-Reading- und Maze-Aufgaben auf seinen eigenen Items aus.

Ein Verhaltensexperiment zeigt Teilnehmenden Stimuli und zeichnet auf, was sie tun, etwa welche Taste sie drücken, wie schnell sie sie drücken und welche Option sie wählen. In einem Between-Subjects-Design wird jede teilnehmende Person einer Bedingung zugewiesen, und Studien halten die Zuweisung meist ausgewogen, während Personen eintreffen und abbrechen. Die Ausbalancierung variiert die Reihenfolge von Blöcken über Teilnehmende hinweg, sodass sich Reihenfolgeeffekte ausmitteln, oft anhand der Zeilen eines lateinischen Quadrats. Die Reaktionszeit ist das Intervall vom Stimulus-Onset bis zur Antwort, und im Browser hängt ihre Genauigkeit von der Software, dem Browser sowie Tastatur und Bildschirm der teilnehmenden Person ab.

Die folgenden Werkzeuge unterscheiden sich darin, wer die Trial-Logik schreibt, wer die Studie hostet, wie die Zuweisung funktioniert und was jedes über das Timing angibt. Annotationswerkzeuge im Vergleich behandelt Annotationswerkzeuge für jeden Datentyp.

Die sechs Werkzeuge im Überblick

Die erste Tabelle zeigt, wie jedes Werkzeug läuft, wer die Studie hostet, seine Lizenz und wie es bezahlt wird. Kosten werden nur nach Modell beschrieben, weil mehrere der Werkzeuge Preise auf Anfrage oder nach Paket nennen.

WerkzeugLäuft alsHostingLizenzKostenmodell
jsPsychJavaScript-Bibliothek; Sie schreiben die Timeline in CodeSie wählen einen Host: JATOS, Pavlovia, Cognition.run oder Ihren eigenen ServerMITKostenlos; der Host kann Gebühren verlangen
PsychoPyDesktop-Builder und -Coder; Online-Studien werden zu PsychoJS kompiliertDer Laborrechner oder online PavloviaGPL-3.0-or-later (PsychoPy), MIT (PsychoJS)Im Labor kostenlos; Pavlovia braucht Credits pro teilnehmender Person oder eine institutionelle Lizenz
GorillaGehostete Webplattform mit grafischen BuildernGorillaProprietärEin Token pro teilnehmender Person, oder ein Abonnement bzw. eine institutionelle Lizenz
QualtricsGehostete UmfrageplattformQualtricsProprietärAngebot auf Anfrage; kostenlose Konten können nicht auf eine URL weiterleiten, und eigenes JavaScript ist nicht in jeder Lizenz enthalten
lab.jsGrafischer Builder im Browser, dazu eine JavaScript-Bibliothek (neuestes npm-Release 20.2.4; letzter Commit im Oktober 2025, auf einer 23.0-Alpha)Sie wählen einen Host: JATOS, Pavlovia, Ihren eigenen Webspace oder eingebettet in QualtricsApache-2.0 (Bibliothek), AGPL-3.0 (Builder)Kostenlos
PotatoPython-Webserver, in YAML konfiguriertIhr eigener Server oder ein Hugging Face SpaceGPL-3.0-or-laterKostenlos

Zu jedem Werkzeug außer Qualtrics gibt es einen beschreibenden Fachartikel: jsPsych, PsychoPy, Gorilla, lab.js und Potato 2.0.

Welches Werkzeug für welche Studie

Die Tabelle ordnet den Teil einer Studie, der ihre Anforderungen bestimmt, den Werkzeugen zu, die dafür gebaut sind.

StudieGut geeignet
Reaktionszeitparadigmen (Stroop, Flanker, IAT, visuelle Suche)jsPsych, PsychoPy, Gorilla, lab.js
Laborstudien mit Hardware-Eyetrackern oder anderen GerätenPsychoPy
Webcam-Eye-Tracking im BrowserjsPsych, Gorilla, PsychoPy online (mit eigenem Code)
Fragebögen und UmfrageexperimenteQualtrics, Gorilla, Potato
Bewertungen, Labels oder Rangfolgen vieler Items, aufgeteilt auf TeilnehmendePotato
Schnelle Urteile über eine Liste von Items (lexikalische Entscheidung, Grammatikalität)jsPsych, PsychoPy, Gorilla, lab.js, Potato
Self-Paced-Reading- und Maze-AufgabenjsPsych (mit Plugins aus jspsych-contrib), Potato
Eine zeitgesteuerte Aufgabe, gefolgt von Bewertungen oder Umfragen, mit einem einzigen AbschlusscodePotato mit einer jsPsych-Seite, Gorilla, lab.js eingebettet in Qualtrics
Eine Studie ohne Programmierung aufbauen (Potato über eine YAML-Konfiguration)Gorilla, Qualtrics, lab.js, PsychoPy Builder, Potato

Gorilla erscheint in vielen Zeilen, weil es Aufgaben, Fragebögen und Rekrutierung in einem Produkt hostet. Potato erscheint dort, wo Teilnehmende Items beurteilen oder Fragebögen beantworten, und seine zeitgesteuerten Aufgaben laufen entweder als trial_timing auf diesen Items, einschließlich Self-Paced Reading und Maze, oder als jsPsych-Seite.

Zuweisung, Screening, Rekrutierung und Fragebögen nach Werkzeug

Die zweite Tabelle vergleicht die Arbeit rund um die Trials. Wo ein Werkzeug einen Schritt seinem Host oder eigenem Code überlässt, steht das in der Zelle.

jsPsychPsychoPy und PavloviaGorillaQualtricslab.jsPotato
Ausgewogene Zuweisung zu BedingungenÜber den Host, z. B. eine Vorlage für JATOS-Batch-SitzungenCounterbalance Routine (ab 2024.1), mit online auf dem Pavlovia Shelf festgelegten GruppenRandomiser-Knoten mit ausgewogenem Modus, dazu Quota- und Allocator-KnotenRandomizer mit Evenly Present ElementsÜber den Hostconditions, gezählt nach zugewiesenen oder nach abgeschlossenen Teilnehmenden
Ausbalancierte BlockreihenfolgeRandomisierung von Trials und Blöcken im CodeConditions-Dateien und verschachtelte SchleifenCounterbalance- und Order-KnotenRandomizer über BlöckeGemischte Schleifenphases.counterbalance, zufällig oder per lateinischem Quadrat nach Williams
Eine teilnehmende Person ausschließenjsPsych.abortExperiment() im CodeEigener CodeBranch-Knoten zu einem Reject-KnotenVerzweigung zu einem End-of-Survey-ElementEigener Codeexit_when, das eine Nachricht anzeigt oder das Screen-out-Ergebnis der Plattform zurückgibt
ProlificDokumentiertes Rezept für URL-Parameter und WeiterleitungDokumentierte URL-Parameter und Abschluss-URLEingebaute Recruitment PolicyVon Prolific veröffentlichte Marketplace-Integration—login.type: url_direct oder crowdsourcing.provider: prolific
SONAVon Sona dokumentiertVon Sona dokumentiert, von PsychoPy verlinktEingebaute Recruitment Policy, mit automatischer Vergabe von StudienpunktenVon Sona dokumentiert—crowdsourcing.provider: sona, mit Vergabe der Studienpunkte vom Server
Webcam-Eye-TrackingErweiterung WebGazer, mit Plugins für Kalibrierung und ValidierungWebGazer online über eigenen Code; ioHub für Hardware-Tracker im LaborWebGazer-Komponente———
FragebögenPlugin survey (SurveyJS) und survey-*-PluginsPavlovia Surveys, nur onlineQuestionnaire BuilderDas KernproduktHTML-FormulareUmfrageseiten, dazu 55 veröffentlichte Instrumente, per Name abrufbar

Ein Strich bedeutet, dass wir dazu in der Dokumentation des Werkzeugs nichts gefunden haben, geprüft am 2026-10-22. Falls eine Zelle falsch ist, sagen Sie uns Bescheid.

Timing-Angaben in der Dokumentation der Werkzeuge

Die Genauigkeit von Reaktionszeiten im Browser wurde werkzeugübergreifend gemessen, zum Beispiel in der Timing-Megastudie, die laborbasierte und Online-Experimentgeneratoren verglich. Die Dokumentation jedes Werkzeugs macht eigene Angaben zum Timing, unten zusammengefasst.

  • jsPsych. Die Seite zur Timing-Genauigkeit gibt an, dass in JavaScript gemessene Reaktionszeiten 10-40 ms länger ausfallen als in üblicher Laborsoftware, bei ähnlicher Varianz, und zitiert unter anderem den Vergleich mit der Psychophysics Toolbox.
  • PsychoPy. Die Timing-Seite gibt an, dass sein Timing so gut ist wie das jedes Pakets, das das Team getestet hat, und stellt die Datentabellen der Megastudie bereit.
  • Gorilla. Die Timing-Seite gibt an, dass Anzeigedauern Vielfache des Bildwiederholintervalls sind, USB-Tastaturen und -Mäuse bis zu 8.3 ms Fehler hinzufügen und Touchscreens etwa alle 20 ms abgefragt werden. Sie zitiert eine Studie zu Online-Plattformen, Browsern und Geräten.
  • lab.js. Die Timing-Seite gibt an, dass die Bibliothek mit etwas Sorgfalt eine hohe Darbietungs- und Antwortgenauigkeit erreicht.
  • Qualtrics. Die Timing-Frage zeichnet den ersten Klick, den letzten Klick, das Absenden der Seite und die Anzahl der Klicks auf einer Seite auf, als Aufzeichnung des Seiten-Timings und nicht der Reaktionszeit.
  • Potato. Eine Seite mit type: jspsych führt jsPsych allein aus, daher gelten dort jsPsychs Werte. trial_timing auf Potatos eigenen Items blendet den Stimulus in einem Animationsframe-Callback ein und misst die Reaktionszeit ab dem Frame, in dem er gezeichnet wurde, sodass der Onset auf den Frame genau bekannt ist (etwa 17 ms bei 60 Hz). Jeder trial_timing-Datensatz speichert das vom Browser gemessene Frame-Intervall und die Timer-Auflösung, und der Server markiert Datensätze, die nicht zu seiner eigenen Uhr passen.

Tastaturen und Bildschirme fügen Latenz hinzu, die der Browser nicht messen kann, und sie unterscheidet sich zwischen den Rechnern der Teilnehmenden. Vergleichen Sie bei jedem dieser Werkzeuge Reaktionszeiten innerhalb von Teilnehmenden, oder modellieren Sie sie mit einem Term für die teilnehmende Person.

Item-Studien und jsPsych-Seiten in Potato

Potato hat als Annotationswerkzeug begonnen, daher ist seine Arbeitseinheit ein Item aus einer Datendatei, das eine teilnehmende Person beurteilt. Eine Studie, die Bewertungen von 400 Schlagzeilen von 60 Teilnehmenden erhebt, wobei jede Person andere 40 sieht, passt zu diesem Modell. Potato weist die Items zu, zeichnet jedes Urteil mit Item und teilnehmender Person auf und berichtet die Inter-Annotator-Übereinstimmung (Interrater-Reliabilität) für die Items, die mehr als eine Person bewertet hat.

Die Einstellungen zum Experimentablauf gelten für Item-Studien und für Studien mit einer jsPsych-Aufgabe. conditions weist jede teilnehmende Person beim Eintreffen einer Bedingung zu, und jede Regel in der Konfiguration kann condition.<factor> prüfen. show_when überspringt eine Seite, exit_when schließt eine teilnehmende Person aus, und phases.counterbalance ordnet Seiten pro teilnehmender Person an. Die Umfragephasen rund um die Aufgabe, die Trainingsphase mit Feedback und die Übergabe an Prolific oder SONA sind Konfigurationseinträge.

Wenn eine Studie Kontrolle auf Trial-Ebene braucht, bleiben die Trials in jsPsych. Eine Seite mit type: jspsych führt eine jsPsych-8.3.0-Timeline zwischen Potatos anderen Seiten aus, übergibt ihr die ID und die Bedingung der teilnehmenden Person und speichert die Trial-Daten in project.sqlite im Aufgabenverzeichnis. Zwei weitere Laufzeitseiten sitzen an derselben Stelle: ein Kopfhörertest, den der Server auswertet, und eine externe Aufgabe in oTree, Empirica oder einer gehosteten Umfrage, die die teilnehmende Person mit signierten Ergebnissen zurückschickt. Umstieg von jsPsych ordnet jsPsych-Konzepte Potato-Schlüsseln zu und führt durch eine Stroop-Aufgabe innerhalb einer Potato-Studie.

Eine Between-Subjects-Bewertungsstudie in Potato

Die folgende Konfiguration führt eine Studie zur Glaubwürdigkeit von Schlagzeilen für einen SONA-Teilnehmerpool aus. Teilnehmende werden zugewiesen, Schlagzeilen mit oder ohne Quellenangabe zu sehen, und balance_on: completed zählt nur Teilnehmende, die fertig werden, sodass die beiden Bedingungen ausgewogen bleiben, wenn Personen abbrechen oder ausgeschlossen werden. Ein Screener beendet die Studie für alle, die keine englischsprachigen Nachrichten lesen, und die beiden Abschlussfragebögen erscheinen in der Reihenfolge eines lateinischen Quadrats.

yaml
annotation_task_name: Headline credibility study
task_dir: .
output_annotation_dir: annotation_output/
data_files:
  - data/with_source.jsonl
item_properties:
  id_key: id
  text_key: text
user_config:
  allow_all_users: true
  users: []
 
conditions:
  factors:
    list: [with_source, without_source]
  assignment: balanced
  balance_on: completed
 
# Each condition gets its own item file, named after the factor's levels
assignment_strategy: batch
batch_assignment:
  auto_assign_annotators: true
  group_by_condition: list
  groups:
    - {name: with_source, data_file: data/with_source.jsonl}
    - {name: without_source, data_file: data/without_source.jsonl}
 
phases:
  order: [consent, screener, annotation, attitudes, media_use]
  consent:
    type: consent
    file: surveys/consent.json
  screener:
    type: prestudy
    file: surveys/screener.json
    exit_when:
      show_when:
        - {schema: reads_news, operator: equals, value: "No"}
      message: This study is for people who read English-language news. Thank you for your time.
  attitudes:
    type: poststudy
    file: surveys/attitudes.json
  media_use:
    type: poststudy
    file: surveys/media_use.json
    randomize_questions:
      pin_last: [comments]
  counterbalance:
    - pages: [attitudes, media_use]
      method: latin_square
 
crowdsourcing:
  provider: sona
  sona:
    hostname: yourdept.sona-systems.com
    experiment_id: 123
    credit_token: your-credit-token
 
annotation_schemes:
  - annotation_type: likert
    name: credibility
    description: How credible is this headline?
    size: 7                   # an odd number of points gives a neutral midpoint
    min_label: Not at all credible
    max_label: Very credible
    label_requirement:
      required: true

Die beiden Item-Dateien enthalten dieselben Schlagzeilen, eine mit der Quellenzeile und eine ohne, und die Item-IDs müssen sich zwischen ihnen unterscheiden, weil Potato beide Dateien in ein Projekt lädt. Der CSV-Export schreibt neben die Bewertungen participants.csv, mit der Bedingung jeder teilnehmenden Person, der Fragebogenreihenfolge und einem etwaigen Screen-out.

Setzen Sie in SONA die Studien-URL auf https://your-server.com/?sona_code=%SURVEY_CODE%. Wenn eine teilnehmende Person fertig ist, vergibt Potato die Studienpunkte selbst über den serverseitigen Credit-Aufruf von SONA, sodass die Person keinem Link zurück zu SONA folgen muss.

Grenzen von Potato für Verhaltensexperimente

Die folgenden Grenzen gelten für Potatos eigene Seiten. Für die meisten gibt es einen Ausweg über eine jsPsych-Seite, und die Punkte sagen, für welche.

  • Kein Trial-Code auf Potatos eigenen Seiten. Zeichnen auf einem Canvas, frame-genaue Masken und mit Web Audio geplante Audiowiedergabe brauchen eine jsPsych-Seite.
  • Kein Eye-Tracking und keine Webcam-Aufzeichnung. jsPsychs Erweiterung WebGazer wird nicht mitgeliefert, weil sie 'unsafe-eval' benötigt, was die Content-Security-Policy der jsPsych-Seite nicht erlaubt.
  • Keine Mausbahnen auf Potatos eigenen Seiten. Der Block authenticity zählt Zeigerbewegungen und Distanz pro Item und speichert keine Positionen. Eine jsPsych-Seite mit extensions: [mouse-tracking] zeichnet x/y-Messpunkte pro Trial auf.
  • Kein Vollbildmodus über Items hinweg. Jedes Potato-Item ist ein Seitenaufruf, und Browser verlassen den Vollbildmodus, wenn die Seite wechselt. Eine jsPsych-Seite hält den Vollbildmodus für ihre gesamte Timeline.
  • Keine zeitgesteuerten Trials auf Smartphones. Smartphones und Tablets erhalten Potatos Touch-Oberfläche, die trial_timing nicht ausführt.
  • Keine trial_timing-Datensätze und keine Daten für participants.csv im MySQL-Backend. Beides braucht den Standardspeicher. jsPsych-Läufe werden in beiden Backends in project.sqlite gespeichert.

Weiterführende Informationen

Literatur

  1. de Leeuw, J. R. (2015). jsPsych: A JavaScript library for creating behavioral experiments in a Web browser. Behavior Research Methods, 47(1), 1-12. https://doi.org/10.3758/s13428-014-0458-y
  2. Peirce, J., Gray, J. R., Simpson, S., et al. (2019). PsychoPy2: Experiments in behavior made easy. Behavior Research Methods, 51(1), 195-203. https://doi.org/10.3758/s13428-018-01193-y
  3. Anwyl-Irvine, A. L., Massonnié, J., Flitton, A., et al. (2020). Gorilla in our midst: An online behavioral experiment builder. Behavior Research Methods, 52(1), 388-407. https://doi.org/10.3758/s13428-019-01237-x
  4. Henninger, F., Shevchenko, Y., Mertens, U. K., et al. (2022). lab.js: A free, open, online study builder. Behavior Research Methods, 54(2), 556-573. https://doi.org/10.3758/s13428-019-01283-5
  5. Jurgens, D., Chen, M., & Iyer, L. (2026). Potato 2.0: A Comprehensive Annotation Platform with AI-in-the-Loop Support. Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (Volume 3: System Demonstrations), 374-386. https://aclanthology.org/2026.acl-demo.37/
  6. Bridges, D., Pitiot, A., MacAskill, M. R., et al. (2020). The timing mega-study: comparing a range of experiment generators, both lab-based and online. PeerJ, 8, e9414. https://doi.org/10.7717/peerj.9414
  7. de Leeuw, J. R., & Motz, B. A. (2016). Psychophysics in a Web browser? Comparing response times collected with JavaScript and Psychophysics Toolbox in a visual search task. Behavior Research Methods, 48(1), 1-12. https://doi.org/10.3758/s13428-015-0567-2
  8. Anwyl-Irvine, A., Dalmaijer, E. S., Hodges, N., et al. (2021). Realistic precision and accuracy of online experiment platforms, web browsers, and devices. Behavior Research Methods, 53(4), 1407-1425. https://doi.org/10.3758/s13428-020-01501-5