일찍부터 문재(文才)가 뛰어나, 1347년(충목왕 3) 이곡(李穀)이 주관한 과거에서 15세의 나이로 합격하였다.
충정왕(忠定王) 때 정방(政房)의 필도치(必闍赤)에 임명되었으며, 충정왕이 왕위에서 쫓겨나 강화도로 갈 때 시종하여 따라갔다.
공민왕(恭愍王)이 다시 발탁하여 필도치로 삼았으며, 여러 번 승진하여 1363년(공민왕 12)에는 밀직사좌대언(密直司左代言)에 이르러 인사행정을 맡았다. 이때까지 줄곧 지제고(知制誥), 한림대제(翰林待制) 등의 문한직(文翰職)을 겸임하였다.
1365년(공민왕 14) 신돈(辛旽)이 집권하자, 왕에게 신돈이 바른 사람이 아니라며 멀리할 것을 아뢰었다가 예의판서(禮儀判書)로 밀려난 다음 곧 관직에서 물러났다. 1371년(공민왕 20) 신돈이 숙청되자 왕이 다시 불러 이부상서(吏部尙書) 수문전학사(修文殿學士)로 발탁하였으며, 곧 승선(承宣)에 임명되어 다시 인사행정을 관장하였다.
우왕(禑王)대에 밀직제학(密直提學), 동지밀직(同知密直) 등을 지냈으나, 공민왕 시해에 관여한 한안(韓安)의 친척이라는 이유로 일시 유배되었다. 1378년(우왕 4) 유배에서 풀려나 상당군(上黨君)에 봉해지고 공신호를 받았으며, 1380년(우왕 6)에는 청성군(淸城君)으로 새로 봉해졌다. 1383년(우왕 9)에 판후덕부사(判厚德府事) 우문관대제학(右文館大提學) 지춘추관사(知春秋館事)에 임명되었으나, 이듬해에 52세로 사망하였다.
시호는 문경(文敬)이다.