As algorithms play a large role in our decision making, the possibility of algorithmic bias has led researchers to explore the realm of fair algorithms. In this thesis, we explore the design of a fair algorithm for clustering a problem in unsupervised machine learning algorithm. Our algorithm aims to balance the representation of an arbitrary number of protected groups in each cluster. We extend prior work by allowing the points to belong to multiple protected groups and for users to compromise between stricter fairness and the clustering objective. We provide experimental validation of our work on the k-median, k-means and k-center objectives