The 36-year-old, who has 42 England caps, is the club’s top scorer this season with four, even though all nine of his Premier League appearances so far have come from the bench.
“He still has so much to offer us,” Potters manager Mark Hughes said.
“He continues to have a major impact on games, as he has proved on numerous occasions this season.”
Crouch joined Stoke from Tottenham in 2011 for a then club record £10m, having previously played for Liverpool, Portsmouth, QPR, Southampton and Aston Villa.
“Peter is happy here and made no secret of his desire to stay with the club. We’re delighted with the news,” chief executive Tony Scholes said.
Earlier this month, Crouch set a Premier League record for substitute appearances with 143 after coming off the bench against Brighton.
That followed another record set in October for the most headed goals by a Premier League striker, with 51.