Newborn (NB): up to 8 lbs / 21" length. Many babies skip this size entirely.
0–3M: 8–12 lbs, 21–24". 3–6M: 12–17 lbs, 24–26". 6–9M: 17–20 lbs, 26–28".
9–12M: 20–22 lbs, 28–30". 12–18M: 22–25 lbs, 30–32". 18–24M: 25–28 lbs, 32–34".
Baby brands run very inconsistently. Carter's tends to run small, Old Navy runs large, Gap is true to label.
Always size up. Babies grow weekly. A 6M outfit bought at 4M will rarely get worn.