The academy graduate has made 101 appearances for the Foxes in all competitions, scoring 21 goals.
Barnes joined the Club aged nine, making his professional debut against FC Porto in the Champions League in 2016.
“I’ve been here for so many years now, it feels like home. For me, it was a no-brainer,” he said.
“Of course, I wanted to extend my stay here.”
The 23-year-old helped Leicester to their first-ever FA Cup Final victory in May, before adding the FA Community Shield to his trophy haul earlier this month.
He also made his England debut last year, coming on as a late substitute in a 3-0 friendly win against Wales.