The 20-year-old has made eight first-team appearances for the Toffees, making his Barclays Premier League debut in January having been recalled from a loan spell with League One Scunthorpe.
Duffy, a Republic of Ireland Under-21 international, has featured once this term in the Capital One Cup victory over Leyton Orient last month.
"I'm delighted to get it done. It's taken a bit of time to get it sorted but I am happy now," he told evertonfc.com.
"I have been here for a while now and loved every minute of it.
"Now this is sorted I can focus on working hard and continuing to improve."
Source: PA
Source: PA