Method card · Orientation perception

Match the angle.

How accurately can you set the angle of a line you saw for half a second, without a protractor? Are you better with oblique lines or with horizontal and vertical ones?

Go to experiment2 min long0 real first answers

Original study

  1. Appelle, S. (1972). Perception and discrimination as a function of stimulus orientation: The "oblique effect" in man and animals. Psychological Bulletin, 78(4), 266–278. Source
  2. Coppola, D. M., Purves, H. R., McCoy, A. N., & Purves, D. (1998). The distribution of oriented contours in the real world. Proceedings of the National Academy of Sciences, 95(7), 4002–4006. Source
  3. Furmanski, C. S., & Engel, S. A. (2000). An oblique effect in human primary visual cortex. Nature Neuroscience, 3(6), 535–536. Source
  4. Girshick, A. R., Landy, M. S., & Simoncelli, E. P. (2011). Cardinal rules: Visual orientation perception reflects knowledge of environmental statistics. Nature Neuroscience, 14(7), 926–932. Source
  5. de Gardelle, V., Kouider, S., & Sackur, J. (2010). An oblique illusion modulated by visibility: Non-monotonic sensory integration in orientation processing. Journal of Vision, 10(10), 6. Source
  6. Wei, X.-X., & Stocker, A. A. (2015). A Bayesian observer model constrained by efficient coding can explain 'anti-Bayesian' percepts. Nature Neuroscience, 18(10), 1509–1517. Source
  7. Pratte, M. S., Park, Y. E., Rademaker, R. L., & Tong, F. (2017). Accounting for stimulus-specific variation in precision reveals a discrete capacity limit in visual working memory. Journal of Experimental Psychology: Human Perception and Performance, 43(1), 6–17. Source
  8. Orban, G. A., Vandenbussche, E., & Vogels, R. (1984). Human orientation discrimination tested with long stimuli. Vision Research, 24(2), 121–128. Source

Our adaptation

An orientation reproduction task on the oblique effect (Appelle, 1972). In each of eight rounds a white line through the middle of a round aperture on a dark background is shown for 500 ms, followed by a 300 ms mask of random short lines; then an orange line starting 35–80° away is rotated into place. Four targets are exactly horizontal or vertical and four are oblique (22.5–67.5° from the nearest horizontal/vertical).

Differences from the original study

  • The screen's own edges provide a ready reference for horizontal and vertical, which may enlarge the effect.
  • Presentation time depends on the screen refresh rate.

Measured variables

The columns of the open data file. List fields are expanded into numbered columns (for example rt_60, est_3); JSON columns contain only numbers and fixed stimulus names.

ColumnTypeDescription
tJSONRounds: [[target °, answer °, start °, time in ms] × 8] (orientation 0–180).
err_1numberSigned orientation error in the round (°). (item 1)
err_2numberSigned orientation error in the round (°). (item 2)
err_3numberSigned orientation error in the round (°). (item 3)
err_4numberSigned orientation error in the round (°). (item 4)
err_5numberSigned orientation error in the round (°). (item 5)
err_6numberSigned orientation error in the round (°). (item 6)
err_7numberSigned orientation error in the round (°). (item 7)
err_8numberSigned orientation error in the round (°). (item 8)
pts_1numberRound score (0–10): 10 / (1 + (|error| / 6)^1.6). (item 1)
pts_2numberRound score (0–10): 10 / (1 + (|error| / 6)^1.6). (item 2)
pts_3numberRound score (0–10): 10 / (1 + (|error| / 6)^1.6). (item 3)
pts_4numberRound score (0–10): 10 / (1 + (|error| / 6)^1.6). (item 4)
pts_5numberRound score (0–10): 10 / (1 + (|error| / 6)^1.6). (item 5)
pts_6numberRound score (0–10): 10 / (1 + (|error| / 6)^1.6). (item 6)
pts_7numberRound score (0–10): 10 / (1 + (|error| / 6)^1.6). (item 7)
pts_8numberRound score (0–10): 10 / (1 + (|error| / 6)^1.6). (item 8)
pointsnumberTotal score (0–80).
card_errnumberMean absolute error for horizontal/vertical targets (°).
obl_errnumberMean absolute error for oblique targets (°).
pullnumberMean shift toward the nearest horizontal/vertical for oblique targets (°; positive = toward; misses above 20° excluded).
rationumberOblique error / horizontal-vertical error (denominator at least 0.3).
Columns present in every file (14)
row_idstringRow code. Regenerated at random in every release; it does not identify a person and cannot be matched across releases or experiments.
experimentstringShort name of the experiment (URL slug).
experiment_versionintegerVersion of the answer format. For experiments whose format changed, only the current format is published.
dateYYYY-MM-DD | YYYY-Www | YYYY-MMDay the answer was given (Istanbul time). If fewer than 5 answers share the same day, language and device, it is coarsened to the ISO week, and to the month if that is still too few.
date_precisionday | week | monthPrecision of the date column.
langtr | en | (boş)Interface language. Language recording started in the first week of October 2026; for earlier answers it is known only in experiments whose stimuli depend on the language, and empty otherwise.
devicedesktop | mobile | tablet | (boş)Device class reported by the browser (class only; browser details are neither stored here nor published).
sourcesite | embedWhere the answer came from: the balabs site or the experiment embedded on another site. The embedding site is not published.
modefree | daily | challenge | race | session | (boş)Play mode in scored experiments: free play, daily round, challenge, race room, experiment session. Empty for unscored experiments and for older answers that did not store it.
color_visionnormal | rg | by | contrast | (boş)In color-based experiments, the color vision mode the participant chose: normal, red-green, blue-yellow or high contrast. Stimuli are generated along different axes per mode, so compare within a mode. Empty for other experiments.
first_play1Every row is a participant’s first play of this experiment (always 1). Replays are stored only as leaderboard scores and are not part of the open data.
seen_beforeyes | no | unsure | (boş)Participant’s own report of whether they had seen this experiment or its known answer before (in experiments that ask).
duration_snumberTime from the start of the experiment to submitting the answer, in seconds (measured in the browser, 0.1 s).
play_scorenumberLeaderboard score of the first play (scored experiments; defined on the method card). Empty for unscored experiments.

Exclusion criteria

The server requires all eight rounds and checks that there are exactly four horizontal/vertical and four oblique targets; targets between 0.5° and 15° are rejected.

  • Only each participant's first answer to this experiment; replays are not included.
  • Simulated rows, bots, banned and sample accounts are not included.
  • Answers before 3 October 2026 are not included (the first day the open data notice was live).

Scoring

Leaderboard score: total score (0–80); higher is better.

Leaderboard measure: angle sense (higher is better). The play_score column in the open data is this score for the first play.

Version notes

  • October 2026

    The interface language (lang) started being stored with each answer; for earlier answers it is known only in experiments whose stimuli depend on the language, and empty otherwise.