Nguyễn Khuyến có tên là Nguyễn Thắng, quê ở làng Yên Đổ, huyện Bình Lục, tỉnh Hà Nam. Ông học giỏi, năm Tự Đức 17 (1864), đậu đầu cử nhân (tức Giải nguyên) trường Hà Nội. Năm sau (1865), ông trượt thi Hội nên phẫn chí, ở lại kinh đô học trường Quốc Tử Giám. Đến năm 1871, ông mới đỗ Hội Nguyên và Đình Nguyên (Hoàng giáp). Cả ba lần đều đậu thủ khoa nên người đời thường gọi là Tam Nguyên Yên Đổ.