A brand colour with role and context
Brand colour is the palette a brand owns and repeats until the eye learns it: a primary that carries the identity, secondaries that support it, and the rules that say when each appears. Colour is the fastest signal a brand has, recognised before a name is read or a logo is parsed, which is exactly why it is so easy to dilute by using too much of it.
Colour as a defensible brand signal is old. Bass Brewery's red triangle became the United Kingdom's first registered trade mark in 1876, and the Intellectual Property Office marked its 150th anniversary in January 2026. The colour was part of what made the mark instantly legible across a crowded shelf.
The widely quoted figure that "colour increases brand recognition by up to 80%" traces to research associated with Loyola University Maryland. The honest reading, documented by insights4print, is that the original work compared colour against monochrome for information processing, and the "up to" matters. The principle holds even where the headline number is loose: a consistent colour shortens recognition.
Accessibility reshaped the modern practice. WCAG sets a 4.5:1 contrast ratio for normal text and 3:1 for large text at level AA, so a brand colour that looks right on a deck can fail in the interface. Mature palettes now ship documented contrast pairs rather than a single hex per swatch.
Wathan and Schoger make the same point from the build side: a handful of hex codes is not a palette you can actually ship an interface with. A single value cannot do every jobJobUserJob To Be Done: what the user is trying to accomplishView reference → a colour is asked to do, because different shades serve different roles — the darkest end tends to carry text, the lightest end tints backgrounds, and a mid-range shade does the work of buttons and links. Their remedy is a deliberate shade scale per hue, for which they treat nine steps (a numbered 100-to-900 ramp) as a sensible default, with greys and accent colours sometimes wanting more or fewer. The brand's chosen colour is then just one stop on that ramp. Read that way, shipping documented contrast pairs is the scale discipline applied to accessibility rather than a separate idea.
A fintech picks a deep teal as its primary. It passes 4.5:1 on white for body text, so it becomes the link and heading colour. Its brand orange fails that bar, so the team restricts orange to large call-to-action buttons (3:1, large-text territory) and never sets body copy in it. Each value is registered once as a design tokenDesign TokenDesign SystemA design token (colour, spacing, typography)View reference →, and every surface reads the token, so a future shift from teal to a darker teal updates the website, the app, and the slide template in one move.
color.brand.primary) that the decision compiles into. The graph keeps them distinct so one intent can feed many tokens.In the Unified Product Graph, Brand ColourBrand IdentityA brand colour definition is a leaf in the Experience, Design and Brand region, held by brand_colourBrand IdentityBrand IdentityThe root brand identity entityView reference → through brand_identityBrand Identitycoloured withBrand Colourhierarchy. Its forward link to the design systemDesign SystemDesign SystemThe root design system entityView reference → runs through brand_identity_coloured_with_brand_colourDesign TokenreflectsBrand Colourcross-domain, which is the structural reason a colour decision can stay consistent across every surface: the token reads the brand colour, the interface reads the token. Break that chain and the palette drifts.design_token_reflects_brand_colour
Type-specific fields on BaseNode
hexstringHex colour value including hash (e.g. "#1A2B3C")
roleenumRole this colour plays in the brand palette
contrast_pairstringHex of the contrast-paired colour for accessibility. Used to verify WCAG AA/AAA contrast ratios.
usage_contextstringWhere this colour should be used (e.g. "hero backgrounds", "CTA buttons", "body text")
color_namestringHuman-readable colour name within the brand palette. @example "Midnight Blue", "Sunrise Orange"
rgbstringRGB value as a comma-separated string. @example "26, 43, 60"
cmykstringCMYK value for print contexts, as a comma-separated string. @example "57, 28, 0, 76"
pantonestringPantone code for physical brand materials (print, packaging, signage). @example "Pantone 289 C"
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
2 edge types connected to this entity.
brand_identity_coloured_with_brand_colourdesign_token_reflects_brand_colour