The 24-year-old, who turned down the offer of a new Crewe deal, becomes Walsall's second summer signing, following the arrival of fellow 24-year-old Luke Leahy from Falkirk.
"Jon has got plenty of experience of League One from his time with Crewe," said Walsall manager Jon Whitney.
"We'll be getting Jon at a good stage of his career."
Find all the latest football transfers on our dedicated page.
League One club Walsall have signed Crewe Alexandra defender Jon Guthrie on a two-year contract.