Each step is in one of three states — done, current, upcoming — usually shown with a checkmark, an accent color, and a muted color respectively. Mark the current step with aria-current="step" so a screen reader can announce "you are here."
It differs from a progress bar in being discrete — a progress bar represents any continuous value from 0–100%, while a stepper only moves between a handful of named, fixed stages: "Shipping → Payment → Done." It differs from breadcrumbs in direction — breadcrumbs show a hierarchy you've already navigated and let you jump back up at any time, while a stepper usually represents a process that only moves forward through a fixed order.
Whether a completed step can be clicked to go back depends on the process — after payment completes, you usually can't return to an earlier step.