DisplayCAL vs DisplayCAL-py3: Which Version Should You Use?

DisplayCAL-py3 is the community-maintained Python 3 port of DisplayCAL, the free open-source display calibration and profiling software. The original DisplayCAL (version 3.8.9.3, by Florian Höch) stopped development in 2019; DisplayCAL-py3 picks up where it left off and is now at version 3.9.19, with modern operating system support, current colorimeter drivers, and ongoing bug fixes. If you are a new user, the choice is simple: install DisplayCAL-py3.

The rest of this page explains exactly how the two lines differ, so you can make an informed decision – and understand why almost everyone should be on the py3 branch.

Side-by-Side Comparison

DisplayCAL 3.8.9.3 (original) DisplayCAL-py3 3.9.19 (current)
Maintainer Florian Höch (original author) Community project on GitHub, stewarded by Erkan Ozgur Yilmaz and contributors
Last release 2019 2026 (3.9.19)
Python version Python 2.7 (end of life since 2020) Python 3, bundled with the installer – nothing to install separately
Windows support Windows 7/8/10 era; 32-bit and 64-bit builds Windows 10/11 64-bit, plus native ARM64 builds
macOS support Older Intel macOS releases Current macOS on Intel and Apple Silicon (M1/M2/M3/M4)
Linux packaging Distribution packages of its era AppImage, Flatpak, DEB, and RPM
Colorimeter support Instruments available up to 2019 Everything from the original line plus newer instruments such as the SpyderX2 (Spyder2024), via ArgyllCMS 3.5.0
HDR handling Basic Improving – more reliable HDR display detection on Windows 11 22H2+, PQ roll-off save fix; full HDR workflows still a work in progress
Development status Discontinued Actively maintained
Best for Only legacy systems the py3 branch cannot run on All new users and everyone on a supported OS

Key Differences Explained

Python 2 vs Python 3

This is the fundamental divide. The original 3.8.9.3 runs on Python 2.7, which reached end of life in 2020 and no longer receives security updates. Installing it on a modern system means installing an obsolete interpreter alongside everything else. DisplayCAL-py3 bundles its own Python 3 runtime, so installation is self-contained – see the system requirements page for details.

Operating system support

The py3 branch is where all platform work happens: Windows 11 (including ARM64 machines), current macOS on both Intel and Apple Silicon, and modern Linux packaging (AppImage/Flatpak/DEB/RPM). The 3.8.9.3 line predates all of these – it comes from the Windows 7/8 era and cannot take advantage of current display APIs.

Instrument support

DisplayCAL drives ArgyllCMS for all measurement work, and the py3 branch tracks current ArgyllCMS releases (3.5.0 as of 2026). That means support for current instruments like the SpyderX2, which simply did not exist when 3.8.9.3 was released. If you bought your colorimeter recently, you almost certainly need the py3 branch.

HDR

Neither line offers a complete, finished HDR calibration workflow – that work is still in progress across the ecosystem. But the py3 branch is the only one moving forward: 3.9.18 brought more reliable HDR display detection on Windows 11 22H2 and later plus a fix for the SMPTE 2084 (PQ) roll-off save error.

Which Version Should You Use?

  • New users: install DisplayCAL-py3 3.9.19, full stop. Get it from our download page.
  • Existing 3.8.9.3 users on a modern OS: migrate to the py3 branch. Back up your ICC profiles first (see below), then install 3.9.19 and re-verify with one measurement.
  • Users on genuinely ancient hardware (for example, a 32-bit Windows 7 machine that the py3 builds do not target): 3.8.9.3 remains the pragmatic choice, since it is the last line that runs there. Just understand you are on discontinued software.
Rule of thumb: if your computer was made in the last decade, you want DisplayCAL-py3. The original 3.8.9.3 exists for legacy systems, not as an alternative for modern ones.

Migrating from 3.8.9.3 to DisplayCAL-py3

Migration is straightforward because both lines produce standard ICC profiles:

  1. Back up your existing profiles – Windows: export from Color Management; macOS: ~/Library/ColorSync/Profiles; Linux: ~/.local/share/icc.
  2. Install DisplayCAL-py3 3.9.19 from the download page. You can keep 3.8.9.3 installed during the transition, but do not run both at once against the same instrument.
  3. Run one verification measurement and compare against your backed-up profile. If the readings agree, make the py3 branch your daily driver and retire the old install.

Your old ICC profiles remain valid – ICC is an open standard, so a profile built by 3.8.9.3 loads and works exactly the same under the py3 branch and at the OS level.

Is DisplayCAL-py3 "Official"?

No – and it does not claim to be. DisplayCAL-py3 is a community fork: the original author's project ended, and volunteers continued it openly on GitHub. Likewise, this website is an independent resource site, not affiliated with Florian Höch or the py3 maintainers. Downloads offered here are convenience mirrors; the canonical source is always the displaycal-py3 GitHub repository. For the historical reference, the original project's site remains displaycal.net.

What Carries Over Between the Two Lines

Switching from 3.8.9.3 to the py3 branch does not mean relearning the software. The interface, workflow, and underlying concepts are identical:

  • Same calibration workflow: display adjustment, patch measurement, profile computation, then profile installation and verification – in the same order, with the same controls.
  • Same profile types: matrix/shaper and 3D LUT profiles, installed as standard ICC profiles that your operating system applies.
  • Your existing profiles load identically under either branch, because ICC is an open standard – nothing is locked to the version that created it.
  • Old tutorials still apply. Guides written for 3.8.9.3 – including our quick-start guide – remain accurate for the py3 branch, since button names and steps are unchanged.

What the Community Fixed Since 2019

The py3 branch is more than a Python 3 port. It represents years of accumulated maintenance the original line will never receive:

  • Current instrument support – colorimeters like the SpyderX2 that did not exist in 2019, delivered through current ArgyllCMS releases.
  • Modern operating system support – Windows 11 and ARM64, Apple Silicon macOS, and current Linux distributions with AppImage, Flatpak, DEB, and RPM packaging.
  • Current ArgyllCMS compatibility (3.5.0), bringing newer measurement code and instrument drivers.
  • Crash fixes such as the 3.9.19 batch: the macOS first-measurement crash, the settings-file bloat crash, and the phantom "Errors in…" dialog on Windows.
  • Sane installation – a bundled Python 3 runtime instead of depending on an end-of-life Python 2.7 you would have to install and maintain yourself.

Frequently Asked Questions

Is DisplayCAL-py3 the official version of DisplayCAL?

No. It is a community-maintained fork that continues the discontinued original project. The original DisplayCAL 3.8.9.3 by Florian Höch has not been updated since 2019.

Which DisplayCAL version should I install in 2026?

DisplayCAL-py3 3.9.19 – the current release of the actively maintained branch. Only users on very old systems that py3 builds do not support should consider the legacy 3.8.9.3.

Will my old ICC profiles still work with DisplayCAL-py3?

Yes. ICC profiles follow an open standard, so profiles created by 3.8.9.3 work identically under DisplayCAL-py3 and at the operating system level.

Does DisplayCAL-py3 support my SpyderX or i1Display?

The py3 branch supports the instruments the original line supported, plus newer ones – including the SpyderX2 (Spyder2024), added in 3.9.18 – through current ArgyllCMS releases.

Is DisplayCAL-py3 safe to download?

It is open-source software with its full code visible on GitHub. Download it from our download page or directly from the repository, and you can inspect or build the code yourself if you wish.

Do tutorials written for DisplayCAL 3.8.9.3 still work with DisplayCAL-py3?

Yes. The interface, workflow, and steps are unchanged between the two lines, so older guides – including this site’s quick-start guide – remain accurate for the py3 branch.

Can I install both DisplayCAL versions side by side?

You can keep both installed during migration, but do not run them simultaneously against the same instrument. Finish with one verification measurement under the py3 branch, then retire the old install.