Heat the milk
Pour the milk into a large pot. Heat over medium heat, stirring occasionally to prevent scorching, until it reaches 115–120°F (46–49°C). This is hot but not boiling — like very warm bath water (you can test by dipping a clean finger; it should feel hot but tolerable). If no thermometer, heat until small bubbles form around the edges. Do not boil.
Add the vinegar and curdle
Remove the pot from the heat. Slowly pour in the vinegar while stirring gently for 30 seconds. You'll see the milk immediately start to separate into white curds (solid bits) and yellow whey (liquid). Stop stirring.
Cover the pot and let it sit undisturbed for 15–30 minutes. The curds will firm up and fully separate.
Strain the curds
Line a colander with cheesecloth or a clean cloth over a bowl/sink. Gently pour or ladle the mixture in to drain the whey. Let it drain for a few minutes.
(Save the whey if you want — it's great for baking bread, soups, or smoothies!)
Squeeze and heat the curds
Gather the cloth and gently squeeze out more whey (wear gloves — it's hot). Transfer the curds to a microwave-safe bowl.
Microwave in 30–60 second bursts (or heat in a pot over low heat), kneading/stretching gently between each burst with a spoon or gloved hands. It will become smooth and stretchy like taffy. Heat until internal temp is about 160–175°F (71–79°C) or until it stretches easily without breaking (usually 2–4 bursts).
If adding salt, knead it in now.
Shape the mozzarella
Pinch off pieces and roll into balls (classic mozzarella shape). For a big ball, fold and stretch the whole mass a few times, then form one large ball.
Optional: Drop finished balls into a bowl of ice water for 10–15 minutes to firm up and improve texture.