The 32-year-old Essex batsman took the role in August 2012 and led his country to Ashes victories in 2013 and 2015.
However, during last year’s 4-0 Test series defeat in India he admitted to having “questions” over his role.
“Stepping down has been an incredibly hard decision but I know this is the correct decision for me and at the right time for the team,” said Cook.
“Playing for England really is a privilege and I hope to carry on as a Test player, making a full contribution and helping the next England captain and the team however I can.”
Cook is England’s highest run-scorer in Test cricket with 11,057, while his 140 Test appearances and 30 centuries are also England records.
England and Wales Cricket Board director of cricket Andrew Strauss, who Cook replaced as captain, said his successor was owed “a great debt of gratitude” by his country.
“He’s led the team with determination, conviction and a huge amount of pride over the last five years and his record stands for itself,” added Strauss.
“He deserves to be seen as one of our country’s great captains.”