The former Oxford United player, 25, who spent most of last season on the sidelines after suffering knee ligament damage, has found the net four times in 55 games since joining the club in the summer of 2006.
"I'm delighted to get it all sorted. Now I'm looking to help the team get promotion," he said.
"Millwall is a club going places. There's a good feeling about the place, and that's why I signed. I want to be part of a successful team.
"I'd like to thank the manager, my teammates and the supporters - everyone's been great to me, especially since my knee injury."