The 33-year-old revealed his mind was made up prior to a string of impressive performances at the World Cup in Russia.
Subasic, who won 44 caps in total, felt it was time to make way despite the strong recent form.
"After 10 years, it's time for me to retire from my favourite jersey," he said in a statement.
"I made my decision before the World Cup because I wanted to finish my career playing at the World Cup, which was my dream.
"We all have an expiry date, and need to assess how long we can play. Maybe I could have lasted one more campaign, but that would probably be too much.
"In this manner, I want to allow my team-mates, who are waiting for their chance like I did, to make their dreams come true, and play for Croatia. They are Croatia's future.
"I have given my all, with honour and pride in every match. Maybe there weren't too many, but that's less important.
"What's important is that I am a fulfilled, happy man who played for his country and wore the most beautiful shirt in the world."
Subasic made his international debut in November 2009 while still a Hajduk Split player.
He was a squad member at Euro 2012 and the 2014 World Cup before Stipe Pletikosa's retirement led to him becoming number one in time for Euro 2016.