Instagram Brand Manual

Components

Stories Progress

A flex row of pill segments that fill left-to-right via transform: scaleX, driven by an animation-duration set per-instance to match that story's display time exactly. Arguably the single most recognizable Instagram-specific component in this manual.

Live

Watch it run, segment by segment

Implementation

The only major animation that's deliberately linear

.segment-fill {
  transform-origin: left;
  transform: scaleX(0);
  animation: fillProgressBar linear forwards;
  animation-duration: inherit; /* set per-instance to match story display time */
}
@keyframes fillProgressBar {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

Every other major animation in this system uses one of the five named easing curves (see Motion). This is the exception — because it’s communicating elapsed real time, not expressing personality, it’s explicitly linear.

Usage

Do / Don't

Do

  • Set animation-duration to match the actual story display time, per segment.
  • Keep the fill animation strictly linear — this is the one place where an eased curve would misrepresent elapsed time.
  • Use a 3px pill radius on both the track and the fill.

Don’t

  • Apply Ease Glide or any of the other named curves to the segment fill.
  • Reuse this exact pattern for a generic loading bar that isn't tied to real elapsed time.