Fixation Filter
#Explore how RealEye identifies fixations by analyzing gaze duration, movement speed, and noise-filtered data.
#How Does RealEye Compute Fixations?
Fixation is a sequence of gaze points that remain close in both time and space. RealEye uses an algorithm similar to the I-VT (Velocity-Threshold Identification) with the following criteria**:**
- Maximum gaze duration is 33 ms, ending at the raw gaze timestamp.
- Instead of measured angular velocity, RealEye classifies gaze movement by the distance it covers in the participant's rendered CSS pixels, presented as an estimated visual angle (1 CSS pixel ≈ 0.0213°).*
- Fixation time expands if the gap between gazes is ≤50 ms.
- Fixations require at least two gaze points.
- Fixation coordinates are calculated as the average of all included gaze points.
- Calculations use IEEE 754 double-precision format (14 decimal places).
- Sampling Rate Requirement – The fixation filter works with data sampled at over 20 Hz.
- AOI Fixation Inclusion – A fixation is considered part of an AOI (Area of Interest) if it begins within the AOI’s time range.
* Estimated visual angle. Assumes nominal viewing conditions: 1 CSS pixel ≈ 0.0213° (CSS reference pixel — 96 dpi at arm's length). Actual visual angle varies with physical screen size, viewing distance and browser zoom, so the value is an estimate, not a measurement.
![]()
To determine whether a cluster of gazes qualifies as a fixation, we define several parameters:
![]()
- Noise Reduction Window: the TOI (Time of Interest) window used to denoise raw data by applying a moving median algorithm. Each gaze point is replaced by the median of nearby points within the TOI window, reducing noise influence. Range: 20–1000 ms. Default: 200 ms.
-
Minimum Fixation Duration: the shortest time a gaze cluster (eye pause) must last to be considered a fixation. Range: 60–3000 ms. Default: 80 ms.
-
Maximum Fixation Duration: the longest time a gaze cluster can be considered a fixation before being split into multiple fixations. Range: 60–3000 ms. Default: 400 ms.
-
Gaze Velocity Threshold: data below this threshold is classified as a fixation, while higher-speed data is a saccade. The velocity is computed from the gaze movement in the participant's rendered CSS pixels, so the same on-screen movement classifies the same way on every screen size and device. Values are presented as an estimated visual angle in degrees per second (°/s*). Range: 5–300 °/s*. Default: 30 °/s.*
-
Maximum Saccade Duration: the upper time limit for saccades. Range: 20–300 ms. Default: 150 ms.
Check the Data Chart to see how different filter settings affect your results.
* Estimated visual angle. Assumes nominal viewing conditions: 1 CSS pixel ≈ 0.0213° (CSS reference pixel — 96 dpi at arm's length). Actual visual angle varies with physical screen size, viewing distance and browser zoom, so the value is an estimate, not a measurement.
Note on comparability: the classifier intentionally depends only on the CSS-pixel displacement and the time between samples. This replaces the previous viewport-diagonal calculation (percent of the browser viewport diagonal per second, restored in PR #1029) and does not re-apply the item-relative experiment reverted in PR #910 — the cross-device equivalence of identical item-relative movements (issue #840, criterion 1) is intentionally dropped. Fixation-derived metrics are therefore sensitive to the mix of screen sizes in a study; compare devices separately (for example desktop vs mobile) in cross-study or cross-wave comparisons. Heatmaps and AOI metrics stay relative to the item image and are unaffected.
💌 If you have any further questions, feel free to reach out to our team at support@realeye.io