The Welsh club have reportedly been tracking the 23-year-old for a number of weeks and he pens a contract at the Cardiff City Stadium until June 2017.
And the former Bournemouth man, who made 71 appearances for Millwall, is excited by his new challenge.
"With my contract soon to expire at Millwall, I was looking for a new challenge; a few clubs were interested, but when I heard Cardiff City was one of them it was an easy decision to make," he told Cardiff's official website.
"The manager didn't need to persuade me at all into making this decision, I wanted to come and be part of his plans. I'm very happy to be here and eager to get started."
Elsewhere in the Championship, Derby County goalkeeper Lee Grant has extended his stay at Pride Park until the end of the 2016-17 season.
The 31-year-old started his career at Derby and rejoined the club in 2013 via permanent spells at Sheffield Wednesday and Burnley.
At Leeds United, striker Noel Hunt has had his contract cancelled by mutual consent - the 32-year-old spent the back end of 2014 on loan at Ipswich Town.
Oriol Riera has joined Deportivo la Coruna on loan from Wigan Athletic.
The 28-year-old moved to the DW Stadium in the close-season but has found the going tough in Lancashire, scoring just once in 13 outings.
And with manager Malky Mackay looking to trim the squad to make additions of his own, the Spaniard has been allowed to return to La Liga on a temporary basis.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.