The 28-year-old leg-spinner, who began his career with the White Rose in 2006, helped them win the County Championship in 2014 and 2015.
"I love representing my county and I hope to win more silverware with them," said the Bradford-born player.
Rashid has played three Tests, 25 one-day internationals and 18 Twenty20s for England.
He has taken 436 wickets at an average of 34.75 and scored 6,102 runs at 35.47 in 148 first-class matches.
Yorkshire director of cricket Martyn Moxon said: "Adil is a special player across all three forms of the game.
"He has been a very important player for Yorkshire and has played a crucial part in our recent success."
England all-rounder Adil Rashid has signed a new three-year contract with county champions Yorkshire.