Set in Miami, Moonlight follows the story of a young boy named Chiron through three phases of his life. As a kid, he is nicknamed Little (Alex Hibbert) and lives with his drug-addicted mother (Naomie Harris). He is seen running away from school bullies and meets drug dealer Juan (Mahershala Ali), who mentors him and invites him into the home that he shares with his girlfriend Theresa (Janelle Monae).
As a teenager, Chiron (Ashton Sanders) continues to be bullied at school. He questions his sexuality as he spends time with Kevin (Jharrel Jerome). Ten years later, Chiron, now referred to as Black (Trevante Rhodes), is a changed man on the outside. He looks tough but is still the same emotional kid. Old feelings come back when he reunites with Kevin (Andre Holland).