back to top

How to Create Beautiful Milk Bath Photography

A- A+

Subscribe Below to Download the Article Immediately

You can also select your interests for free access to our premium training:

Your privacy is safe. I will never share your information.
Related course: Wow Factor Photography

Milk bath photography is a sub-genre of portrait photography. It focuses on natural, minimalist images. Thanks to all the white negative space, you can focus on your model’s face and body.

Let’s see how you too, can create beautiful milk bath photography.

Portrait of a woman in a milk bath
Photo by Kristina Nor from Pexels

[Note: ExpertPhotography is supported by readers. Product links on ExpertPhotography are referral links. If you use one of these and buy something, we make a little bit of money. Need more info? See how it all works here.]

What Is the Purpose of Milk Bath Photography?

The concept of milk bath photography seems very specific. But all kinds of photographers find it useful.

Milk bath photography is perfect for those who like dreamy, atmospheric portraits. With the right props, you can turn your milk bath photos into gorgeous conceptual pictures.

White is associated with softness and purity. This is why milk bath for baby or maternity photography is so popular.

You can use a milk bath to emphasise the size of a baby bump. Or simply to make your model feel beautiful in her skin.

If you feel bold enough, you can get into the bathtub yourself for milk bath self-portraits!

A close up Milk bath photography shot of citrus fruits and leaves in milk
Milk bath photography wasn’t just made for portrait photographers. You can use it as a canvas for still life, flowers, or food photography.

What Do I Need for a Milk Bath Photography Shoot?

You don’t need expensive products to make milk bath photos. All you need is a bath tub, warm water, and some milk.

Your next question may be ‘What kind of milk do you use for a milk bath?’ Whole milk is best. You can also use milk powder instead of milk. Make sure the water is warm enough to dissolve everything. If it’s not, you’ll have to deal with unflattering chunks of powder in your milk bath.

Fill your bath tub with warm water and start adding milk to it. The amount of milk you add depends on the look you’re going for. Don’t just pour gallons of whole milk into your bath tub.

If you add less milk, your mixture will be translucent. This means that most of your model’s body will be visible underwater. If you add more milk, you’ll end up with an opaque mixture. This will cover anything that’s below the milk’s surface.

To avoid ruining the effect, don’t use all the milk immediately. Use small amounts and experiment with various levels of translucency.

A row of different sized milk bottles
Experienced milk bath photographers use around 3-6 litres of milk per photo shoot.

Important Milk Bath Photography Tricks and Safety Tips

The uniqueness of milk bath photography comes with a set of equally unique challenges and risks. Keep these tips in mind before you start planning your milk bath photo shoot:

  • You need to have an idea of how long your milk bath photography shoot will be. If you are shooting for over half an hour, make sure you have access to warm water. That way you can keep your subject comfortable. This is especially important when it comes to children or baby photography.
  • Ask your model to bring a dry, clean outfit to wear after the photo shoot is over. This might sound very obvious. But it’s something you or your client could easily forget while preparing for your session.
  • Bring a towel and a mat to keep your model’s face dry and to make sure she can get out of the bath tub safely. Make sure that the floor isn’t slippery.
  • If you’re going to be working with props like real flowers, avoid using ones with dirt, pollen, or thorns. This way, you’ll avoid ruining the milk bath or hurting your model.
  • Make sure your model isn’t allergic to the kinds of flowers you’ll be using. To avoid discomfort, I recommend using fake flowers over real flowers.
  • Add your props to the bath tub after your model has settled down in it. This will help everything stay afloat.

    Close up Milk bath photography shot of a female model holding flowers
    Keep safety in mind as you look for flowers to include in your milk bath photos. A rose with thorns might harm your client and make them feel uncomfortable during the shoot. Fake flowers work best here.

Lighting Tricks for Impressive Milk Bath Photography

For the best lighting effect, place your bath tub next to a large window. Natural light will create soft shadows. These will allow you to experiment with different angles.

Of course, not every bath tub can be picked up and placed anywhere. This is why some photographers shoot in hotel rooms or use inflatable pools instead.

Avoid standing above your model during your shoot. This will create unflattering reflections in the milk bath tub and unwanted distractions.

If your location is too dark, use a reflector to remove harsh shadows and add a spark to your model’s eyes. Using artificial light will make it harder for you to take well-lit portraits. If you have no other choice, though, change your colour temperature. Make sure it softens any over-saturation created by the lights.

A close up Milk bath photography portrait of a female model submerged in milk

Styling Ideas for Milk Bath Maternity Shoots

You need to be aware of complementary colours when it comes to milk bath maternity photos. Keep things neutral. Pastel colours like lavender and baby pink won’t clash with the whiteness of the milk.

To emphasise the size of her bump, your model needs to wear something see-through. Lace dresses or any sheer fabric, for instance, will add an air of elegance and gentleness to your photos. If your model wants to wear something more modest, a simple white dress will also work.

The milk bath will put the spotlight on your model’s body. It’s important that she wears the right accessories and poses as naturally as possible. Simple jewellery, trimmed nails, and natural hand placements will all complement the size of her baby bump.

A close up Milk bath photography shot of a pregnant female model wearing white lace and holding her baby bump, surrounded by flowers
Make sure that the flowers you choose don’t clash with your model’s outfit.

How to Edit Out Distractions From Milk Bath Photos

Distractions are inevitable when you’re working in a small space. Your photos might end up including the edges of a bath tub, a stray hair, or other unwanted details. You can edit these things out using several methods:

  • Cropping – if your distractions are near the edge of your photograph, you can simply crop them out. Keep in mind that cropping a lot will reduce your image quality.
  • Cloning – the clone stamp tool is perfect for removing objects of all shapes and sizes.
  • Content-aware – select the area you’d like to fix, right-click, and click on Fill. You’ll find Content-Aware next to Contents. I’ve found that this tool is perfect for fixing minimalist photos like the one above. If your selection is too large or is filled with too many colours, you won’t get the results you want.

    A milk bath photography diptych showing before and after editing a photo of a female model
    In this case, the best tool for removing the hand from the top left of the photo was Content Aware. Cloning took a lot of time and cropping felt like an unnecessary step to take.

6 Exciting Milk Bath Photography Challenges

Include Things That Complement the Whiteness of the Milk

You don’t have to focus exclusively on flowers and outfits during your shoot. If you want something more fantasy-themed, use glitter or a crown.

You can also experiment with different makeup looks and hairstyles. Make sure that every decision you make complements the whiteness of the milk bath.

If you’re out of ideas, find inspiration in your model’s features. For example, the model in the picture has blue eyes. Her t-shirt and the glitter make her eyes stand out without clashing with the milk bath. Simple details like this can take you very far.

A beautiful milk bath photography portrait of a female model with glitter on her face

Use the Negative Space to Focus on Glamour Photography

Milk baths are perfect for emphasising all kinds of things. But that doesn’t mean you have to use them conventionally.

If you’d like to take professional, studio-like glamour photos, you can easily do so with the help of a milk bath. All the negative space allows you to put the spotlight on your model’s makeup, hair, expressions, and so on.

This will also give you a perfect chance to experiment with different kinds of lighting techniques. All without having to worry about background distractions.

Beautiful milk bath photography of a female model surrounded by white flowers

Use Different Outfits for Milk Bath Photography

If you’re an aspiring fashion photographer, why not use all that simplicity to focus on a set of outfits that you like?

Instead of using only one outfit during your shoot, change into different ones and create an inspiring lookbook!

Beautiful milk bath photography close up of a female model holding flowers

Don’t Take Photos of Your Model’s Face

There’s so much more you can do with a milk bath than use it to photograph faces and expressions. Challenge yourself by photographing hairstyles, poses, and details. Avoid including your model’s face in your frame.

This milk bath photography challenge will inspire you to get out of your comfort zone. And it’ll teach you to find more opportunities in portrait photography.

Beautiful milk bath photography of a female model surrounded by flowers

Don’t Forget the Details

It might be tempting to make the most of all that negative space in milk bath photography. But don’t forget to focus on the details.

Photograph your model’s face, any props that she might be holding, and her clothes.

Beautiful milk bath photography close up of a female model holding flowers
If you want to capture as many details as possible, use a narrow aperture such as f/5.6.

Try out Floral Photography

Floral photography is a vibrant genre that you can experiment with at the end of your milk bath shoot. You can take photos of your location and the flowers you used in the milk bath. Or any other props that you find appealing.

You can use these results in double exposures, diptychs, or behind-the-scenes posts. If you’re a client photographer, you can use snapshots like this to show potential clients how creative you are.

A milk bath strewn with flowers and petals
A photo like this would be the perfect addition to a behind-the-scenes post on your website.

Conclusion

Despite its simplicity, milk bath photography gives photographers a chance to take their portraits to the next level. They can experiment with negative space and emphasise their models’ beauty.

What I like the most is that milk math photography is open to all kinds of artists. Whether you shoot maternity, family, glamour, conceptual or baby photography, you’ll find something inspiring in this unique genre.

Check out our articles on shooting lifestyle portraits or dark and moody portrait photos next!

Show Comments (0)
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]