Skip to content

Label Task

Try the Demo

The Label task presents stimuli one at a time and asks participants to provide a text description or label for each. This is useful for collecting free-form textual responses such as stimulus names, descriptions, associations, or any other text-based annotation.

Example Label task

Example Label task showing a stimulus with a text input field below.

Below you'll find information specific to the Label task. This assumes you're familiar with how to setup an experiment and how to select stimuli for a given task.

Tip

The labels collected in this task can be used as text stimuli in a subsequent task. See Stimuli Selection and Configuration for details on how to select "labels" from a preceding task as your stimulus source.

Parameters

Customize the task by changing these on the Parameters tab of the task.

General Interface settings

Customize the instruction at the top of the page, as well as toolbar buttons. These apply to most task types on Meadows.

Instruction hint

Text that you can display during the task at the top of the page.

Extended instruction

A longer instruction that only appears if the participant hovers their mouse cursor over the hint.

Tip

Make clear to participants what type of label or description you're looking for. For example: "Enter a one-word name for this image" or "Describe this sound in a few words."

Hint size

Whether to display the instruction, or hide it, and what font size to use.

Fullscreen button

Whether to display a button in the bottom toolbar that participants can use to switch fullscreen mode on and off.

Text input settings

Control the constraints on participant text input.

Maximum Number Of Characters

Maximum number of characters allowed per label. Default: 50. Must be between 1 and 200.

Minimum Number Of Characters

Minimum number of characters required per label. Participants cannot submit until they've entered at least this many characters. Default: 1. Must be between 0 and 100.

Example

To collect single-word labels, you might set the minimum to 2 and maximum to 20. For longer descriptions, set the maximum to 100 or more.

Spatial configuration

Options for customizing the stimulus display.

Item Size

Height of the stimuli. Default: 8.0. Must be between 0.2 and 40.0. The width is adapted according to the original aspect ratio of the stimulus.

Item Unit

The unit to use for the size of the stimuli. Options:

  • Percentage of the available width (default)
  • Centimeters - requires participant calibration
  • Visual angle in Degrees - requires participant calibration and distance measurement

See the documentation page "Dimensions, Units & Calibration" for more details.

Data

For general information about the various structures and file formats that you can download for your data see Downloads.

Stimulus-wise "annotations" (table rows). Each row represents one labeled stimulus. Columns:

  • task Name of the task
  • participation Name of the experiment/participation
  • trial Numerical index of the trial (starting from 0)
  • time_trial_start Timestamp when the stimulus was displayed (seconds since 1/1/1970)
  • time_trial_response Timestamp when the participant submitted their label
  • stim1_id Meadows internal ID of the stimulus
  • stim1_name Filename of the stimulus as uploaded
  • label The text label entered by the participant

In the Tree structure, under the task object:

  • annotations An array with a key/value map for each trial:
    • trial Numerical index of the trial
    • start Timestamp (epoch time) of the start of the trial, in seconds since 1/1/1970
    • resp Timestamp (epoch time) of the response, in seconds since 1/1/1970
    • ids Array containing the stimulus ID presented in this trial
    • label The text label entered by the participant
  • stimuli Array of stimulus objects with id and name fields

Analysis and Visualization

The Label task produces text data that can be analyzed for content, frequency, or used as input for further processing.

import pandas as pd
from collections import Counter

# Load annotations data
df = pd.read_csv('Meadows_myExperiment_v1_annotations.csv')

# View labels for each stimulus
labels_by_stimulus = df.groupby('stim1_name')['label'].apply(list)
print(labels_by_stimulus)

# Count label frequency across all stimuli
all_labels = df['label'].str.lower().tolist()
label_counts = Counter(all_labels)
print("Most common labels:", label_counts.most_common(10))

# Calculate response time
df['rt_seconds'] = df['time_trial_response'] - df['time_trial_start']
print(f"Mean response time: {df['rt_seconds'].mean():.2f} seconds")
library(dplyr)
library(ggplot2)

# Load data
df <- read.csv('Meadows_myExperiment_v1_annotations.csv')

# Calculate response time
df$rt_seconds <- df$time_trial_response - df$time_trial_start

# Summary by stimulus
df %>%
  group_by(stim1_name) %>%
  summarise(
    n_labels = n(),
    mean_rt = mean(rt_seconds),
    labels = paste(label, collapse = ", ")
  )

# Plot response time distribution
ggplot(df, aes(x = rt_seconds)) +
  geom_histogram(bins = 20, fill = "steelblue", color = "black") +
  labs(x = "Response Time (seconds)",
       y = "Count",
       title = "Label Response Time Distribution") +
  theme_minimal()