Market
Pricing
Sign inStart
Field GuideColour
Colour

Dark color palettes: moody codes that still read

Dark palettes look expensive when they are made of near blacks with a trace of colour, and cheap when they are pure black with neon. Here are six that get it right, with every code.

GradientlyVerified Gradiently account·October 1, 2026·5 min read
Cover: Gilt Meridian · GR·KJY4·WB

The short version

  • A good dark color palette is built on a near black with a slight tint of colour rather than pure #000000.
  • Text on a dark palette reads best in a soft off white, which keeps strong contrast without the glare of pure white.
  • Accent colours on dark grounds should be lighter and less saturated than they would be on white, because vivid colours vibrate against black.
  • Dark interfaces show depth by making raised surfaces slightly lighter, not by adding shadows.
  • Every text colour in a dark palette still needs to pass a contrast check against the surface it actually sits on.
On this page
Six dark color palettes with hex codesThe same palettes as dark gradientsRules for dark palettes that readHow to make a dark palette from your brand colourUsing a dark palette in CSSDark palettes for social posts

A dark color palette that still reads has three parts: a near black ground with a hint of colour in it, a soft off white for text, and one or two accents that are lighter and calmer than you would use on white. Pure black with saturated neon looks harsh and tires the eyes. Tinted darks with gentle highlights look deliberate and expensive. The six palettes below follow that recipe, with hex codes you can copy and contrast ratios already checked.

Six dark color palettes with hex codes

Each palette has the same five roles, from left to right: ground (the page), surface (cards and panels, a step lighter), deep (a rich mid colour for shapes and large areas), accent (for links, buttons and highlights) and text.

Midnight ink

Cool, calm and technical. Text on the ground is 15.5:1; the periwinkle accent is 7.7:1, enough for links and small labels.

Forest night

Natural and quiet, good for wellness, outdoor and food brands. Text 15.1:1, sage 9.7:1.

Oxblood and copper

Warm and rich, at home on wine lists, theatre and evening events. Text 15.9:1, copper 6.5:1.

Aubergine

Creative and nocturnal, a softer alternative to neon purple. Text 16.7:1, orchid 8.3:1.

Charcoal and ember

Neutral greys with one hot accent, the classic for apps and dashboards. Text 16:1, ember 8:1.

Deep teal

Oceanic and composed, suited to finance and health. Text 15.6:1, aqua 8.5:1.

The deep colours in each palette are for areas, not words: navy on the midnight ground, for example, is only about 1.7:1. Use them for shapes, illustrations and backgrounds behind text in the lighter colours.

The same palettes as dark gradients

Dark palettes come alive when the deep colour glows out of the ground like light in a dim room. These use only the codes above, so they match the flat palettes exactly. More techniques are in dark gradient backgrounds and moody gradients.

Dark gradients band more than any other kind. Add a little grain and avoid heavy JPEG compression when you export.

Rules for dark palettes that read

Avoid

  • Pure #000000 as the ground
  • Pure #ffffff for long passages of text
  • Fully saturated accents, which seem to vibrate
  • Drop shadows to show which card is on top
  • Thin, light weight type at small sizes

Do

  • A near black tinted towards your brand hue
  • An off white tinted the same way
  • Lighter, softer versions of accent colours
  • Lighter surfaces for raised elements
  • Regular or medium weights, slightly looser spacing

Why not pure black? Black with pure white text is the maximum contrast a screen can show, 21:1, and on bright displays it can feel glaring, especially across long passages. A tinted near black at around 15:1 is still far above every accessibility threshold and much easier to read for long. It also gives the palette a temperature, which pure black never has.

Why calmer accents? A saturated blue or red that looks fine on white seems to glow and wobble at its edges on black. Lift its lightness and lower its saturation slightly, as with the periwinkle and sage above, and it sits still. Check every accent you use for text with a contrast checker.

How to make a dark palette from your brand colour

You do not need to borrow one of the palettes above. Any brand colour can be turned into a dark palette by keeping its hue and changing only lightness and saturation. This works best in a format that separates the two, such as HSL. Here a coral brand colour, #e0525d, becomes a full dark set.

  1. 1

    Ground: same hue, almost no light

    Keep the hue, drop saturation to about 30% and lightness to about 7%: #170c0d. It reads as black but feels warm.

  2. 2

    Surface: one step up

    Raise lightness to about 12% and lower saturation a touch: #261718. Cards and panels sit here.

  3. 3

    Deep: a rich mid tone for areas

    Lightness around 28% gives #68272d, a muted wine for shapes and illustration, never for text.

  4. 4

    Accent: lighter and softer than the brand

    Lift the coral to about 72% lightness: #ea868e reaches 7.6:1 on the ground, while the original coral manages 5.1:1 and looks harsher.

  5. 5

    Text: an off white with a trace of the hue

    #f2e9e9 gives 16:1 on the ground and quietly matches everything else.

A dark palette derived from one coral. Every colour shares the hue, which is why the set feels like a single brand at night.

Using a dark palette in CSS

Name colours by role so the same components work in light and dark themes. The pattern below defines Midnight ink as the dark theme and lets the system setting choose. Dark mode design covers the wider decisions, such as images, borders and charts.

css
:root {
  color-scheme: light dark;
  --ground:  #f7f7fb;
  --surface: #ffffff;
  --text:    #151b2c;
  --accent:  #2b3a67;
}

@media (prefers-color-scheme: dark) {
  :root {
    --ground:  #0b0f1a;
    --surface: #151b2c;
    --text:    #e8e6f0;
    --accent:  #8fa3d9;
  }
}

body { background: var(--ground); color: var(--text); }
.card { background: var(--surface); }
a { color: var(--accent); }
The accent changes between themes: deep navy on light, periwinkle on dark. One colour rarely works on both.

Dark palettes for social posts

On a feed, a dark post stands out among bright photos, but only if the words read at phone size. Keep type large, keep the brightest part of the background away from the headline, and give the words the calmest area of the frame.

Gallery nights
Late opening, Thursday.
Doors at seven, last entry at ten
Gradiently · @gradiently

A dark, moody post where the type sits on the calmest part of the background and the glow stays clear of the words.

This is where a Gradiently Mark helps: it moves its calmest, best contrasting region behind the text and auto ink picks light or dark type for every line from the Mark's own palette, so a moody background never swallows the headline. For dark looks with a richer, premium character, see luxury colour palettes and the dark academia aesthetic.

Find a gradient that’s only yours

Browse thousands of Marks, design with any of them for free, and claim the one that feels like you.

Browse the Market

Questions people ask

What colours go in a dark color palette?

A tinted near black for the ground, a slightly lighter surface colour, one deep mid colour for large areas, a lighter accent and a soft off white for text.

Should I use pure black for dark mode?

Usually not. A near black such as #121212 or a tinted dark like #0b0f1a reduces glare with white text and still gives very high contrast.

What text colour works best on a dark background?

A soft off white like #e8e6f0 or #ededed. It keeps contrast around 15:1 or more without the harshness of pure white.

Why do bright colours look wrong on a dark background?

Saturated colours appear to vibrate against black. Use lighter, slightly less saturated versions for accents on dark grounds.

Share this guide

Written by GradientlyVerified Gradiently account

The team behind Gradiently, a design tool built around Marks: living gradients that make everything you design look like yours.

See our profile

On this page

Six dark color palettes with hex codesThe same palettes as dark gradientsRules for dark palettes that readHow to make a dark palette from your brand colourUsing a dark palette in CSSDark palettes for social posts

Share this guide

Next in Colour

Pastel color palettes: soft codes for gentle brands

Keep reading

All Colour guides
Gradients

Dark gradient backgrounds: depth without the gloom

5 min read

Dark gradients can look like a premium night scene or like a muddy screen with the brightness turned down. The difference is a handful of decisions, all of them easy to copy.

Backgrounds

Dark mode design: backgrounds, colour and contrast

5 min read

Dark mode is not light mode inverted. Surfaces, text, accents and gradients all need their own values, and the rules are different from the ones you know.

Gradients

Moody gradients: dark, rich codes with atmosphere

6 min read

Dark is easy. Atmosphere is harder: it comes from where the light falls, how much colour you hold back and what the shadows are made of. Twelve codes, and the reasoning behind them.

Find the look that’s only yours.

Every Mark is a living background with one owner. Try an unclaimed Mark, and claim yours when it feels right.

Start designing

Check a certificate

Type a certificate number or a Mark’s code to see who owns it.

Works with ChatGPT and Claude

Ask your AI for a design. It makes it in your Mark, ready to edit.

ChatGPTClaude
How to connect

Product

  • Market
  • Explore
  • Pricing
  • Certificates

Learn

  • Field Guide
  • Help centre
  • What’s new

Developers

  • Overview
  • ChatGPT and Claude
  • API reference
  • API keys

Company

  • About
  • Contact us
  • Sign in

Legal

  • Terms
  • Privacy
  • Refunds
  • Mark protection
  • Cookies
  • All policies
Move through the letters. Each one wears a real Mark.Touch a letter to see its Mark.One name. Ten Marks inside it.
© 2026 Gradiently