This easy homemade cream cheese recipe uses just three ingredients — whole milk, citric acid, and salt — to create a rich, creamy spread that's the perfect companion to any of my popular homemade bagel recipes. You can also use this to make my easy homemade scallion cream cheese!


In just about an hour, you'll be enjoying fresh, delicious cream cheese and marveling at how easy it was to make. And while my cream cheese recipe is written to use a food processor, you can also use a hand mixer, blender, or immersion blender instead!
Honestly, homemade cream cheese is one of the easiest cheeses to make at home. The process is very similar to my homemade goat cheese recipe in that it uses citric acid to force the cheese curds and whey to separate. But making cream cheese is a lot faster, and it uses whole cow's milk, which is much easier to find at the grocery store.
While there are many different cream cheese recipes out there, I wanted mine to use as few ingredients as possible. During recipe development, I experimented with using a mix of heavy cream and whole milk, but those batches just never firmed up to the right texture. I also didn't want to mess around with special cheese cultures or rennet that I'd have to order online, either.
So the final version of my cream cheese recipe uses just three ingredients: Whole milk, citric acid, and salt. (Okay, four ingredients if you count water.)

Citric acid is the key ingredient I use to encourage the milk to separate into curds and whey. I can usually find it with the canning supplies, though it can also often be found near the instant pudding/jello mixes, spice aisle, or baking aisle in most grocery stores. You can also order citric acid online.
Yes, some people use lemon juice or vinegar to make cheese instead of citric acid, but when I tried using them, I found they left an unpleasant flavor in the cheese, so I stuck with the citric acid instead.
(Technically, without a special cheese culture or rennet, this isn't a "true" cream cheese, but it does taste the same and have the same consistency, so it will do just fine for our purposes. Without the rennet, I think it's technically a mascarpone cheese, but mascarpone tends to have a higher fat content and richer, creamier texture, so, yeah. Cream cheese it is. Just know if any cheese expert argues with you that it's not really a cream cheese, chances are they're right and this isn't a hill you want to die on.)
Make Sure You Have a Good Thermometer
A clip-on candy thermometer works well for making cream cheese, but I usually end up also using a more reliable Thermapen instant-read thermometer to double-check, just in case the candy thermometer is moving a bit slow.
I use a 3-6 quart pot made from a non-reactive metal (basically not copper or aluminum) that holds at least a ½ gallon of milk and is deep enough for my candy thermometer to work.
For straining the curds, I use a thin, linen dish towel (like these chef-favorite kitchen towels). Do not use a terrycloth or textured towel. Cheesecloth can work here too, but I find it's a bit too fiddly and flimsy even when I layer it. You do you!
The colander I use just needs to be big enough to hold a half-gallon of milk and comfortably sit inside my bucket or bowl without touching the bottom. A large wire mesh strainer will also work.
And to "cream" the cheese, I use my favorite 5-cup mini food processor. This step is crucial for blending the soft curds into a creamy, spreadable cream cheese.
Are you ready to learn how to turn whole milk into cream cheese?

Heat the milk.

Dissolve the citric acid in water.
Keep stirring until the milk reaches 185°F, about 30-ish degrees below boiling temperature. At this temperature, the milk is considered "scalded". The proteins are denatured and the whey is weakened, making it easier for the curds and whey to separate.

Straining Cream Cheese
While the pot is resting off the heat, I set up my cheese-straining station. I put the colander inside the bucket and line the colander with the towel. I like to tuck the ends of the towel through the handles of the colander and secure them with binder clips or chip bag clips to hold the towel in place.

Slowly pour the milk into the towel inside the colander. I say slowly because I find I often need to pause and adjust the towel or colander as I pour.


Then, I pull the towel through the handles and either knot the edges or use the clips to hold it in place as best I can. Basically, my goal is to pull the top of the towel tight to create a hammock inside the colander.

To speed things along, I gather the towel into a bag suspended in the colander.

I also gently twist the towel above the ball of cheese to express a little more whey.
This is just the method I've found that works best for me. There are lots of ways to do this. You can clip the twisted end of the towel to one side of the colander and tilt the colander over the bowl so the bag can hang. Or you can clip the ends of the towel around the handle a spoon and let it hang to continue straining. Or, you can figure out a new and different way to do it that works with what you have in your kitchen (let me know in the comments)!
When enough whey has been strained, I open the dish towel and scrape the cheese down into the middle.

The final step is to take this rough, grainy looking cheese and make it into smooth, creamy cream cheese.
I find this is easiest in a mini food processor. I add the salt at this point and run the food processor until it smooths out. It always takes longer than I think — about 3 minutes total of processing.


Don't expect your cream cheese to have that perfect firm-yet-spreadable texture just yet. It will likely be a bit looser — kind of like microwaved cream cheese.
You can use it right away, for sure. But once it has time to chill in the fridge for about an hour or two, it will firm up and have that cream cheese texture you're used to!


Practical Tips and Recipe Notes
- You can add any flavors you like to the cream cheese once you've processed it a bit in the food processor. You want to make sure the curds are the right nice smooth texture before you add anything else to the mix. After that, you can add carrots, veg, herbs, sun-dried tomatoes, scallions, onions, bacon, maple syrup, etc. Remember: Wet or oily ingredients will change the cream cheese texture, so blot them dry before adding!
- Save the whey when you strain the cheese curds! You can use whey instead of water (as a 1 to 1 replacement, no conversions needed) in any bread recipes. It adds a bit of a sour tang and makes the bread flavor pop. It's hard to describe just what it does as a flavor, but it's like bread flavor, only... breadier. Bread squared, if you will. It also helps produce a slightly softer and more tender loaf of bread.
📖 Recipe

How to Make Homemade Cream Cheese with Citric Acid
Recipe Notes
- Kept refrigerated, homemade cream cheese will stay good for up to 1 week. Press plastic wrap against the surface of the cheese to keep it fresh.
- Store homemade cream cheese in an airtight container in the fridge for up to 1 week. Press a sheet of plastic wrap against the surface of the cheese inside the container to prevent air from drying it out.
- While some people will tell you that you can, I don't usually freeze cream cheese. Personally, I find it changes the texture just enough that I find it unpleasant to eat without running it through a food processor again, which I don't usually want to do. If you do want to freeze your homemade cream cheese, press a sheet of plastic wrap firmly against the surface in an airtight container. It will stay good in the freezer for about 3 months. Defrost in the refrigerator overnight, run through a food processor or re-whip with a mixer before serving. Once defrosted it will be good for about a week in the fridge.
- As always, mold is a sure sign that your cream cheese has gone bad. If it's moldy, don't eat it!
- If adding any flavors to your cream cheese, make sure they are clean and dry first. Add them after blending the cream cheese to a smooth consistency.
- You can absolutely use a cheesecloth instead of a kitchen towel if you want. You'll want to layer it over itself 5 or 6 times so that it is fine enough to actually catch the curds instead of letting them drain through. Cheesecloth is very delicate, so be careful as you twist or clip it in place that it doesn't tear.
Ingredients
- ½ gallon whole milk (1.9 liters)
- 60 grams water
- 2 teaspoons citric acid
- 1 teaspoon diamond crystal kosher salt (use half as much of any other type of salt)
Instructions
- First, let the milk sit out for 30-60 minutes before starting. The warmer the milk is at the start, the faster it will reach the right temperature. While the milk is sitting out, combine the citric acid and water in a small bowl and stir to dissolve.
- Pour the whole milk into non-reactive pot, with a candy thermometer attached, over medium to medium-high heat. Continue stirring every few minutes until the milk reaches 185°F and lots of small bubbles form around the edge of the pot. Be patient.
- When the milk mixture reaches 185°F, stir in the citric acid and water mixture. The curds and whey will separate almost immediately. Remove the pot from the heat and let it stand for 5 minutes.
- Meanwhile, set up your straining system. Line a large colander with a clean flour-sack dish cloth, and tuck the edges of the cloth through the handles of the colander or clip them in place. Put the colander over a large bowl or bucket to collect the whey — you'll need it later.
- Slowly pour the milk into the towel-lined colander. If you have a smaller colander or smaller towel, you may need to pour in batches.
- Gather the towel tight through each handle of the colander to create as much of a taught, bag-like shape as you can, with the towel suspended inside the colander. Use clips or knot the towel to hold it in place. Let the cheese strain for 25-30 minutes, gently scraping down the sides of the towel and stirring the curds in the towel about halfway through.
- Transfer the strained cheese curds to a food processor along with the salt. Process on high speed in 20-30 second bursts for about 3 minutes total, pausing to scrape down the sides between each burst. If the cheese is looking gritty, add some of the reserved whey a ¼ teaspoon at a time to help the cream cheese smooth out.
- Scoop the cream cheese into an air tight container. Refrigerate for at least 1 hour or until firm before use.


Milo says
This recipe resulted in cream cheese with an impressively smooth texture. However, I found the flavor to be quite tart and saltier than I prefer. The taste of citric acid is prominent in the final product, and reminds me somewhat of Tajin, but with a milky quality and without the chili taste.
I'm hesitant to retry this because reducing the citric acid might affect the curdling process, which is essential for this recipe.
Those who enjoy tangier, more pronounced flavors in their cream cheese might appreciate it more than I did.
Rebecca Eisenberg says
Thank you for the feedback! It's interesting to me that you found it much tangier than store bought cream cheese, as I found it was a more mild flavor than store bought. You can absolutely reduce the salt to better suit your taste, however!
Hedgehodge says
When you say reduce the salt I want to think you mean the citric acid ? If it's to tang reduce citric acid or salt? If reduce citric acid by half what would be the equivalent for lemon/vinegar? I did 3 tbsp for 4 cups of milk so I'd imagine 3 tbsp of im making 8cups (half gallon)? Thanks for this. My kids didn't like that it was so plain so I looked this up. I added honey and cinnamon and it made the bland one better, no tang though... Hoping this gets that tang!
Rebecca Eisenberg says
Where are you referring to me suggesting you reduce the salt? The salt in this recipe is there mostly for flavor — you can reduce or increase it depending on what salt you use to enhance the flavor. The citric acid does provide some tang, but it's mostly there to force the curds and whey to separate in the milk, so that's not a ratio you want to mess with too much as it will affect how quickly and how well the milk separates to form cheese curds.
Teri D. says
I had some leftover milk and I gave it a try. When I tasted it warm, it was tangier than regular store bought cream cheese, but after sitting in the refrigerator overnight, it mellowed considerably. I took your advice and cut the salt in half, because I didn’t use the same brand of kosher salt, it was definitely not too salty. I’m curious if you can bake with this the same way you bake with store bought cream cheese. It was delightful on my English muffin. I priced it out and it’s less expensive to make this than to buy cream cheese. I’ll make this again!
Rainy says
I really like this recipe. I had tried a different recipe and it was flat. No tang. Just smooth cheese. However, this one tastes almost like real cream cheese! It's slightly different, but very enjoyable. I'll definitely be making this often.
Holly says
Since I only need a small amount for a soup can I successfully make just a half recipe? Also, will it melt properly in a broccoli cheddar soup? Thanks👍
Rebecca Eisenberg says
A small amount should work but if you only need a very small amount I would just recommend buying it…
Amanda says
Can lemon juice or vinegar be used in place of the citric acid? I’d like to use what I always have on hand. Just curious.
Rebecca Eisenberg says
I'm sure it can be, I just don't know the quantities! You'll have to do some Googling to see what the right ratio is for that.
Tomás Cárdenas says
If you use lemon juice or vinegar, you'll have to rinse the cheese on the cloth to remove some of the flavor. Otherwise, you'll end up with creme cheese that tastes like lemon cheesecake or cheese with a vinager taste.
Mary Lee says
What does the salt do? Just set there and look on while you do the work?
Rebecca Eisenberg says
If you're following the recipe I wrote, you add it to the food processor in step 7. It adds flavor.