Browse Foundations

Foundations

Primitive colour

The raw colour values that form the base of the SGDS palette. Every semantic colour token resolves to one of these primitive shades.

How primitive colour tokens work

A primitive colour token is the foundation layer of the SGDS colour system. It pairs a raw hex value with a name that identifies the shade. Every other colour token in the system resolves down to a primitive.

Raw hex valuePrimitive colour#E98B8Bsgds-red-400#129A4Dsgds-green-500#0269D0sgds-blue-600

Each primitive colour has two parts: the base (colour) and the modifier (scale). The token sgds-blue-600 sits at step 600 on the blue ramp, and every other primitive follows the same pattern.

Base (Colour)sgds-blue-600Modifier (Scale)

Beyond naming, each primitive is a stable reference for a single hex value. Across the seven colour families, the SGDS palette covers every shade the system needs, from the lightest tints to the deepest darks.

When to use primitives

Using primitives directly in product code or design files is not recommended. It leads to inconsistencies when themes or brand palettes change. Always reach for semantic colour tokens first.

Only use primitives when you need to:

  • Generate a custom brand palette through our colour generator.
  • Explore colour ideas in Figma when prototyping or experimenting.
  • Define new semantic tokens when extending the design system.

Primitive colour tokens

Understanding our colour scale

  • 100 is lightest, 900 is darkest. Grey adds 000 and 1100 for dark-mode surfaces.
  • Shade 600 is the brand input each family scales around.
  • Grey uses gray in token names for Tailwind compatibility.

Grey

TokenHexRGBA Contrast Previewsgds-gray-000#FFFFFFrgba(255, 255, 255, 1)
sgds-gray-50#F7F7F7rgba(247, 247, 247, 1)
sgds-gray-100#F3F3F3rgba(243, 243, 243, 1)
sgds-gray-200#DFDFDFrgba(223, 223, 223, 1)
sgds-gray-300#C6C6C6rgba(198, 198, 198, 1)
sgds-gray-400#A5A5A5rgba(165, 165, 165, 1)
sgds-gray-500#868686rgba(134, 134, 134, 1)
sgds-gray-600#6B6B6Brgba(107, 107, 107, 1)
sgds-gray-700#525252rgba(82, 82, 82, 1)
sgds-gray-800#3B3B3Brgba(59, 59, 59, 1)
sgds-gray-900#2A2A2Argba(42, 42, 42, 1)
sgds-gray-1000#1A1A1Argba(26, 26, 26, 1)
sgds-gray-1100#0E0E0Ergba(14, 14, 14, 1)

Red

TokenHexRGBA Contrast Previewsgds-red-100#FCF1F1rgba(252, 241, 241, 1)
sgds-red-200#F8D7D7rgba(248, 215, 215, 1)
sgds-red-300#F1B2B2rgba(241, 178, 178, 1)
sgds-red-400#E98B8Brgba(233, 139, 139, 1)
sgds-red-500#E05959rgba(224, 89, 89, 1)
sgds-red-600#CF2323rgba(207, 35, 35, 1)
sgds-red-700#A11B1Brgba(161, 27, 27, 1)
sgds-red-800#791414rgba(121, 20, 20, 1)
sgds-red-900#550E0Ergba(85, 14, 14, 1)

Yellow

TokenHexRGBA Contrast Previewsgds-yellow-100#FEF4CBrgba(254, 244, 203, 1)
sgds-yellow-200#FCDE63rgba(252, 222, 99, 1)
sgds-yellow-300#E5BF29rgba(229, 191, 41, 1)
sgds-yellow-400#C2A223rgba(194, 162, 35, 1)
sgds-yellow-500#9D841Crgba(157, 132, 28, 1)
sgds-yellow-600#7E6917rgba(126, 105, 23, 1)
sgds-yellow-700#605111rgba(96, 81, 17, 1)
sgds-yellow-800#483C0Drgba(72, 60, 13, 1)
sgds-yellow-900#322909rgba(50, 41, 9, 1)

Green

TokenHexRGBA Contrast Previewsgds-green-100#E3F9EDrgba(227, 249, 237, 1)
sgds-green-200#B1EDCBrgba(177, 237, 203, 1)
sgds-green-300#62DB96rgba(98, 219, 150, 1)
sgds-green-400#16BD5Ergba(22, 189, 94, 1)
sgds-green-500#129A4Drgba(18, 154, 77, 1)
sgds-green-600#0E7C3Drgba(14, 124, 61, 1)
sgds-green-700#0B5E2Frgba(11, 94, 47, 1)
sgds-green-800#084523rgba(8, 69, 35, 1)
sgds-green-900#063119rgba(6, 49, 25, 1)

Cyan

TokenHexRGBA Contrast Previewsgds-cyan-100#E0F7FCrgba(224, 247, 252, 1)
sgds-cyan-200#A8E9F7rgba(168, 233, 247, 1)
sgds-cyan-300#49D2EFrgba(73, 210, 239, 1)
sgds-cyan-400#00B4DArgba(0, 180, 218, 1)
sgds-cyan-500#0092B1rgba(0, 146, 177, 1)
sgds-cyan-600#00758Drgba(0, 117, 141, 1)
sgds-cyan-700#005A6Drgba(0, 90, 109, 1)
sgds-cyan-800#004352rgba(0, 67, 82, 1)
sgds-cyan-900#002F38rgba(0, 47, 56, 1)

Blue

TokenHexRGBA Contrast Previewsgds-blue-100#ECF5FErgba(236, 245, 254, 1)
sgds-blue-200#C8E2FBrgba(200, 226, 251, 1)
sgds-blue-300#96C7F7rgba(150, 199, 247, 1)
sgds-blue-400#60AAF4rgba(96, 170, 244, 1)
sgds-blue-500#1E87EFrgba(30, 135, 239, 1)
sgds-blue-600#0269D0rgba(2, 105, 208, 1)
sgds-blue-700#0151A0rgba(1, 81, 160, 1)
sgds-blue-800#013C77rgba(1, 60, 119, 1)
sgds-blue-900#012A54rgba(1, 42, 84, 1)

Purple

TokenHexRGBA Contrast Previewsgds-purple-100#FBF0FErgba(251, 240, 254, 1)
sgds-purple-200#F2D6FCrgba(242, 214, 252, 1)
sgds-purple-300#E6ADF9rgba(230, 173, 249, 1)
sgds-purple-400#D983F6rgba(217, 131, 246, 1)
sgds-purple-500#C94CF2rgba(201, 76, 242, 1)
sgds-purple-600#AC1CDBrgba(172, 28, 219, 1)
sgds-purple-700#8516A9rgba(133, 22, 169, 1)
sgds-purple-800#641180rgba(100, 17, 128, 1)
sgds-purple-900#460C5Argba(70, 12, 90, 1)

Colour contrast ratios

Colour contrast ratios measure whether text is readable against a background.

WCAG (Web Content Accessibility Guidelines) is the international accessibility standard most government services follow. It scores contrast as a single ratio between 1 (no contrast) and 21 (black on white). Body text needs at least 4.5 to meet the AA conformance level. Large text needs at least 3, since bigger letters are easier to read.

APCA (Accessible Perceptual Contrast Algorithm) is a newer model that's more accurate for real reading. As a rough guide, body text needs an absolute value around 60 or higher.

Got it

Singapore Government Design System

The Singapore Government Design System was developed to empower teams in creating fast, accessible and mobile-friendly digital services.

Past VersionsSGDS v1SGDS v2