Rinse the rice (optional but helpful): Rinse the rice under cool water until it runs mostly clear. This removes excess surface starch so the pudding thickens smoothly without getting gummy.
Combine base ingredients: In a heavy-bottomed saucepan, add the rice, milk, and half-and-half (or cream). Stir in the salt and, if using, a cinnamon stick.
Bring to a gentle simmer over medium heat, stirring often to prevent sticking.
Lower the heat and cook slowly: Once it reaches a simmer, reduce the heat to low. Cook uncovered, stirring every few minutes, for 25–35 minutes. Keep the mixture at a gentle burble, not a boil.
The rice should soften and the liquid will noticeably thicken.
Add sweetener and flavor: Stir in the sugar, ground cinnamon (if you didn’t use a stick), nutmeg, and vanilla. If using raisins, add them now so they plump as the pudding finishes. Continue cooking 5–10 more minutes, stirring often, until the rice is tender and the mixture is creamy.
Adjust texture: The pudding should be loose and saucy; it will thicken as it cools.
If it’s too thick on the stove, stir in a splash of warm milk. If it’s too thin, keep simmering a few more minutes.
Finish with richness: Off the heat, stir in the butter and any citrus zest. Taste and adjust sugar, salt, or vanilla as needed.
Serve: Spoon into bowls and enjoy warm, or let it cool to room temperature and chill.
Sprinkle with a little extra cinnamon or a drizzle of cream if you like.