Skip to main content

A feature-rich color exploration and manipulation tool.

Project description

hexlab

PyPI version Python versions Downloads

A professional, feature-rich hex color exploration and manipulation tool for the command line.

Introduction

hexlab is a powerful CLI utility for developers, designers, and accessibility experts. It provides deep insight into 24-bit colors, supporting advanced color spaces like OKLAB, OKLCH, CIE LAB, CIE XYZ, and standard formats like RGB, HSL, and CMYK.

Beyond inspection, hexlab offers sophisticated manipulation capabilities, including gradient generation using interpolation in perceptual color spaces, vision simulation for color blindness, and a robust adjustment pipeline for fine-tuning colors.

Installation

hexlab requires Python 3.7+.

Via PyPI (Recommended)

pip install hexlab

From Source

git clone https://github.com/mallikmusaddiq1/hexlab.git
cd hexlab
pip install .

Quick Start

Inspect a hex color with visual bars and WCAG contrast:

hexlab -H FF5733 -rgb -hsl -wcag

Generate a smooth gradient in OKLAB space:

hexlab gradient -H FF0000 -H 0000FF -cs oklab --steps 15

Simulate color blindness (Deuteranopia):

hexlab vision -cn "chartreuse" -d

Main Command

The base command allows you to inspect a single color, view its neighbors, and retrieve technical specifications in various formats.

usage: hexlab [-h] [-H HEX | -r | -cn NAME | -di INDEX] [OPTIONS...]

Input Options

Exactly one input method is required.

Flag Description
-H, --hex 6-digit hex color code (e.g., FF5500). Do not include the #.
-r, --random Generate a random 24-bit color.
-cn, --color-name Use a named color (e.g., tomato, azure). See --list-color-names.
-di, --decimal-index Input integer index (0 to 16777215). Useful for programmatic iteration.
-s, --seed Seed for random generation reproducibility.

Navigation & Modifications

Flag Description
-n, --next Show the next color (index + 1).
-p, --previous Show the previous color (index - 1).
-N, --negative Show the inverse (negative) color.

Technical Information Flags

Toggle specific color space outputs or information blocks.

Flag Description
-all Show all available technical information.
-wcag Show WCAG contrast ratios (AA/AAA) against Black and White.
-hb, --hide-bars Hide the visual ANSI color bars (raw text output only).
-rgb Red, Green, Blue (0-255).
-hsl Hue, Saturation, Lightness.
-hsv Hue, Saturation, Value.
-hwb Hue, Whiteness, Blackness.
-cmyk Cyan, Magenta, Yellow, Key (Black).
-lab CIE 1976 Lab (Perceptually uniform).
--oklab OKLAB (Improved perceptual uniformity).
--oklch OKLCH (Cylindrical form of OKLAB).
-xyz CIE 1931 XYZ.
-lch CIE LCH (Cylindrical Lab).
--cieluv CIE 1976 LUV.
-l, --luminance Relative Luminance (0.0 - 1.0).

Meta Options

Flag Description
--list-color-names [fmt] List all supported color names. Format can be text, json, or prettyjson.
-hf, --help-all Print help for the main command AND all subcommands.

Subcommands

hexlab features a suite of specialized tools invoked via hexlab <subcommand>.

1. Gradient

Generate interpolated color steps between two or more colors. Supports interpolation in perceptual spaces like OKLAB for smoother results.

hexlab gradient -H FF0000 -H 00FF00 -S 10 -cs oklab
Option Description
-H, -cn, -di, -r Input colors. Must provide at least 2 inputs (or use -c with -r).
-S, --steps Total number of steps in the gradient (default: 10).
-cs, --colorspace Interpolation space. Choices: srgb, srgblinear, lab, lch, oklab (default), oklch, luv.

2. Mix

Mix (average) multiple colors together. Useful for finding the midpoint or blending pigments conceptually.

hexlab mix -cn red -cn blue -a 50
Option Description
-a, --amount Mix ratio for 2 colors (0-100%). Default 50% (perfect average).
-cs, --colorspace Mixing space. Averaging in srgblinear often yields more physically accurate light mixing than srgb.

3. Scheme

Generate standard color harmonies based on color theory wheels.

hexlab scheme -H FF5733 -triadic -hm oklch
Option Description
-hm, --harmony-model The color wheel model to rotate hue on. Choices: hsl (classic), lch, oklch (modern).
-co, --complementary 180° rotation.
-sco, --split-complementary 150° and 210° rotations.
-tr, --triadic 120° and 240° rotations.
-an, --analogous -30° and +30° rotations.
-tsq, -trc Tetradic Square (90° steps) and Rectangular (60°/180°).
-mch Monochromatic (Lightness variations).
-cs Custom degree shift (e.g., -cs 45).

4. Vision

Simulate various forms of Color Blindness (CVD) to test accessibility.

hexlab vision -r -all
Flag Description
-p, --protanopia Red-blind simulation.
-d, --deuteranopia Green-blind simulation (most common).
-t, --tritanopia Blue-blind simulation.
-a, --achromatopsia Total color blindness (grayscale).

5. Similar

Find perceptually similar colors by searching the 24-bit space around a base color.

hexlab similar -H 336699 -dm oklab -c 5
Option Description
-dm, --distance-metric Algorithm to calculate "similarity". Choices: lab (CIEDE2000), oklab (Euclidean), rgb.
-dv, --dedup-value Threshold to consider colors "different". Higher values result in more distinct results.
-c, --count Number of similar colors to generate.

6. Distinct

Generate a palette of visually distinct colors starting from a base. Uses a greedy algorithm to maximize distance.

hexlab distinct -r -c 10 -dm oklab
Option Description
-c, --count Number of distinct colors to find.

7. Convert

Utility to convert numerical color strings between formats.

hexlab convert -f hex -t rgb -v "FF0000"
hexlab convert -f oklch -t hex -v "oklch(0.6 0.15 45deg)"
Option Description
-f, --from-format Source format (e.g., oklch, rgb, hex).
-t, --to-format Target format.
-v, --value The value string. Use quotes!
-V, --verbose Show input -> output format.

8. Adjust

An advanced color manipulation pipeline. Operations are deterministic. By default, a fixed pipeline is used, but you can define custom order.

hexlab adjust -H 663399 --lighten 20 --rotate 15 --posterize 8

Tone & Vividness

Flag Description
--brightness / --brightness-srgb Adjust linear or sRGB brightness (-100% to 100%).
--contrast Adjust contrast.
--gamma Apply gamma correction.
--exposure Adjust exposure in stops.
--chroma-oklch Scale chroma using OKLCH space.
--vibrance-oklch Smart saturation that boosts low-chroma colors more than high-chroma ones.
--warm-oklab / --cool-oklab Shift color temperature.
--target-rel-lum Force the color to a specific relative luminance (0.0 - 1.0).
--min-contrast-with Ensure the result meets a contrast ratio against this hex code.

Filters

Flag Description
--grayscale Convert to B&W.
--sepia Apply retro sepia filter.
--invert Invert color channels.
--posterize Reduce color depth to N levels.
--solarize Solarize effect based on OKLAB Lightness.
--threshold Binarize color (Black/White) based on luminance.
--tint Tint towards a specific Hex color.

Pipeline Control

Flag Description
-cp, --custom-pipeline Apply adjustments exactly in the order flags are passed in CLI (disables fixed pipeline).
-V, --verbose Log every step of the adjustment pipeline.

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a feature branch (git checkout -b feature/amazing-feature).
  3. Commit your changes.
  4. Push to the branch.
  5. Open a Pull Request.

Please ensure any new color math is backed by tests in the tests/ directory.

Author & License

hexlab is developed and maintained by:

Mallik Mohammad Musaddiq

Email: mallikmusaddiq1@gmail.com

© 2025 Hexlab. Open Source Software.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hexlab-0.0.6.tar.gz (48.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hexlab-0.0.6-py3-none-any.whl (55.0 kB view details)

Uploaded Python 3

File details

Details for the file hexlab-0.0.6.tar.gz.

File metadata

  • Download URL: hexlab-0.0.6.tar.gz
  • Upload date:
  • Size: 48.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for hexlab-0.0.6.tar.gz
Algorithm Hash digest
SHA256 aad5e90009f3980a97a8a247d942b22c046bd825a2b109c16046eab46398a8e2
MD5 f66f5f36f718fdcfae8c9415a97e09fd
BLAKE2b-256 0aaa0134ab63ac253be905043961e9d49b10659733ff2b4dafb07ebc12227f99

See more details on using hashes here.

File details

Details for the file hexlab-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: hexlab-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 55.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for hexlab-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 782f54d0681c523bf80af0969cf59de69ee8d9aea453bdd7971a96c2634dbe3c
MD5 930e5603f5f253bacab742bb14e8b29a
BLAKE2b-256 7e4f43cdc5dad8ab7ec26ded1cebf915fcaa014aa33e63dfb2a9eddd4f6d24f1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page