Born in Kha-Potessangbam, Manipur, Singh started playing football as a striker, before being converted into a central defender by his coach, Shiband Sir. In 2010, during an All-Manipur Inter District tournament, Singh impressed Maniratnam, a coach who worked with the Directorate of Youth and Sports Affairs. Through Maniratnam, Singh attended trials for Pune's academy in 2011 and made it into the team. While with the academy, Singh was part of the under-19 side which won back-to-back I-League U19 titles. He was also selected to be part of the Maharashtra side which participated in the 2013 Santosh Trophy. At the end of the 2012–13 season, Singh was awarded the "Best-Disciplined Under-19 Player" award by the club.
Prior to the 2013–14 I-League season, Pune head coach Mike Snoei gave Singh a place in the first-team squad. He appeared for the first-team squad for the first time during Pune's opening I-League match of the season against Mohammedan. He started and remained on the bench for the entirety of the match as Pune won 3–1. Singh eventually made his competitive debut for Pune in the I-League on 2 November 2013 against Sporting Goa at Duler Stadium. He came on as a 21st minute substitute for the injured Calum Angus as Pune lost 2–0.
On 26 February 2014, Singh made his competitive international club tournament debut for Pune in the AFC Cup against Nay Pyi Taw. He started and played the full match as Pune drew 2–2 against the side from Myanmar.
On 23 October 2015, after Pune announced they would withdraw from the I-League, Singh signed on loan with fellow I-League side Bengaluru FC for the 2015–16 season. He made his debut for the side in an away match against East Bengal on 30 January 2016. He came on as a 94th minute substitute as Bengaluru FC won 1–0.
On 5 November 2016, Singh came on as a late substitute for Bengaluru FC in their 2016 AFC Cup Final match against Al-Quwa Al-Jawiya. He came on as a 83rd minute substitute for Álvaro Rubio but could not prevent Bengaluru FC from falling 1–0.
On 7 September 2016, after spending the season with Bengaluru FC, Singh signed with NorthEast United of the Indian Super League. Despite signing for the team before the season, due to AFC Cup commitments with Bengaluru FC, Singh missed the beginning of the ISL season.
Singh did eventually make his debut for NorthEast United on 22 November 2016 against Pune City. He started and played the full match as NorthEast United won 1–0.
After the Indian Super League season, it was confirmed that Singh would re-join Bengaluru FC for the 2016–17 I-League. He made his season debut for the club on 5 February 2017 against DSK Shivajians. He started the match and scored the 90th minute equalizer for Bengaluru FC as the club came out with a 2–2 draw.
On 6 February 2017 it was announced that Singh would be part of the India U23 side that would take part in the 2016 South Asian Games. He made his international debut for the side on the same day in their opening match against Sri Lanka. He started the match but could not prevent India from falling 1–0 to the Sri Lankans.As of 25 May 2017