The 28-year-old Croatia international joined the Ligue 1 outfit in January 2012 from Hajduk Split.
"The club has confirmed its confidence in me and that's very important for me because Monaco has become my second home," Subasic told the club's official website.
"When I signed here, the aim was to win promotion back to Ligue 1. Today, here we are, and we have made an excellent start to the season. It's a fantastic adventure to be a part of."
Monaco's vice-president Vadim Vasilyev added: "We are delighted with this contract extension. Danijel Subasic is playing well, he's working hard and he really deserves it. We are continuing to move forward together."
Subasic has kept four clean sheets so far this season for Monaco, who are currently at the top of Ligue 1 with 21 points from nine matches.