All software releases

Here you will find a log of all features, changes, bug fixes, and developer notes for Pupil Labs software.

Pupil cloud

December 10, 2021

Pupil cloud

December 10, 2021

We are excited to announce our latest release for Pupil Cloud including a novel fixation detector, advanced privacy features in workspaces, and more! All recordings uploaded after this release will automatically have fixation data.

Fixation Detection

We have developed a novel fixation detector for Pupil Invisible! It was designed to cope with the challenges of head-mounted eye tracking and is one of the most robust algorithms out there!

Traditional fixation detection algorithms are designed for stationary settings which assume minimal head movement. Our algorithm actively compensates for head movements and can detect fixations more reliably in dynamic scenarios. This includes robustness to vestibulo–ocular reflex (VOR) movements.

Fixations will be calculated automatically on upload to Pupil Cloud and be available in all exports. We are planning on open sourcing our new fixation detection algorithm in the near future along with a white paper and integration into Pupil Player for offline support.

Check out documentation on fixations exported for enrichments in the docs

Advanced Workspace Privacy Settings

We are introducing additional privacy settings for workspaces to cover a few specialized use cases that were requested by the community.

You can now disable scene video upload for the entire workspace. This allows users to make use of Pupil Cloud features like the calculation of 200 Hz gaze or fixations, while complying with strict privacy policies that would not allow scene video uploads to our servers.

In a future release we will introduce the ability to automatically blur faces on-upload of a recording to a workspace, such that the potentially sensitive original version is never stored in Pupil Cloud.

“Created by” Column in Recordings List

You can now see who uploaded each recording in the Drive view “Created by” column. We hope this makes collaboration easier within your workspace.

Optimized Project Editor Layout

We made more space for the video player at the center, and added a toolbar above the video player. The toolbar contains contextual enrichment related functions. Currently only for the Marker Mapper enrichment - more in the near future!

Pupil cloud

September 30, 2021

Pupil cloud

September 30, 2021

Big release! We added two powerful new features. Workspaces enable collaboration with your colleagues. Face Mapper automatically detects faces in recordings!


Workspaces enable you to collaborate with colleagues through role based access from data collection with Pupil Invisible Companion App to data annotation and enrichment in Pupil Cloud. Workspaces act as isolated spaces that contain recordings, wearers, templates, labels, projects and enrichments.

Note: Update the Pupil Invisible Companion app to the most recent version (v1.3.0) to make use of workspaces.

Learn more about Workspaces

Face Mapper

Face Mapper is a new enrichment that automatically and robustly detects faces in the scene video and maps gaze data onto the detected faces. This enables you to easily determine when a subject has been looking at a face and to compute aggregate statistics (example: how much time was spent looking at faces?).

Learn more about Face Mapper

Share your thoughts

Have feedback, questions, feature requests - send us your thoughts!

Pupil cloud

July 22, 2021

Pupil cloud

July 22, 2021

Head Pitch & Roll Estimates are now available!

The Inertial Measurment Unit (IMU) sensor embedded in the Pupil Invisible Glasses frame provides measurements that can tell us how the wearer’s head is moving. This can be valuable if you want to measure when your subject is looking downwards vs upwards for example.

In this update we have made the outputs of the IMU much easier to work with. Instead of only reporting the raw outputs of the IMU (rotational speed and translational acceleration), we now include estimates of the absolute pitch and roll of the head.

This is part of the Raw Data Exporter. You can find more details about how the estimates are calculated in the docs!

Information on when the Glasses are worn now included in Raw Data Export

The gaze.csv file included in the Raw Data Export now contains a new column called worn that indicates whether the Pupil Invisible Glasses have been worn by a subject at the respective time point (1.0 = worn, 0.0 = not worn).

This data has previously only been available as part of the binary recording data.

Improved Export Format of Marker Mapper

We have updated the export format of the Marker Mapper to be easier to use:

We have added a new column detected markers to the aoi_positions.csv file that contains the IDs of all the markers detected in the respective frame. We have split the corner coordinates in image column in the aoi_positions.csv file in to a separate column per coordinate to make it easier to parse.

Do you have feedback you would like to share?

Please do so!

Pupil cloud

June 15, 2021

Pupil cloud

June 15, 2021

Reference Image Mapper

The Reference Image Mapper is a powerful enrichment that enables you to automatically map gaze to an object of interest. This enrichment works best when you provide optimal reference image and scanning recording, and understand the limitations of the tool. To make this easier we have created an explainer video and integrated it directly into the enrichment creator.

We also added the reference image that was used to create the enrichment in the download. This ensures that this important image is always available for further analysis.

Undistorted Gaze Overlay Videos

Cloud Gaze overlay

Pupil Invisible's world camera uses a wide-angle lens to capture a large field of view which introduces optical distortion. We have introduced a new setting to the Gaze Overlay enrichment that enables you to removing this distortion from the video.

In-App Feature Notifications

We are regularly adding new features to Pupil Cloud and want to make sure every user stays on top of what is currently available and possible. New features will be announced within Pupil Cloud itself.

Pupil core

May 13, 2021

Pupil core

May 13, 2021

Please feel free to get in touch with feedback and questions via the #pupil channel on Discord! 😄

Pupil v3.3 focuses on improving software usability, stability and performance. We have made improvements to how product-specific plugins are loaded in Pupil Player, updated keyboard shortcuts, and fixed several stability issues. Additionally, the surface tracker now exports marker detection results.

Note: Prior to this release,diameter_3d data for all Pupil Core v3 recordings did not have corneal refraction applied. See pye3d v0.0.7 notes below for updates and post-hoc fixes.


pye3d v0.0.7

This release comes with our latest pye3d version including the following improvements

  • Performance improvements - #27
  • Simplification of Conic parameter calculation - #26
  • Correctly apply corneal-refraction correction to diameter_3d result - #28

All pye3d versions prior to 0.0.7 do not correctly apply corneal refraction to the diameter_3d field. To check if you are affected by this bug, take a look at the method column of your pupil_positions.csv export.

You have two options to get correctly calculated pupil size data:

  1. Use the circle_3d_radius values and multiply them by 2, or
  2. Re-run the post-hoc pupil detection in Pupil Player v3.3 or later

Marker detection export - #2140

The Surface Tracker plugin requires fiducial markers for defining and tracking areas of interest. Until now, the detection result of these was only stored as an intermediate result. With this release, the data is also stored as a CSV file next to other surface-tracking related exports.

The data is exported to surfaces/marker_detections.csv.

Column name Description
world_index Scene video frame index
marker_uid Label for identifying the marker
corner_0/1/2/3_x/y Corner coordinates in pixels

Improve surface detection consistency - #2139

Surfaces can now be defined as long as one or more markers are detected in the scene video. Previously, this was only sufficient in some cases – usually, at least two markers were needed.

Note: Surface tracking works best if you use multiple markers spread-out over the area of interest to define and track your surface. The surface position export files contains information about how many markers were detected for each surface position. You can use this information as an estimation of the tracking stability.

Product-specific plugin loading in Pupil Player, part 2 - #2125

We continue work on finetuning the list of enabled plugins for Pupil Invisible recordings.

Starting with this release we have removed the “Pupil from recording” option, as there is no pupillometry data to load from Pupil Invisible recordings. Pupil Player will no longer generate an empty pupil_positions.csv file after export.

Keyboard shortcuts update - #2129

The default annotation keyboard shortcut was changed to x in both Pupil Capture and Pupil Player to avoid collision with other plugin shortcuts.

We’ve posted tables of keyboard shortcuts for Pupil Capture and Pupil Player below. You can find these tables in our Capture and Player documentation.


  • Fixed HMD calibration crashing Pupil Service - #2120
  • Fixed Pupil Groups serialization issue - #2124
  • Fixed toggling pupil detection on and off - #2126
  • Fixed calibration area calculation errors - #2128
  • Fixed video source replacement in eye process - #2131
  • Fixed gaze visualization on Apple Silicon computers - #2132
  • Fixed Pupil Invisible timestamp update procedure precision loss - #2134
  • Made pye3d plugin’s debug visualization colors consistent - #2136
  • Fixed validation crash when not enough reference data is collected - #2137
  • Fixed a crash when using Time Sync on macOS - #2138

Developer notes

Dependencies updates

Python dependencies can be updated using pip and the requirements.txt file:

python -m pip install --upgrade pip wheel
pip install -r requirements.txt

We have specifically updated the version requirement for pye3d.