Na trama, Celie (Fantasia Barrino) uma mulher que desde cedo sofre abusos nas mãos do pai, Alfonso (Deon Cole), e depois é forçada por ele a se casar com o violento viúvo Mister (Colman Domingo). Além de agredir Celie e reduzi-la a uma empregada doméstica, o marido também expulsa Nettie (Halle Bailey) da casa da família, privando Celie do contato com a única irmã. Ao longo dos anos, Celie encontra em outras mulheres da vizinhança o apoio e conforto para suportar os maus tratos do marido.
O filme acerta ao situar os números musicais de Celie como parte de sua imaginação, fazendo esses momentos funcionarem como uma fuga dela de sua realidade dura, ajudando a entender como ela se mantem suportando tudo aquilo. Por outro lado, nem todos os números musicais funcionam tão bem. A cena de Sofia (Danielle Brooks) deixando o marido basicamente só faz musicar o diálogo original e acaba carecendo de um certo senso de espetáculo, diferente dos números que envolvem Celie.