Easy Science Experiment For Little Kids: DIY Rainbow Milk Art

My son never gets tired of this DIY rainbow milk art activity. The basic premise is to add whole milk to a pan (this is important; the fat in the milk is what makes this experiment work), then food coloring, then finally dish soap. As you add the soap, the colors begin to dance and the milk transforms into a swirly tie dyed pattern.

Read on to see how to do this experiment with your kids, and to learn the science behind it.

RELATED: 31 Awesome Ways to Entertain Kids with a Cardboard Box

milk detergent food coloring pie tin


  • whole milk (NOT low fat or skim)
  • pan
  • food coloring kit
  • dish soap
  • 1 adorable child


kid pouring milk into pie tin

Step 1: Have your child help pour some milk into the pan (about two inches full).

squeezing milk into pie tin

Step 2: Squirt a little bit of each color of food coloring into the middle. Notice that the food coloring sits virtually still on the milk.

rainbow food coloring in milk

Step 3: Now comes the fun part. Add one drop of dish soap and watch the colors dance!

food coloring swirled in milk

squirting dish soap into rainbow milk

Step 4: Keep adding a few more drops in areas where colors are congregating. The fat particles in the milk will move away from the soap, taking color with them.

food coloring milk swirl art

My kids are always totally entertained by watching the colors dance in the milk.

So, what’s happening here?

Milk is mostly made up of water, but it also contains fats and proteins. The fats in the milk are super sensitive to any changes in the liquid around it. Soap weakens the chemical bond that hold the protein and fat together. The soap causes the molecules of fat to move every which way, and the food coloring allows you to see this all in action. As the soap eventually gets mixed with the milk, the movement slows down—so if you add more soap, the action will likely start all over again.

More Kids’ Activities:

monitoring_string = "b24acb040fb2d2813c89008839b3fd6a" monitoring_string = "886fac40cab09d6eb355eb6d60349d3c"