Instagram Brand Manual

Foundations

Colour

One fully-saturated gradient, sliced into every brand moment, sitting on top of a near-monochrome semantic system built for both light and dark.

The brand gradient

A five-stop ramp, cropped a dozen ways

Every gradient on the about-page is a slice of the same underlying spectrum — never an independently-designed one-off.

Full spectrum — 125deg

125deg · the uncropped 5-stop ramp

Yellow#FFD600
Orange#FF7A00
Rose#FF0169
Magenta#D300C5
Purple#7638FA

Hero crop — the about-page default

72.44deg · rose → purple

Rose#FF0169
Magenta#D300C5
Purple#7638FA

Hover text fill

Nav link underline

Captured theme tokens

As declared in /ig

Names and values exactly as declared in the light (._aa4c) and dark (._aa4d) theme scopes of the captured product bundle.

Primary background

--ig-primary-background
255, 255, 25512, 16, 20

Secondary background

--ig-secondary-background
243, 245, 24737, 41, 46

Elevated background

--ig-elevated-background
255, 255, 25533, 35, 40

Secondary elevated background

--ig-secondary-elevated-background
243, 245, 24743, 48, 54

Highlight background

--ig-highlight-background
239, 239, 23938, 38, 38

Primary text

--ig-primary-text
0, 0, 0245, 245, 245

Secondary text

--ig-secondary-text
115, 115, 115168, 168, 168

Tertiary text

--ig-tertiary-text
115, 115, 115199, 199, 199

Separator

--ig-separator
219, 219, 21938, 38, 38

Stroke

--ig-stroke
219, 219, 21985, 85, 85

Fixed semantics

Some colours never theme-swap

Their meaning depends on consistency, not on matching the surrounding surface.

Primary button

--ig-primary-button

#0095F6 — the signature link/button blue

0, 149, 246

Error / destructive

--ig-error
237, 73, 86

Success

--ig-success
88, 195, 34

Live badge

--ig-live-badge
255, 1, 105

Close Friends

--ig-close-friends
28, 209, 79

Subscribers only

--ig-subscribers-only

Matches --gradient-purple exactly

118, 56, 250

Outgoing DM bubble

--ig-outgoing-bubble
74, 93, 249

Overlay & scrim system

Photography never carries text alone

Every text-on-image instance pairs with a directional black-to-transparent scrim, so the image stays partially visible rather than sitting behind a flat box.

Caption text sits here

Depth

Blur at two scales

20px for modal/sheet scrims, 100px for large ambient cover-style backdrops — drag to compare.

blur(20px)
0px20px · modal scrims100px · ambient backdrops

Architecture

Three layers, one direction of authorship

1. Foundation

--fds-* --web-always-*

Shared Meta-wide infrastructure. Not Instagram-specific.

2. Semantic

--ig-*

Instagram's own naming of roles on top of the foundation. Write new code against this layer.

3. Compiled atomic

._a8y9 ._x8exfn3

Auto-generated build output. Never hand-author.

Usage

Do / Don't

Do

  • Apply the brand gradient as a whole-surface treatment — backgrounds, large text-fills.
  • Use rgb(var(--ig-token)) / rgba(var(--ig-token), alpha), never a hard-coded hex, for anything theme-adaptive.
  • Pair text over photography with a directional scrim gradient.

Don’t

  • Use the gradient as a small UI accent (button fill, icon tint) — it's a whole-surface treatment only.
  • Assume every multi-value custom property is comma-separated — some highlight-background tokens use space-separated triplets.
  • Invent a sixth gradient stop or a new angle for a one-off brand moment.