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
- Visit jolars.github.io/qualpal/ to use the browser-based palette generator.
- Use the command-line interface to generate or analyze palettes.
- For a source build, use CMake 3.15 or later and a C++17-compatible compiler.
- For R workflows, use the qualpalr package.
- 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