Comparativa de herramientas para experimentos conductuales: jsPsych, PsychoPy, Gorilla, Qualtrics, lab.js y Potato
Compara jsPsych, PsychoPy, Gorilla, Qualtrics, lab.js y Potato en alojamiento, coste, temporización documentada, asignación de condiciones y compatibilidad con Prolific y SONA.
jsPsych, PsychoPy, Gorilla y lab.js están hechos para tareas conductuales a nivel de ensayo en las que la temporización de los estímulos y los tiempos de reacción son los datos, y Qualtrics está hecho para cuestionarios, que Gorilla también aloja. Potato está hecho para estudios en los que los participantes juzgan, valoran o etiquetan ítems, y su configuración cubre la asignación de condiciones, los cuestionarios de selección, las páginas contrabalanceadas y el traspaso a Prolific o SONA. Desde Potato 2.12.0, también ejecuta una línea de tiempo de jsPsych, una comprobación de auriculares o una tarea en otro servidor como una página de un estudio así, y ejecuta tareas de lectura autoadministrada y maze sobre sus propios ítems.
Un experimento conductual muestra estímulos a los participantes y registra lo que hacen, como qué tecla pulsan, con qué rapidez la pulsan y qué opción eligen. En un diseño entre sujetos, a cada participante se le asigna una condición, y los estudios suelen mantener la asignación equilibrada a medida que las personas llegan y abandonan. El contrabalanceo varía el orden de los bloques entre participantes para que los efectos de orden se compensen, a menudo siguiendo las filas de un cuadrado latino. El tiempo de reacción es el intervalo desde el inicio del estímulo hasta la respuesta, y en un navegador su precisión depende del software, del navegador y del teclado y la pantalla del participante.
Las herramientas que siguen difieren en quién escribe la lógica de los ensayos, quién aloja el estudio, cómo funciona la asignación y qué afirma cada una sobre la temporización. Herramientas de anotación comparadas trata las herramientas de anotación para todos los tipos de datos.
Las seis herramientas de un vistazo
La primera tabla muestra cómo funciona cada herramienta, quién aloja el estudio, su licencia y cómo se paga. Los costes se describen solo por modelo, porque varias de las herramientas dan los precios bajo petición o por paquetes.
| Herramienta | Funciona como | Alojamiento | Licencia | Modelo de coste |
|---|---|---|---|---|
| jsPsych | Biblioteca de JavaScript; la línea de tiempo se escribe en código | Eliges tú el alojamiento: JATOS, Pavlovia, Cognition.run o tu propio servidor | MIT | Gratuito; el alojamiento puede cobrar |
| PsychoPy | Builder y Coder de escritorio; los estudios en línea se compilan a PsychoJS | El ordenador del laboratorio, o Pavlovia en línea | GPL-3.0-or-later (PsychoPy), MIT (PsychoJS) | Gratuito en el laboratorio; Pavlovia necesita créditos por participante o una licencia institucional |
| Gorilla | Plataforma web alojada con constructores gráficos | Gorilla | Propietaria | Un token por participante, o una suscripción o licencia institucional |
| Qualtrics | Plataforma de encuestas alojada | Qualtrics | Propietaria | Precio bajo petición; las cuentas gratuitas no pueden redirigir a una URL, y el JavaScript personalizado no está incluido en todas las licencias |
| lab.js | Constructor gráfico en el navegador, más una biblioteca de JavaScript (última versión en npm, 20.2.4; último commit en octubre de 2025, sobre una alfa de la 23.0) | Eliges tú el alojamiento: JATOS, Pavlovia, tu propio espacio web, o integrado en Qualtrics | Apache-2.0 (biblioteca), AGPL-3.0 (constructor) | Gratuito |
| Potato | Servidor web en Python configurado en YAML | Tu propio servidor, o un Space de Hugging Face | GPL-3.0-or-later | Gratuito |
Todas las herramientas excepto Qualtrics tienen un artículo que las describe: jsPsych, PsychoPy, Gorilla, lab.js y Potato 2.0.
Qué herramienta para qué estudio
La tabla relaciona la parte de un estudio que fija sus requisitos con las herramientas hechas para ella.
| Estudio | Buenas opciones |
|---|---|
| Paradigmas de tiempo de reacción (Stroop, flanker, IAT, búsqueda visual) | jsPsych, PsychoPy, Gorilla, lab.js |
| Estudios de laboratorio con seguidores oculares por hardware u otros dispositivos | PsychoPy |
| Seguimiento ocular por webcam en el navegador | jsPsych, Gorilla, PsychoPy en línea (con código personalizado) |
| Cuestionarios y experimentos de encuesta | Qualtrics, Gorilla, Potato |
| Valoraciones, etiquetas u ordenaciones de muchos ítems, repartidos entre participantes | Potato |
| Juicios rápidos sobre una lista de ítems (decisión léxica, gramaticalidad) | jsPsych, PsychoPy, Gorilla, lab.js, Potato |
| Tareas de lectura autoadministrada y maze | jsPsych (con plugins de jspsych-contrib), Potato |
| Una tarea cronometrada seguida de valoraciones o encuestas, con un único código de finalización | Potato con una página de jsPsych, Gorilla, lab.js integrado en Qualtrics |
| Construir un estudio sin programar (Potato mediante una configuración YAML) | Gorilla, Qualtrics, lab.js, PsychoPy Builder, Potato |
Gorilla aparece en muchas filas porque aloja tareas, cuestionarios y reclutamiento en un solo producto. Potato aparece donde los participantes juzgan ítems o responden cuestionarios, y sus tareas cronometradas se ejecutan como trial_timing sobre esos ítems, incluidas la lectura autoadministrada y maze, o como una página de jsPsych.
Asignación, selección, reclutamiento y cuestionarios por herramienta
La segunda tabla compara el trabajo que rodea a los ensayos. Donde una herramienta deja un paso a su alojamiento o a código personalizado, la celda lo indica.
| jsPsych | PsychoPy y Pavlovia | Gorilla | Qualtrics | lab.js | Potato | |
|---|---|---|---|---|---|---|
| Asignación equilibrada a condiciones | Desde el alojamiento, p. ej. una plantilla de sesión de lote de JATOS | Rutina Counterbalance (2024.1 y posteriores), con grupos definidos en la Pavlovia Shelf en línea | Nodo Randomiser con un modo equilibrado, más los nodos Quota y Allocator | Randomizer con Evenly Present Elements | Desde el alojamiento | conditions, contando a los participantes asignados o a los que terminan |
| Orden de bloques contrabalanceado | Aleatorización de ensayos y bloques en código | Archivos de condiciones y bucles anidados | Nodos Counterbalance y Order | Randomizer sobre bloques | Bucles barajados | phases.counterbalance, aleatorio o cuadrado latino de Williams |
| Excluir a un participante | jsPsych.abortExperiment() en código | Código personalizado | Nodo Branch hacia un nodo Reject | Rama hacia un elemento End of Survey | Código personalizado | exit_when, que muestra un mensaje o devuelve el resultado de exclusión de la plataforma |
| Prolific | Receta documentada de parámetros de URL y redirección | Parámetros de URL y URL de finalización documentados | Política de reclutamiento integrada | Integración en el Marketplace publicada por Prolific | — | login.type: url_direct, o crowdsourcing.provider: prolific |
| SONA | Documentado por Sona | Documentado por Sona, enlazado desde PsychoPy | Política de reclutamiento integrada, con créditos automáticos | Documentado por Sona | — | crowdsourcing.provider: sona, con créditos concedidos desde el servidor |
| Seguimiento ocular por webcam | Extensión WebGazer, con plugins de calibración y validación | WebGazer mediante código personalizado en línea; ioHub para seguidores por hardware en el laboratorio | Componente WebGazer | — | — | — |
| Cuestionarios | Plugin survey (SurveyJS) y plugins survey-* | Pavlovia Surveys, solo en línea | Questionnaire Builder | El producto principal | Formularios HTML | Páginas de encuesta, más 55 instrumentos publicados por su nombre |
Un guion significa que no encontramos nada al respecto en la documentación de la herramienta, comprobada el 2026-10-22. Si una celda es incorrecta, avísanos.
Lo que afirma la documentación de cada herramienta sobre la temporización
La precisión de los tiempos de reacción en un navegador se ha medido en distintas herramientas, por ejemplo en el megaestudio sobre temporización, que comparó generadores de experimentos de laboratorio y en línea. La documentación de cada herramienta hace sus propias afirmaciones sobre la temporización, resumidas a continuación.
- jsPsych. La página sobre precisión de la temporización indica que los tiempos de reacción medidos en JavaScript son entre 10 y 40 ms más largos que en el software de laboratorio estándar, con una varianza similar, y cita, entre otros estudios, la comparación con Psychophysics Toolbox.
- PsychoPy. La página sobre temporización dice que su temporización es tan buena como la de cualquier paquete que el equipo haya probado, y aloja las tablas de datos del megaestudio.
- Gorilla. La página sobre temporización dice que las duraciones de presentación son múltiplos del intervalo de refresco de la pantalla, que los teclados y ratones USB añaden hasta 8,3 ms de error y que las pantallas táctiles se consultan aproximadamente cada 20 ms. Cita un estudio sobre plataformas en línea, navegadores y dispositivos.
- lab.js. La página sobre temporización dice que la biblioteca alcanza una alta precisión de presentación y de respuesta si se tiene cierto cuidado.
- Qualtrics. La pregunta Timing registra el primer clic, el último clic, el envío de la página y el número de clics en una página, como registro de la temporización de la página y no del tiempo de reacción.
- Potato. Una página
type: jspsychejecuta jsPsych en solitario, así que ahí se aplican las cifras de jsPsych.trial_timingsobre los propios ítems de Potato revela el estímulo dentro de una llamada de fotograma de animación y mide el tiempo de reacción desde el fotograma en el que se dibujó, así que el inicio se conoce con precisión de un fotograma (unos 17 ms a 60 Hz). Cada registro detrial_timingguarda el intervalo entre fotogramas medido por el navegador y la resolución de su temporizador, y el servidor marca los registros que no concuerdan con su propio reloj.
Los teclados y las pantallas añaden una latencia que el navegador no puede medir, y que varía entre los equipos de los participantes. Con cualquiera de estas herramientas, compara los tiempos de reacción dentro de cada participante o modélalos con un término de participante.
Estudios de ítems y páginas de jsPsych en Potato
Potato nació como herramienta de anotación, así que su unidad de trabajo es un ítem de un archivo de datos que un participante juzga. Un estudio que recoge valoraciones de 400 titulares de 60 participantes, en el que cada participante ve 40 distintos, encaja con ese modelo. Potato asigna los ítems, registra cada juicio asociado al ítem y al participante e informa de la concordancia entre anotadores (fiabilidad entre evaluadores) en los ítems que valoró más de un participante.
Los ajustes del flujo del experimento se aplican a los estudios de ítems y a los estudios con una tarea de jsPsych. conditions asigna a cada participante una condición cuando llega, y cualquier regla de la configuración puede comprobar condition.<factor>. show_when salta una página, exit_when excluye a un participante y phases.counterbalance ordena las páginas por participante. Las fases de encuesta que rodean la tarea, la fase de entrenamiento con retroalimentación y el traspaso a Prolific o SONA son entradas de la configuración.
Cuando un estudio necesita control a nivel de ensayo, los ensayos se quedan en jsPsych. Una página type: jspsych ejecuta una línea de tiempo de jsPsych 8.3.0 entre las demás páginas de Potato, le pasa el ID y la condición del participante y guarda los datos de los ensayos en el project.sqlite del directorio de la tarea. Otras dos páginas de ejecución ocupan el mismo lugar: una comprobación de auriculares que puntúa el servidor y una tarea externa en oTree, Empirica o una encuesta alojada que devuelve al participante con resultados firmados. Si vienes de jsPsych asocia los conceptos de jsPsych con claves de Potato y recorre una tarea de Stroop dentro de un estudio de Potato.
Un estudio de valoración entre sujetos en Potato
La configuración siguiente ejecuta un estudio sobre la credibilidad de titulares para un grupo de participantes de SONA. A los participantes se les asigna ver los titulares con su fuente o sin ella, y balance_on: completed cuenta solo a los participantes que terminan, de modo que las dos condiciones se mantienen equilibradas cuando hay personas que abandonan o son excluidas. Un cuestionario de selección termina el estudio para quien no lee noticias en inglés, y los dos cuestionarios posteriores al estudio aparecen en orden de cuadrado latino.
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: trueLos dos archivos de ítems contienen los mismos titulares, uno con la línea de la fuente y otro sin ella, y los ID de los ítems tienen que ser distintos entre ambos porque Potato carga los dos archivos en un solo proyecto. La exportación CSV escribe participants.csv, con la condición de cada participante, el orden de los cuestionarios y cualquier exclusión, junto a las valoraciones.
En SONA, fija la URL del estudio en https://your-server.com/?sona_code=%SURVEY_CODE%. Cuando un participante termina, Potato concede él mismo los créditos mediante la llamada de concesión de créditos del servidor de SONA, de modo que el participante no tiene que seguir un enlace de vuelta a SONA.
Limitaciones de Potato para experimentos conductuales
Las limitaciones siguientes se aplican a las páginas propias de Potato. La mayoría se pueden sortear con una página de jsPsych, y cada punto indica cuáles.
- Sin código de ensayo en las páginas propias de Potato. El dibujo en canvas, las máscaras sincronizadas con los fotogramas y el audio programado con Web Audio necesitan una página de jsPsych.
- Sin seguimiento ocular ni grabación por webcam. La extensión WebGazer de jsPsych no se incluye, porque necesita
'unsafe-eval', que la Content-Security-Policy de la página de jsPsych no permite. - Sin trayectorias del ratón en las páginas propias de Potato. El bloque
authenticitycuenta los movimientos y la distancia del puntero por ítem y no conserva posiciones. Una página de jsPsych conextensions: [mouse-tracking]registra muestras x/y por ensayo. - Sin pantalla completa entre ítems. Cada ítem de Potato es una carga de página, y los navegadores salen de la pantalla completa cuando cambia la página. Una página de jsPsych mantiene la pantalla completa durante toda su línea de tiempo.
- Sin ensayos cronometrados en teléfonos. Los teléfonos y las tabletas reciben la interfaz táctil de Potato, que no ejecuta
trial_timing. - Sin registros de
trial_timingni datos departicipants.csvcon el backend MySQL. Ambos necesitan el almacenamiento predeterminado. Las ejecuciones de jsPsych se guardan enproject.sqlitecon cualquiera de los dos backends.
Lecturas adicionales
- Si vienes de jsPsych, para el mapa de conceptos y una tarea de jsPsych dentro de un estudio de Potato
- Flujos de trabajo multifase
- Instrumentos de encuesta
- Cómo realizar un estudio de crowdsourcing
- Escalas de valoración
- Herramientas de anotación comparadas
- Flujo del experimento, Fases de ejecución y Ensayos cronometrados
- Experimentos conductuales en línea, para un estudio de psicología o lingüística en Potato de principio a fin
Referencias
- 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
- 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
- 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
- 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
- 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/
- 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
- 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
- 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