일찍이 백이정(白頤正)에게서 수학해 성리학에 밝았다. 1326년(충숙왕 13) 문과에 급제해 복주사록(福州司錄)이 되었다가 춘추공봉(春秋供奉)에 발탁되었다. 1342년(충혜왕 복위 3) 기거사인(起居舍人)으로 원나라의 제과(制科)에 급제해, 대령로금주판관(大寧路錦州判官)의 벼슬을 받고 돌아와 기거주(起居注)에 올랐다.
1344년 충목왕이 즉위하자 우부대언(右副代言)이 되었고 밀직제학(密直提學)으로 승진한 뒤에는 서연(書筵)에서 진강하였다. 이어 삼사좌사(三司左使)가 되니 원나라에서 정동행성도사(征東行省都事)라는 벼슬을 주었다. 1346년(충목 2) 민지(閔漬)의 『편년강목(編年綱目)』을 제학(提學)으로서 이제현(李濟賢), 안축(安軸), 이곡(李穀) 등과 함께 증보(增補)하였으며, 충렬, 충선, 충숙 3대 실록의 편찬을 명받기도 하였다.
1352년(공민왕 1) 조일신(趙日新)이 난을 일으키자 이를 토평하는 데 공을 세워 1354년 정당문학 겸 감찰대부(政堂文學兼監察大夫)에 올랐다. 이어 성산군에 봉해졌으며 원나라에서 정동성원외랑(征東省員外郎)이라는 벼슬도 받았다.
1356년 10월 정당문학으로 사은사가 되어 원나라를 다녀왔다. 이듬해 4월 과거를 주관하여 염흥방(廉興邦) 등을 선발하였으며, 같은 해 윤9월 『고금록(古今錄)』을 편수하였다. 1359년 8월 수사공 상서좌복야 어사대부(守司空尙書左僕射御史大夫)에 올랐으며, 1362년 참지중서정사(參知中書政事) · 판개성부사(判開城府事) · 첨의평리(僉議評理)에 이어 이듬해 정월 삼사우사(三司右使), 8월 서북면도찰군용사(西北面都察軍容使)를 역임하였다.
1364년 단성좌리공신(端誠佐理功臣)이 되고, 10월 찬성사로서 원나라에 사신으로 가서 공민왕이 복위된 것을 사례하고 돌아왔다.
1365년 왕에게 신돈(辛旽)을 멀리할 것을 간했다가 한때 파직 당하였다. 같은 해 5월 흥안부원군(興安府院君)에 진봉되었으며, 6월 판삼사사(判三司事)를 거쳐 윤10월 과거를 주관하여 윤소종(尹紹宗) 등을 선발하였고, 1369년 6월 흥안백(興安伯)으로 과거를 주관하여 유백유(柳伯濡) 등을 선발하였고, 1370년 8월에는 원의 제과(制科) 응시생을 선발하였는데, 그 가운데 이숭인(李崇仁)과 권근(權近)은 25세 미만이어서 파견하지 않았다. 1371년 5월 감춘추관사(監春秋館事)가 되어 이색(李穡)과 함께 『금경록(金鏡錄)』을 증수하였다. 1373년 검교시중(檢校侍中)으로 부친상을 당해 경산부(경산부)에 있었으며, 이듬해 3월 세상을 떠났다.
성품이 강직해 옳은 일이라면 작은 일이라도 반드시 기뻐했고 옳지 못한 일을 보면 노기가 얼굴에 나타났으나 함부로 입 밖에 나타내지는 않았다 한다.
저서로는 『초은집(樵隱集)』이 있다. 1375년(우왕 1) 충정왕의 묘정(廟庭)에 배향되었다. 시호는 문충(文忠)이다.