Digital colors, reimagined

Talking about colors is hard without context. That’s why we provide a dedicated page for every color code. Use it to find matching color variants, learn more about color properties or convert color values.

The sum of its parts

Every color contains an individual composition of basic colors. Forget everything you learned about RGB or HSL sliders and explore a new way to modify digital colors.

Endless possibilities

Still looking for the right color? Compose new colors out of existing ones. If you blend a color with black or white you can even create the corresponding shades or tints.

Your palettes, your style

Use your favorite colors to build up a personal color library. Create project-specific palettes and share them with others. Need to document complex color collections? Add structured text content and turn your palettes into living style guides within seconds.


With the Power of CSS Variables

Elad Shechter


One of the most fundamental concepts in CSS is colors. It’s a basic concept everywhere, but in this article, we’ll be focusing on its representation when targeting browsers.

On the web, every color is a combination of 3 colors: red, green, and blue. It’s as if every pixel on the screen consists of three light-bulbs: green, blue, and red. The most common method for representing colors in CSS is the “Hexadecimal colors” method, and the next common method is the RGB/RGBA one. The two approaches differ in the way they represent the values of those colors.

pixels view from close look

The hexadecimal colors method— each of the three colors is represented using a double-digit HEX number, and a ‘#’ sign precedes the three figures. Each of the double-digit numbers defines the intensity of its respective “light-bulb”. The first double-digit number is for the pixel’s red light-bulb , the second number is for the green light-bulb, and the last one is for the blue light-bulb. We can also add double-digits number at the end, that will define the color’s opacity.

As you probably know, the hexadecimal base means that a digit’s value can be between 0 and 15, with the values of 10–15 represented by the letters A to F. In each of the double-digit numbers, the lowest number, 00, means that the bulb is shut off, and the highest number, FF, is the strongest light of this specific color. There are 256 intensity levels for each of these three colors. With those three light-bulbs that make up every pixel of color, we can create any color displayed on our screen. The two optional digits that define the color’s opacity are also a double-digit hexadecimal number. The highest value, FF, means full opacity, and the lowest value, 00, means total transparency. The numbers in between make the element semi-transparent, i.e., the color blends with the background color.

Here is an example of the red color(only the first light-bulb is on, the other bulbs are off):


background-color: #ff0000;

width: 100px;

height: 100px;


The RGB/RGBA colors method —this method is also based on each color being a combination of red, green, and blue. There are, however, two differences between this method and the hexadecimal one. First, this method uses decimal values as opposed to hexadecimal values in the previous way. Second, the syntax isn’t a string of numbers but a function — rgb() or rgba(). The functions accept a three-digit number between 0 and 255 for each of the red, green, and the blue “light-bulbs”. 0 means that the bulb is off, and 255 indicates that the light-bulb is with full brightness intensity. The rgba() function accepts a fourth parameter — the opacity. Its value is a decimal fraction, where 0 means full transparency, and 1 means full opacity, and the fractions in between are the element’s transparency percent.

Here is an example of the red color in RGB method:


background-color: rgb(255, 0, 0);

width: 100px;

height: 100px;


Working with the methods based on the color being a combination of red, green, and blue, raises a few challenges. The first is that this method isn’t intuitive — it isn’t how our minds perceive colors. When we look at a color, our brains don’t separate it into red, green, and blue. Therefore when writing the colors in such a way, we can’t easily recognize a color by its RGB number, whether hexadecimal or decimal.

Another potential challenge is maintenance. Web designers might sometimes want many shades of each color, for example, 30 types of blue, 20 types of orange, etc. When trying to maintain these many variations with CSS variables, we might end up with too many variables. What’s worse is that even though the colors might be different shades of the same color, their RGB representations aren’t connected in any way. Therefore if the web designer wants to change the blue scheme into a green scheme, it might require updating ten or more separate CSS variables.

The HSL/HSLA color method — HSL stands for hue, saturation, and lightness.

HSL works in the same way our brain perceives colors: a color that we can manipulate with lightness and saturation.

The Hue Property is a color picked from a palette of 360 colors. The colors are set in a circle, and each hue is a degree in the color-wheel. The chosen color is the base from which we’ll create other shades by adding saturation, lightness, or both.

The Saturation Property describes the color’s saturation. 0% means no color (the color will be grey), and a value of 100% will show the color in its most vibrant color. It’s best to use a value in the range of 10% — 100% since that will allow us to see the base color.

The Lightness Property describes the lighting intensity. The extreme values will eliminate the color: 0% will look black, and 100% will look white. Therefore we prefer to use numbers between 10% and 90% since that will allow us to see the base color.

The Alpha Channel Property (optional) — using HSLA instead of HSL allows us to control the color’s opacity. It’s best to use values in the range of 10% — 100% since that will enable us to see the base color (0% means transparent color).

The HSL method solves both problems we mentioned earlier. It corresponds with the way our mind perceives colors, and it also addresses the maintenance problem. Now web designers can be satisfied by choosing as little as 3–5 base colors and use them to create as many color variants as they like.

Now that we understand what an HSL color consists of, all we need is to structure it elegantly.

The web designer can choose between three and five base colors from the Hue palette, giving us 3 to 5 numbers, which are degrees on the hue palette’s color wheel.

These colors will be the basis on which the web designer can create many combinations with the lightness, saturation — and optionally the opacity — parameters.

The HSL method gives the web developer and the web designer a single place in which they control the website’s base colors. That’s where they can check and update the colors according to their needs.

Base Starting Points for the Saturation, Lightness and Opacity Parameters

As there are infinite color combinations that we can create from those base colors, I have created smart parameter values to start from:

  • Saturationbegin with the default of 50% — mid-range (has to be bigger than 0% value. Because 0% saturation value will make the color look grayish).
  • Lightnessstart with the default of 50% because it should be larger than 0% and smaller than 100% value; otherwise, the color will look either black or white.
  • Opacity — start with the default of 100%. If you are working with HSLA, you have a parameter for opacity, and full opacity is best. The 100% value means full opacity, while the 0% value will cause the color to be transparent.

To elegantly create color variations, we’ll first define each base color’s hue degree as a CSS variable. Example:

/**  common-colors  **/ 


/* base color 1 */

--base-color1: 60;

/* base color 2 */

--base-color2: 120;

/*base color 3*/

--base-color3: 200;


Then we can create other shades from each of those base colors. Here is an example of creating other shades of colors from base-color1.

In this example, we define a 50% value for saturation and change the lightness values to create the variations:

/** common-colors **/


/* base color 1 */

--base-color1: 60;

--color1-light: hsla(var(--base-color1), 50%, 75%, 100%);

--color1-normal: hsla(var(--base-color1), 50%, 50%, 100%);

--color1-darker: hsla(var(--base-color1), 50%, 35%, 100%);


Now, we’ll apply this method to the rest of the base colors:



/* base color 1 */

--base-color1: 60;

--color1-light: hsla(var(--base-color1), 50%, 75%, 100%);

--color1-normal: hsla(var(--base-color1), 50%, 50%, 100%);

--color1-darker: hsla(var(--base-color1), 50%, 35%, 100%);

/* base color 2 */

--base-color2: 120;

--color2-light: hsla(var(--base-color2), 50%, 75%, 100%);

--color2-normal: hsla(var(--base-color2), 50%, 50%, 100%);

--color2-darker: hsla(var(--base-color2), 50%, 35%, 100%);

/*base color 3 */

--base-color3: 200;

--color3-light: hsla(var(--base-color3), 50%, 75%, 100%);

--color3-normal: hsla(var(--base-color3), 50%, 50%, 100%);

--color3-darker: hsla(var(--base-color3), 50%, 35%, 100%);


That’s it! We’ve created a smart color scheme with HSL/HSLA colors, structuring it with the same base colors. The advantage is that now we can easily update the base colors, affecting all of their depending colors accordingly.

HSL Colors Pallet Result

This power serves both web developers and web designers. They can both play with those base colors and see how the website changes all its colors with those minimal base colors.

Codepen Live Example

Making More Common Rules for the Params of the HSL/HSLA

If you are a web developer who wants to take things one step further, you can generate CSS variables for the rest of the parameters (saturation, lightness & opacity), to target the most commonly used values. For example:


/** commonly used saturation/lightness/opacity levels **/

--saturation-level1: 20%;

--saturation-level2: 50%; /* mid range - normal */

--saturation-level3: 80%;

--lightness-level1: 75%;

--lightness-level2: 50%; /* mid range - normal */

--lightness-level3: 35%;

--opacity-level1: 100%; /* no opacity - normal */

--opacity-level2: 80%;

--opacity-level3: 60%;


Now you can use various combinations of these parameters to create better synchronization between the other colors. Example:

--color1-light:  hsla( var(--base-color1),  



var(--opacity-level1) );

Full Example on CodePen

That’s all.

I hope you’ve enjoyed this article and learned from my experience in using a better method for working with colors on the web.

If you like this post, I would appreciate applause and sharing 🙂

You can follow me via Twitter.

More of my CSS posts:

The New Responsive Design Evolution

New CSS Logical Properties!

CSS Position Sticky — How It Really Works!

Who Am I?

I am Elad Shechter, a Web Developer specializing in CSS & HTML design and architecture. I work at

You Can find me in my Facebook groups:

CSS Masters

CSS Masters Israel


216 Most Popular Web Safe PNG Colors

We have analyzed all of our 16 million PNG images, converted every single pixel (about 19 trillion in total) to a web safe HEX value & stored that data in our database. Below you can find a list of the 216 web safe colors ranked by popularity. Simply click on a color to browse images which contain that color.


Mostly desaturated dark red


Slightly desaturated red


Very dark desaturated red


Mostly desaturated dark yellow


Slightly desaturated yellow


Dark moderate orange


Very dark desaturated yellow


Mostly desaturated dark cyan


Dark moderate red


Very pale red [Pink tone]


Mostly desaturated dark blue


Very dark desaturated cyan


Very dark desaturated blue


Slightly desaturated blue


Slightly desaturated cyan


Very light orange


Very dark yellow [Olive tone]


Dark moderate blue


Dark moderate yellow


Mostly desaturated dark lime green


Very dark orange [Brown tone]


Very dark desaturated lime green


Mostly desaturated dark magenta


Slightly desaturated lime green


Dark orange [Brown tone]


Dark moderate green


Very dark desaturated magenta


Dark moderate cyan


Pure (or mostly pure) yellow


Slightly desaturated magenta


Dark moderate pink


Dark orange [Brown tone]


Dark moderate blue


Dark moderate lime green


Very dark magenta


Pure (or mostly pure) red


Dark moderate cyan – lime green


Pure (or mostly pure) orange


Moderate cyan – lime green


Very dark yellow [Olive tone]


Very pale lime green


Very light yellow


Moderate lime green


Very dark lime green


Dark moderate violet


Pure (or mostly pure) orange


Dark yellow [Olive tone]


Very dark cyan – lime green


Dark moderate magenta


Pure (or mostly pure) yellow


Very pale magenta


Strong cyan – lime green


Dark cyan – lime green


Pure (or mostly pure) red


Pure (or mostly pure) blue


Strong lime green


Strong cyan – lime green


Dark cyan – lime green


Very dark lime green


Pure (or mostly pure) cyan


Pure (or mostly pure) blue


Pure (or mostly pure) red


Pure (or mostly pure) blue


Very dark magenta


Very light violet


Strong lime green


Strong cyan – lime green


Pure (or mostly pure) pink


Pure (or mostly pure) lime green


Very light cyan – lime green


Pure (or mostly pure) pink


Strong cyan – lime green


Pure (or mostly pure) cyan


Very light lime green


Pure (or mostly pure) blue


Very light magenta


Pure (or mostly pure) yellow


Light cyan – lime green


Pure (or mostly pure) magenta


Light cyan – lime green


Pure (or mostly pure) lime green


Pure (or mostly pure) green


Pure (or mostly pure) magenta


Pure (or mostly pure) green


Pure (or mostly pure) cyan


Pure (or mostly pure) violet


Pure (or mostly pure) blue


Vivid cyan – lime green


Pure (or mostly pure) lime green


Pure (or mostly pure) magenta


Vivid cyan – lime green


Pure (or mostly pure) cyan – lime green


Pure (or mostly pure) violet


Pure (or mostly pure) cyan – lime green


Deutsche Telekom is perhaps best known around the world as the telco behind mobile carrier T-Mobile, but today it’s making an appearance in a lesser-known yet also regular role: trademark troll.

The company’s German lawyers have sent a letter to Lemonade, the AI-based insurance startup headquartered in New York, demanding it cease using magenta — a color that appears across Lemonade’s logo and marketing material — globally. DT also filed for and received an injunction on Lemonade operating in Germany — a block Lemonade has temporarily worked around by dropping magenta for the moment in the country (it’s using red instead).

But that is not the whole story: Lemonade, which said the letter came in the wake of its launch in Germany this summer, said that it will put up a fight. Today, it filed a motion with EUIPO (the European intellectual property office) to invalidate DT’s claim to a trademark on magenta; and it has further petitioned the German trademark office to remove DT’s claim to holding a right on magenta in the insurance sector.

“We thought this seemed like a massive over-reach,” Daniel Schreiber, Lemonade’s CEO and co-ounder, said in an interview. “Then when we started digging, we found that they’ve been doing this across a number of countries, covering big companies to the smallest businesses. It’s mind boggling. We are in insurance.”

This fact does not matter to DT, which says the color mark is associated with its brand “beyond the classic industry environment.”

“Deutsche Telekom has asked the insurance company Lemonade to stop using the color magenta,” a spokesperson said in response to our request for comment. “Like the company logo ‘T’ and other brand elements, the color magenta is registered as a Deutsche Telekom brand. Deutsche Telekom’s brands make a significant contribution to the company’s success. Deutsche Telekom is clearly recognized and remembered by the color magenta — beyond the classic industry environment. Deutsche Telekom respects everyone’s trademark rights, but expects others to do the same. In Germany, the competent court issued an injunction against Lemonade because it considered the use of magenta to be a violation of Deutsche Telekom’s color mark. Please understand that Deutsche Telekom will not comment further on this case until a final decision has been made.”

To be sure, this is far from Deutsche Telekom’s first efforts to defend its pink hue. The company has gone after carriers like AT&T and Telia, our sister publication Engadget (before the days when it was owned by another DT competitor, Verizon), Apple device management specialist dataJar, invoice services provider Compello and a now-defunct smartwatch maker.

The track record so far should give Lemonade some hope. In some cases — such as Telia’s and dataJar’s — DT lost and magenta has run free. In others, DT has had the upper hand, and has danced a little in celebration:

Who’s the bully now, John?

“We feel like we’re a character in a Disney movie, fighting a baddie,” Schreiber said.

But as with DT, sometimes Goliath is actually David, depending on who is punching up or down. That is to say, Lemonade is not a stranger to filing suits to defend its product and brand, either. The company was in a brief dispute with WeFox over IP infringement — a legal fight that appears now to be getting settled.

Lemonade’s CEO said that although DT’s letter specifies that the startup stop using magenta globally, he thinks that the carrier waited until the startup entered Germany to take legal action because it put the startup squarely in German jurisdiction, where DT might get treated more favorably because of its ubiquity. (Indeed, the cases where it has lost have all been outside its home market.)

Schreiber defended the use of magenta for Lemonade — incidentally, not typically a drink that is magenta — as part of its bigger ethos.

“We’ve been pink since launch because we wanted to give a sense of being trusting and fun and approachable. It’s a very prominent part of our brand, ” he said. “The backdrop to that is the monochrome of our industry, insurance.”

The company based more than just its logo on the color. Since being founded in 2015, all of its promotional materials have featured magenta, and its social media campaigns on services like Instagram are built around the color, with various household and other everyday objects dipped into magenta paint. (This is a reference to Lemonade’s insurance services: it offers home owner and rental insurance services that cover all your belongings.)

Lemonade’s Instagram effort in particular has gone somewhat viral: the company says that its posts have collectively been viewed 18 million times. Lemonade will now try to turn up the volume on that, with a new effort to defend its use of magenta with a #freethepink hashtag. As the saying goes, when life hands you lemons…

T-Mobile’s specific form of magenta that it has trademarked for its brand is RAL 4010, a color that is not exactly the same as Lemonade’s, Schreiber said. T-Mobile has been going after a number of companies using colors close to this as well, a process Lemonade is now charting as it gears up for its legal fight:

But one issue that might make this case not so clear cut is that Deutsche Telekom, it seems, actually does dabble in insurance. It offers insurance on digital services like cybersecurity, and it sells policies to cover your tech gadgets, and specifically devices — carriers, of course, being major resellers of smartphones, tablets and other electronics that are used over their networks. It’s not the same as household insurance, but highlights an area where the two might move closer together over time.

For Lemonade, growth is something that is likely to keep happening. Schreiber said that while the company will not disclose any plans today, it will be expanding into more regions within the U.S. and Europe, where it is now active, as well as further afield, and it is also considering entering into more product lines beyond home owners’ and home renters’ insurance.

Lemonade earlier this year raised $300 million on a $2 billion valuation led by the SoftBank Group — most of which, Schreiber said, is still in the bank.

Meanwhile, a small note on PitchBook dated October 28 noted that the company is now starting to raise a further $500 million. If this is true, it’s very early days. “News to me,” Schreiber said with surprise when I asked him about it.

Updated with comment from Deutsche Telekom.