The 41-year-old is one of his country's most successful off-spin bowlers after a star-studded career in which he played 103 Tests, 236 one-day internationals and 28 T20 internationals.
Singh took 417 Test wickets - placing him 14th on the all-time list - and enjoyed a successful white-ball career around the world in both international and domestic cricket.
He made his international debut in a Test against Australia in 1998 and, following his last India appearance back in 2016, has continued to play in the Indian Premier League - most recently for the Kolkata Knight Riders earlier this year.
But he has now decided to call time on his career.
Writing on Twitter, Singh said: "All good things come to an end and today as I bid adieu to the game that has given me everything in life.
"I would like to thank everyone who made this 23-year-long journey beautiful and memorable.
"My heartfelt thank you. Grateful."