Skip to Content

How to change an image color?


Changing the color of an image is a common task in web design and development. There are a few different ways to accomplish this using HTML and CSS. The most straightforward method is to apply a CSS filter to the image. This allows you to shift the colors of the image while maintaining the original image data.

Why change an image color?

There are a few reasons you may want to change an image’s color:

– To create a stylized effect – Changing an image to black and white, sepia, or other filters creates an artistic look.

– Color theming – You can tint images to match a particular color scheme. This helps images blend in with the overall site design.

– Improved accessibility – Changing image colors can increase contrast and improve readability for users with visual impairments.

– Seasonal themes – During holidays or special events, you can colorize images to match the occasion. For example, green for St. Patrick’s Day or red and green for Christmas.

Use CSS filters

The easiest way to alter an image’s color is using CSS filters. This is done by applying a filter property to the image with one of the following values:

– grayscale – Renders the image in black and white.

– sepia – Gives the image a reddish-brown sepia tone.

– hue-rotate – Rotates the hue an amount specified in degrees.

– invert – Inverts the colors.

– opacity – Makes the image transparent.

– saturate – Saturates the image’s colors by a specified percentage.

– brightness – Adjusts image brightness by a given percentage.

– contrast – Adjusts image contrast by a given percentage.

For example:

img {
filter: grayscale(100%);

This would render all images in grayscale. Multiple filters can be combined by separating with spaces:

img {
filter: grayscale(100%) brightness(50%);

Tint images with blend modes

Blend modes provide another way to tint images. The two most relevant blend modes for changing image colors are:

– multiply – Multiplies image pixels with a background color. This darkens the image and allows tinting it.

– screen – Inverses multiply, resulting in a lightening effect.

To use blend modes, you need to put the image over a colored

and set the image’s mix-blend-mode:

.tinted-image {
mix-blend-mode: multiply;

.tinted-image-container {
background-color: #8c3bff;

This would multiply the image colors with the #8c3bff purple background, tinting the image.

Change SVG image colors

For SVG images, you can modify the fill color directly in the SVG code itself. For example:



This will draw a red circle. To change the color, update the fill property to a different color value.

You can also target specific SVG elements in CSS:

circle {
fill: #0000ff;

This will turn the circle blue.

Use masking and blending

More advanced color changing can be achieved with CSS masking and blending. This involves blending the image with a solid color using a mask.

The steps are:

1. Create a

with the tint color as a background.

2. Add the image inside it.

3. Apply a mask to the image using the mask-image property:

.tinted-image {
mask-image: linear-gradient(black, transparent);

.tinted-image-container {
background: #8c3bff;

The black to transparent gradient mask will progressively hide the image, blending it with the background.

Adjusting the gradient allows you to control how much tinting is applied.

Use multiple elements

For greater control, you can combine an image with other HTML elements:



The .tint div provides the tint color:

.tint {
background: #ff0000;

While the image remains unchanged, overlaying it on the red div tints the image.

This approach works well when tinting needs to change dynamically, like on hover.

Use shadows

Adding shadows with the same color as the tint provides a complementary effect.

For example:

img {
filter: sepia(100%);
box-shadow: 0 0 20px #876644;

The tan colored shadow matches the sepia tone and enhances the tint.

Adjust shadow distance, spread, and color to get the right effect.

Change color with JavaScript

For interactive effects or more complex color changing, JavaScript can dynamically modify image colors.

Some options:

– Change CSS filter values on the fly to animate transitions between color effects.

– Update fill colors of SVG images.

– Swap out CSS classes to toggle filters on hover or when clicking buttons.

– Blend colors using the canvas API to create custom effects.

– Generate new images serverside to apply color changes.

For simple tweaks CSS is usually sufficient, but JavaScript opens up many possibilities.


Changing an image’s color is easy to do in HTML and CSS, whether you want to create stylized effects or make branding changes. The key techniques are:

– Use CSS filters like sepia and hue-rotate for simple tweaks.

– Blend images with background colors using mix-blend-mode.

– Modify fill colors directly in SVG code.

– Combine images with tinted divs for greater control.

– Add shadows that match the tint color.

– Use JavaScript to animate or apply complex color changes.

With all of these tools, you can customize image colors to suit any need for your website or application.

Summary of key points

– CSS filters like grayscale and sepia modify image colors
– Blend modes allow tinting images by mixing with background colors
– Fill colors can be directly changed in SVG images
– Masking and blending enables gradual tinting effects
– Combining images with tinted divs provides precise control
– Matching shadows to tint colors improves the effect
– JavaScript enables complex interactive color changes

By applying these techniques, you can effectively modify image colors for any situation that calls for it. With a solid understanding of the available tools, you’ll be able to adapt website images to fit your design needs.