Brew or prepare your coffee base. If using instant espresso powder, dissolve 2–3 tablespoons in 1/3 cup hot water.
If using strong brewed coffee, reduce it on the stove until intense and syrupy, about 1/3 cup. Set aside to cool slightly.
Warm the dairy. In a medium saucepan, combine 1 1/2 cups heavy cream and 1 1/2 cups whole milk. Add a pinch of salt and 1/2 to 3/4 cup sugar (depending on how sweet you like it).
Heat over medium until steaming and the sugar dissolves. Do not boil.
Whisk the yolks. In a separate bowl, whisk 5 large egg yolks until smooth and slightly thickened. This helps prevent scrambling when you add hot milk.
Temper the eggs. Slowly pour about 1/2 cup of the hot milk mixture into the yolks while whisking constantly.
Add another 1/2 cup, still whisking. This gradual step brings the yolks up to temperature safely.
Cook the custard. Pour the tempered yolks back into the saucepan with the rest of the milk mixture. Cook over low to medium-low heat, stirring constantly with a spatula, until the custard thickens and coats the back of the spatula, about 5–7 minutes.
Do not let it boil.
Add the coffee and vanilla. Remove from heat. Stir in the coffee concentrate and 1 teaspoon vanilla extract. Taste and adjust sweetness or coffee intensity if needed.
A small splash of coffee liqueur is optional for extra depth.
Strain and chill. For the smoothest texture, pour the custard through a fine-mesh sieve into a clean bowl. Press plastic wrap directly onto the surface to prevent a skin. Chill in the fridge until completely cold, at least 4 hours or overnight.
Churn the ice cream. Once cold, churn the mixture in an ice cream maker according to the manufacturer’s instructions, usually 20–25 minutes.
It should look like soft serve when done.
Fold in add-ins (optional). Stir in chocolate chunks, cocoa nibs, or a caramel ripple. Keep the pieces small so they stay pleasant to bite into when frozen.
Freeze to firm up. Transfer to a lidded container. Press parchment or plastic wrap on the surface to prevent ice crystals.
Freeze for 4–6 hours, or until scoopable but firm.
Serve. Let the container sit at room temperature for 5 minutes before scooping. Top with shaved chocolate, a drizzle of espresso, or a pinch of flaky salt.