ThatPainter
On the record · read 14 Oct 2026 · 46 facts

qualpal

What it is

qualpal is a free C++ library for generating qualitative color palettes designed to make colors perceptually distinct, particularly in data visualization. It accepts RGB colors, HSL or LCHab inputs, and predefined palettes. You can specify a background color for palette generation or extend an existing palette while keeping selected colors fixed. Its command-line interface can generate and analyze palettes, and a browser-based web app also generates palettes with somewhat less functionality than the library and R package. The project offers qualpalr for R workflows and lists a Python package called qualpal. For accessibility checks, it simulates deuteranomaly, protanomaly and tritanomaly using the Machado et al. model. Its heuristic uses farthest-point sampling and describes the selected colors as approximately maximally distinct. Qualpal does not choose colors based on aesthetics such as harmony or complementary relationships. Building from source requires CMake 3.15 or later and a C++17-compatible compiler; OpenMP is optional for parallelization. The source repository states that it is available under the MIT License.

For and against

For

  • Accepts RGB, HSL, LCHab and predefined palette inputs.
  • Can preserve chosen colors when extending a palette.
  • Simulates three color vision deficiencies.
  • Includes a command-line interface and browser palette generator.
  • Available under the MIT License.

Against

  • The web app has less functionality than the library and R package.
  • Palette selection does not account for harmony or complementary colors.
  • Building from source requires CMake 3.15 or later and a C++17 compiler.

Who it suits

qualpal suits developers and data visualization practitioners who need palettes with perceptually distinct colors and can work with its library, command-line interface, web app or language packages. It is less suited to choosing colors by harmony or other aesthetic relationships.

Getting started

  1. Visit jolars.github.io/qualpal/ to use the browser-based palette generator.
  2. Use the command-line interface to generate or analyze palettes.
  3. For a source build, use CMake 3.15 or later and a C++17-compatible compiler.
  4. For R workflows, use the qualpalr package.
  5. The project README lists a Python package called qualpal.

Limits to know

The browser-based app offers slightly less functionality than the library and R package. A source build requires CMake 3.15 or later and a C++17-compatible compiler; OpenMP is optional.

The verdict

Choose qualpal for free palette generation focused on perceptual distinction, including background-aware generation and palette extension. Look elsewhere if aesthetic harmony or complementary color selection is central to your work.

Questions

Does qualpal cost anything?

Qualpal is free, with a free plan and no free trial.

What platforms are supported?

It is listed for Linux, macOS, web and Windows.

Is qualpal open source?

The source repository states that Qualpal is available under the MIT License.

Can it account for color vision deficiencies?

Yes. It simulates deuteranomaly, protanomaly and tritanomaly using the Machado et al. model.

Does it have R or Python support?

The project provides the qualpalr R package and lists a Python package called qualpal.

Facts on the record

Algorithm
The algorithm uses deterministic farthest-point sampling to improve the minimum pairwise color distance.theoj.org · read 14 Oct 2026
Background color
You can specify a background color so generated colors are selected to remain distinct from it.jolars.github.io · read 4 Oct 2026
Background optimization
Palette generation can include a background color so selected colors remain distinct from it.theoj.org · read 14 Oct 2026
Builder API
The C++ interface uses a builder-style API for configuring palette generation.jolars.github.io · read 14 Oct 2026
C++ library
The core product is a C++ library for palette generation.github.com · read 14 Oct 2026
CLI
Qualpal includes a command-line interface for generating and analyzing palettes.github.com · read 14 Oct 2026
Color accessibility
Palettes can be adapted using color vision deficiency simulation.jolars.github.io · read 14 Oct 2026
Color space
The official site describes perceptually uniform color selection in DIN99d color space.jolars.github.io · read 14 Oct 2026
Dependencies
The JOSS paper describes the C++ library as lightweight and having no external dependencies.theoj.org · read 14 Oct 2026
Distance metrics
The project supports CIEDE2000, DIN99d and CIE76 color-difference metrics.theoj.org · read 14 Oct 2026
Input formats
The C++ project accepts RGB values, hexadecimal colors, HSL ranges and built-in palettes.github.com · read 14 Oct 2026
Large color spaces
The project advertises fast algorithms for large color spaces.jolars.github.io · read 14 Oct 2026
License
The source repository states that Qualpal is available under the MIT License.github.com · read 4 Oct 2026
Limit
Qualpal does not consider aesthetic factors such as color harmony or complementary colors when choosing colors.jolars.github.io · read 4 Oct 2026
Limit: build setup
The PyPI description says installing the Python package from source requires a C++ compiler.pypi.org · read 14 Oct 2026
Limit: maturity
PyPI classifies the Python distribution as development status 4, Beta.pypi.org · read 14 Oct 2026
Limit: R parity
The repository warns that qualpalr can lag behind the latest C++ library features.github.com · read 14 Oct 2026
Limit: web functionality
The official repository says the web app has slightly less functionality than the library and R package.github.com · read 14 Oct 2026
Maker
Johan Larsson is listed as the author and maintainer of Qualpal.jolars.co · read 14 Oct 2026
Maker role
Larsson's CV lists him as a Thiele Postdoctoral Researcher in the Department of Mathematical Sciences at Copenhagen University since 2024.jolars.co · read 14 Oct 2026
Palette extension
The library can extend an existing palette while keeping specified colors fixed.jolars.github.io · read 4 Oct 2026
Palette inputs
It accepts RGB colors, HSL or LCHab color spaces, and predefined palettes as inputs.jolars.github.io · read 4 Oct 2026
Platforms
Prebuilt binaries are available for Linux, macOS, and Windows.github.com · read 4 Oct 2026
Praise: accessibility
The independent JOSS paper highlights support for the full dichromacy spectrum and multiple color-vision-deficiency types.theoj.org · read 14 Oct 2026
Praise: flexibility
The independent paper emphasizes flexible generation from HSL, LCHab and fixed RGB inputs.theoj.org · read 14 Oct 2026
Publication
The JOSS paper was published October 16, 2025.theoj.org · read 14 Oct 2026
Purpose
Qualpal is a C++ library for generating qualitative color palettes with maximum perceptual distinctiveness, especially for data visualization.jolars.github.io · read 4 Oct 2026
Python features
The Python package provides CVD optimization, perceptual-distance analysis, CSS and JSON export, matplotlib visualization and Jupyter HTML display.pypi.org · read 14 Oct 2026
Python integration
The project README lists a Python package called qualpal.github.com · read 4 Oct 2026
Python licence
The PyPI package metadata identifies the Python implementation as MIT licensed.pypi.org · read 14 Oct 2026
Python package
The project is also distributed as the Python package qualpal on PyPI.pypi.org · read 14 Oct 2026
Python platforms
PyPI classifies the package for macOS, Windows, POSIX/Linux and Unix systems.pypi.org · read 14 Oct 2026
Python release
PyPI lists qualpal 1.1.0 as released January 9, 2026.pypi.org · read 14 Oct 2026
Python requirement
The Python package requires Python 3.9 or newer.pypi.org · read 14 Oct 2026
R API
qualpalr documents functions for palette generation, palette retrieval, color conversion, analysis, plotting and printing.jolars.github.io · read 14 Oct 2026
R dependencies
The R package imports graphics, stats, utils and Rcpp, links to Rcpp, and lists additional suggested packages.web-r.org · read 14 Oct 2026
R documentation
CRAN provides a reference manual and two vignettes, including an introduction and an alternatives comparison.mirror.ibcp.fr · read 14 Oct 2026
R integration
The project provides an R package called qualpalr for generating palettes in R workflows.jolars.github.io · read 4 Oct 2026
R licence
The CRAN R package is licensed under GPL-3.mirror.ibcp.fr · read 14 Oct 2026
R package
The library is distributed for R as qualpalr.jolars.github.io · read 14 Oct 2026
R requirements
qualpalr requires R 4.0 or newer, C++17 and compilation.mirror.ibcp.fr · read 14 Oct 2026
R version
CRAN metadata lists qualpalr version 2.0.0, published January 29, 2026.mirror.ibcp.fr · read 14 Oct 2026
Release quality
The R project's Windows CRAN check reports qualpalr 2.0.0 installed successfully under R 4.6.1 and Windows Server 2022.r-project.org · read 14 Oct 2026
Requirements
Building from source requires CMake 3.15 or later and a C++17-compatible compiler; OpenMP is optional for parallelization.github.com · read 4 Oct 2026
Web app
A browser application is available at qualpal.cc.jolars.github.io · read 14 Oct 2026
What it does
Qualpal generates qualitative color palettes whose colors are selected for perceptual distinctiveness.jolars.github.io · read 14 Oct 2026