Born in Gurdaspur, Punjab, Singh started his football career at the Sant Baba Hazara Singh Football Academy. He then went on to represent his state at the under-13 level, where he impressed in a tournament in Kolkata and got selected to the India under-13 side. After spending years with the India youth sides, Singh joined the All India Football Federation development side, AIFF XI for the 2010–11 I-League season. He scored his first professional goal directly from a corner kick on 30 December 2010 against HAL. His 53rd-minute strike was the second in a 2–1 victory for the league's developmental side. He then scored his second goal of his career on 13 January 2012 against Sporting Goa. He gave the then Pailan Arrows a 2–1 lead but the side could not hold on as they lost the match 3–2.
After the 2011–12 season, Singh signed with Churchill Brothers. His first season with the club was a successful one for both the team and him. Singh helped the Goan side win their second I-League title while he played 18 matches and scored a goal. He also scored a long-range goal for Churchill Brothers against Air India on 24 September 2012 in the Federation Cup. Singh also scored an outside the box goal in the league against Prayag United on 28 November 2012. His 79nd-minute goal made it 2–0 to the Goan side who eventually came out 2–1 winners. During the 2012–13 season, Singh also became a goalscoring threat for Churchill Brothers in the AFC Cup. He scored 57th-minute goal for the club against Indonesian side Semen Padang as the match ended in a 2–2. He scored again in the competition on 2 April 2013 against Singaporean club Warriors in the 44th minute as Churchill Brothers won 3–0.
During the 2013–14 season, Singh only played twice for Churchill Brothers before requesting a move to I-League rivals Mohun Bagan. According to Singh, Mohun Bagan being coached by Karim Bencherifa was a big reason in him joining the Kolkata club. He made his debut for the club on 16 February 2014 against Salgaocar. He came on as a 77th-minute substitute for Chinadorai Sabeeth as Mohun Bagan lost 1–0. After the season ended, Singh joined Mohun Bagan permanently before the 2014–15 season. He would go on to win his second I-League championship this season while playing 18 matches with Mohun Bagan. In June 2015, a month after winning the championship, Singh signed a one-year extension with Mohun Bagan due to their participation in the AFC Cup. On 22 May 2016, Singh scored the fifth and final goal for Mohun Bagan as they defeated Aizawl in the 2016 Federation Cup Final. His 82nd-minute strike helped further seal the match for the side as Singh won his second trophy with Mohun Bagan.
Prior to the first season of the Indian Super League, Singh signed with Goa on loan from Mohun Bagan. He made his debut for the side in a round seven match against Mumbai City on 9 November 2014. He started the match and played the full match as Goa drew 0–0. He was retained by the side prior to the 2015 season.
On 12 May2016 it was announced that Singh had signed with Atlético de Kolkata on loan for the 2016 season. He made his debut for the side in the team's season opener against Chennaiyin on 2 October 2016. He started and played the full match as Atlético de Kolkata drew it 2–2.