Personal terms have been negotiated and the 29-year-old former Leeds man will join on a free transfer on July 1 after his contract expires at the Etihad Stadium.
The England international, who has won 53 caps, will add some much-needed experience to a midfield which, for the first time in 17 years will be without captain Steven Gerrard as he begins a new career in Major League Soccer with Los Angeles Galaxy.
“Liverpool Football Club are delighted to announce they have agreed a deal to sign Manchester City’s James Milner, subject to a medical,” the club said a statement.
“The Reds have agreed personal terms with the England international, who will join the club on a free transfer on July 1 after his contract at the Etihad Stadium has expired.”
Milner is reported to have turned down better terms offered by City in order to move to Anfield, where he believes he can play more regularly after making just 18 league starts last season.