Exhilarating and evocative, this musical love story revolves around Rahul (Shahrukh Khan), a talented and charming young man. He and Nisha (Karisma Kapoor) are members of a massive dance troupe, and best friends, although Nisha is secretly in love with Rahul. Rahul announces his desire to direct a musical named Maya. The members of the troupe, including Nisha, have their doubts about the title character when Rahul cannot describe her to them. Pooja (Madhuri Dixit) also has a passion for dancing. Having been orphaned at a young age, she has been raised by close friends of her parents.
Rahul and Nisha go shopping for clothes one day. When Rahul is trying on some clothes, he starts whistling a tune and Pooja (who is also trying on clothes) pays particular attention to this tune. Rahul soon comes up with a script for the play he wishes to direct and shows it to Nisha who still has her doubts. On Pooja's guardian's birthday, there is a mix up – Pooja's family receives a parcel with sandwiches (which the dance troupe ordered) and the dance troupe receives Pooja's guardian's birthday cake. Rahul goes to Pooja's house to switch the parcels and starts whistling the same tune he whistled in the clothes shop – Pooja again pays attention to this. On Valentine's Day, Rahul and Nisha attend a party with the dance troupe where Rahul expresses his disbelief in love. Nisha is upset by Rahul's heartless attitude. Rahul accidentally calls Pooja's house and when she disconnects the phone, Rahul starts whistling the same tune and she again listens hard to it. On Nisha's birthday, she gets drunk and tells Rahul she loves him – he does not respond as he does not love her in return. Pooja is soon taken to Germany by her guardian's son Ajay (Akshay Kumar) who has been in London for months. When the two return to India, just as Ajay leaves to fly to England, he proposes to Pooja and she accepts.
During rehearsals for the play, Nisha injures her leg and the doctor says she cannot dance for a few months. Rahul needs a new woman to play the lead role in the play. He comes across Pooja dancing one day and believes she is perfect for the role. He begs her to come to their rehearsals and she agrees. Rahul and Pooja become close friends. Nisha soon returns from hospital and is upset that she has been replaced. Knowing that Rahul does not reciprocate her love, she decides to leave for London. Throughout rehearsals for the play, Rahul and Pooja find themselves falling for one another. When Rahul drops Pooja home one day, he starts whistling his tune making Pooja realise that she has fallen for the man she often heard. The next day, the two go to meet Pooja's old dance tutor Tai (Aruna Irani) who believes the two are blatantly in love. At the wedding of two members of the dance troupe, Rahul and Pooja confess their love for each other.
On the day the play is to be run for the first time, Ajay arrives and tells everyone that he is Pooja's fiancé. Rahul is heartbroken but tries not to show it. Nisha, who has returned, notices Rahul's devastation and explains how she too was devastated when he did not love her in return. Rahul edits the end of the play to reflect his heartbreak. On the night of the play, Ajay plays a recorded tape where Pooja described how she felt about Rahul, implying that Ajay thinks Rahul and Pooja are meant to be together. Pooja now realises she truly loves Rahul and the two confess their love on stage as the audience applauds them. Also, backstage, Ajay ends up asking Nisha whether she is already married or not (implying he wishes to start a relationship with her).