labvanced logoLabVanced
  • Research
    • Publications
    • Researcher Interviews
    • Use Cases
      • Developmental Psychology
      • Linguistics
      • Clinical & Digital Health
      • Educational Psychology
      • Cognitive & Neuro
      • Social & Personality
      • Arts Research
      • Sports & Movement
      • Marketing & Consumer Behavior
      • Economics
      • HCI / UX
      • Commercial / Industry Use
    • Labvanced Blog
    • Services
  • Technology
    • Feature Overview
    • Code-Free Study Building
    • Eye Tracking
    • Mouse Tracking
    • Generative AI Integration
    • Multi User Studies
    • More ...
      • Reaction Time/Precise Timing
      • Text Transcription
      • Heart Rate Detection (rPPG)
      • Emotion Detection
      • Questionnaires/Surveys
      • Experimental Control
      • Data Privacy & Security
      • Desktop App
      • Mobile App
  • Learn
    • Guide
    • Videos
    • Walkthroughs
    • FAQ
    • Release Notes
    • Documents
    • Classroom
  • Experiments
    • Cognitive Tests
    • Sample Studies
    • Public Experiment Library
  • Pricing
    • Licenses
    • Top-Up Recordings
    • Subject Recruitment
    • Study Building
    • Dedicated Support
    • Checkout
  • About
    • About Us
    • Contact
    • Downloads
    • Careers
    • Impressum
    • Disclaimer
    • Privacy & Security
    • Terms & Conditions
    • Third-Party Licenses
  • Appgo to app icon
  • Logingo to app icon
Learn
Guide
Videos
Walkthroughs
FAQ
Newsletter Archive
Documents
Classroom
  • 中國人
  • Deutsch
  • Français
  • Español
  • English
  • 日本語
Guide
Videos
Walkthroughs
FAQ
Newsletter Archive
Documents
Classroom
  • 中國人
  • Deutsch
  • Français
  • Español
  • English
  • 日本語
  • Guide
    • GETTING STARTED

      • Task Editor
      • Frames
        • Canvas Frame
        • Page Frame
        • Website Frame
      • Trial Timeline
      • Stimulus Presentation
      • Correctness of Response
      • Objects
      • Events
      • Variables
      • Task Wizard
      • Trial System
      • Experiment Design
        • Creating a Study
        • Data Frame Patterns
        • Multi-user Experiment Design
    • FEATURED TOPICS

      • Randomization & Balance
      • Eye Tracking
        • Presenting Stimuli in an Eye Tracking Task
        • How to Choose Eye Tracking Calibration Settings
        • Setting Up Eye Tracking in a Task
        • Recording and Exporting Gaze Data
        • Using Shapes as Areas of Interest (AOI) for Eye Tracking
        • The Participant Calibration Experience
      • Web Bridge
        • Selecting Website AOIs | Anchor, Adjust, and Verify AOI Tracking
        • Tracking Mouse Behavior on a Website AOI | Web Bridge Guide
      • Questionnaires
      • Desktop App
      • Sample Studies
      • Participant Recruitment
      • API Access
        • REST API
        • Webhook API
        • WebSocket API
      • Other Topics

        • Precise Stimulus Timings
        • Multi User Studies
        • Head Tracking in Labvanced | Guide
    • MAIN APP TABS

      • Overview: Main Tabs
      • Dashboard
      • My Studies
      • Shared Studies
      • My Files
      • Experiment Library
      • My Account
      • License & Services
    • STUDY TABS

      • Overview: Study-Specific Tabs
      • Study Design
        • Tasks
        • Blocks
        • Sessions
        • Groups
      • Task Editor
        • Task Controls
        • The Trial System
        • Frame Types
        • Objects
        • Object Property Tables
        • Variables
        • System Variables Tables
        • The Event System
        • Text Editor Functions
        • Eye Tracking Options in the Task Editor
        • Head Tracking in a Task
        • Multi-User Studies
      • Settings
      • Variables
      • Media
      • Texts & Translate
      • Launch & Participate
      • Subject Management
      • Dataview and Export
        • Dataview and Variable & Task Selection (OLD Version)
        • Accessing Recordings (OLD Version)
  • Videos
    • Video Overview
    • Getting Started in Labvanced
    • Creating Tasks
    • Element Videos
    • Events & Variables
    • Advanced Topics
  • Walkthroughs
    • Introduction
    • Stroop Task
    • Lexical Decision Task
    • Posner Gaze Cueing Task
    • Change Blindness Flicker Paradigm
    • Eye-tracking Sample Study
    • Infant Eye-tracking Study
    • Attentional Capture Study with Mouse Tracking
    • Rapid Serial Visual Presentation
    • ChatGPT Study
    • Eye Tracking Demo: SVGs as AOIs
    • Multi-User Demo: Show Subjects' Cursors
    • Gamepad / Joystick Controller- Basic Set Up
    • Desktop App Study with EEG Integration
    • Between-subjects Group Balancing and Variable Setup
    • Building a Multi-user Study
    • Website Frame Eye Tracking Walkthrough
    • Conditional Webcam Eye Tracking
  • FAQ
    • Features
    • Support Policy & Guidelines
    • Security & Data Privacy
    • Licensing
    • Precision of Labvanced
    • Programmatic Use & API
    • Using Labvanced Offline
    • Troubleshooting
    • Study Creation Questions
  • Newsletter Archive
  • Documents
  • Classroom

Multi-user Experiment Design

By default, every participant in a Labvanced study runs their own experiment in isolation, even when several of them are in the same session together. Turning on multi-user mode does not change that by itself: it lets multiple participants join the same running session, but nothing one participant does is visible to another until you build that connection yourself. Events are what build it, specifically the Distribute Variable action, which is the bridge that carries a value out of one participant's isolated experiment and into another's.

When you need multi-user

If participants never interact in real time, for example if you are just comparing two between-subjects conditions, a standard single-participant study with group assignment is enough. You need multi-user specifically when two or more participants must be in the same session at the same time, and something one of them does needs to reach another while the session is running.

Setting up a synchronous session

Multi-participant tools are hidden by default. To enable them, open Settings, then under Special Features click through to Multi User Study and click Transform. This reveals Number of Participants (minimum 2) and Maximum Parallel Sessions. See Multi User Study for the full list of settings this unlocks. This click cannot be undone, so decide your participant count first, and duplicate the study beforehand if you want to keep a single-participant version too.

Turning this on only changes how participants are grouped into a session. It does not connect them. If two participants need to stay in step with each other at a specific moment, use Sync Frame Start (Frame Settings) or the matching option under Task Settings to hold everyone at that point until all participants arrive.

Example: Neither participant should move to the next trial before the other has responded. Set Sync Frame Start on that frame, and both participants wait there until they've both arrived.

Pairing and roles

Each participant is identified by the system variable Role_Id, assigned in order starting at 1 as people join. Use it in a Requirement Action to give participants different content.

Example: Role_Id equals 1 → show the target image. Role_Id equals 2 → show the response options instead.

By default, participants are matched randomly from the lobby. For a pre-arranged pair, use Predefined Participant Groups instead: in the Publish & Record tab, open Build Custom Link and enter a value in the group field. Participants who join through a link with the same group value are matched only with each other.

Example: Two lab participants are scheduled for the same time slot. Give each of them a link with group=12, and the two will be paired together instead of matched randomly from the lobby.

Shared variables between participants

This is the bridge itself. A Distribute Variable action sends a value from one participant to a target variable belonging to another, on whatever trigger you choose. Nothing is shared until an event like this fires.

Example: On a button-click trigger, distribute the clicking participant's current score to a PartnerScore variable on the other participant's screen.

If more than one participant could write to the same target variable around the same time, turn on the action's blocking option so the first one to arrive is processed before any other is allowed through.

Best Practices

  • Test with two separate browser sessions (a second tab or an incognito window) before publishing. Role assignment depends on join order, so this is the only reliable way to see both sides of the interaction.
  • Decide your Role_Id logic before you start building frames. Because role assignment applies for the whole session, it is easier to design around it from the start than to add it retroactively once frames already exist.
  • Audit every conditional branch for synced frames, not just the main path. A participant who takes a shortcut is the most common cause of another participant waiting indefinitely.
  • Turn on the blocking option for any Distribute Variable action where more than one participant could write to the same target variable around the same time.
  • Use Predefined Participant Groups instead of random lobby matching whenever pairing needs to be controlled, for example scheduled lab sessions or a study that depends on specific role combinations.

A concrete pattern: Director/Matcher referential communication task

This is a classic referential communication task: one participant describes a target item, and the other identifies it from a set of candidates. It is a two-role design, so it maps directly onto the tools above.

  1. Enable multi-participant with 2 participants and click Transform.
  2. Use a Requirement Action on Role_Id to split the two roles: Role_Id 1 becomes the Director, shown the target image and a text input. Role_Id 2 becomes the Matcher, shown a set of candidate images and no target. (Which Role_Id maps to which role is your choice; the pattern works the same either way.)
  3. When the Director submits a description, for example on an Enter-key or button trigger, use Distribute Variable to send the text value to a Description variable on the Matcher's screen, with blocking enabled since only one description should be in flight at a time.
  4. Display the distributed Description value to the Matcher, who selects a candidate image. Code the response against the known target to produce a correct/incorrect variable.
  5. Use Sync Frame Start on the frame where both participants move to the next trial, so the Director cannot advance before the Matcher has responded.

This is the same structure behind the Image Description Demo linked below. Once the mechanism is in place, swapping the target/candidate content changes the paradigm without changing the underlying event logic.

Examples of Multi-user Designs in Labvanced

Ultimatum Game

A two-player economic decision-making task: one participant proposes a split of a shared resource, the other accepts or rejects it.

Image Description Demo

A director/matcher referential communication task built with a live chat box: one participant describes a target image, the other identifies it.

Stock Market Game

A real-time 2-player version where one participant receives insider price information and decides whether to share it accurately, distort it, or withhold it.

Further Reading

Multi-Participant Studies

The technical reference for every mechanism on this page: enabling multi-participant mode, Role_Id, frame and task synchronization, and Distribute Variable.

Multi-User Psychology Studies

The capability overview: what multi-user studies make possible for behavioral research, independent of implementation detail.

Working with Variables

Variable types and properties, the foundation for both Role_Id-based logic and Distribute Variable targets.

Image Description Task and Game with a Chatbox

A full walkthrough of the director/matcher pattern in a real study, including the chat variable and reaction-time setup.

Prev
Data Frame Patterns