본관은 운봉(雲峰). 자는 경부(敬夫), 호는 설봉(雪峰). 정몽주(鄭夢周)의 문인이다.
1385년(우왕 11) 문과에 급제하고 여러 관직을 옮겨 사헌규정(司憲糾正)이 되었다. 이성계(李成桂)가 제군부(諸君府)를 둘 때 중랑장으로서 군부도사를 겸임했으며, 예조 · 형조의 정랑에 승진되었다. 1392년(태조 즉위년)에 원종공신(原從功臣)에 책록되고 봉상시소경(奉常寺少卿)이 되었다. 그리고 이듬해 사헌시사(司憲侍史) · 교주강릉도안렴사(交州江陵道按廉使) · 감문위대장군 겸 사헌중승(監門衛大將軍兼司憲中丞) 등을 역임하였다.
1395년 형조도관으로서 공사노비(公私奴婢)에 대해 다른 도감을 두고 새로운 노비문서를 만들어 노비문제에 대한 쟁송을 없애려고 하였다. 1397년 간관(諫官)으로서 변정도감의 속공(屬公: 공노비로 소속됨)한 노비로 방환(放還: 공노비에서 풀어줌)한 노비의 수를 보충하자고 해 관철시켰다. 또한 1398년 관직을 줄이고 군자전(軍資田)이 적으므로 녹과전(祿科田)으로 정하지 말고 저축하자고 했으며, 또 아일(衙日)에는 정전(正殿)에서 조회(朝會)를 받고 정무 볼 것을 상언하기도 하였다.
1399년(정종 1)에는 형조전서가 되었다가 1400년 태종이 즉위하자 승추부좌부승지(承樞府左副承旨)로 기용되었다. 1401년(태종 1) 참찬관승지(參贊官承旨)로서 경연에 참가하기도 하였다. 1402년 대언(代言) · 사헌부대사헌에 특배(特拜)되고, 각도에 경차관(敬差官)을 파견해 곡식의 손실을 검사하자고 주청하였다. 다음 해에는 광주목사로 나아갔다가, 1404년 개성유후(開城留後) · 승녕부부윤(承寧府府尹)이 되고, 11월에는 참지의정부사로서 사은사가 되어 명나라에 다녀왔다.
1405년 노비변정도감(奴婢辨正都監)의 제조(提調), 다시 대사헌이 되었으나, 대사헌으로서 ‘전후가 맞지 않는 계문(啓聞)을 올렸다.’는 이유로 사간원의 탄핵을 받아 순군사(巡軍司)에 하옥되었다. 그리고 아주(牙州)로 귀양을 갔다. 1406년 귀양에서 풀려나 경외종편(京外從便: 서울과 시골에서 일을 편한 대로 좇음)되었으며, 다시 동북면도순문찰리사(東北面都巡問察理使)로 기용되자 경성 · 경원에 무역소를 설치하자고 상소하였다.
1407년 참지의정부사로 기용되어 세자가 정조사(正朝使)로 명나라에 갈 때 요동까지 호종하고, 돌아와 공조판서에 올랐다. 1408년 서북면도순문찰리사 겸 평양부윤이 되었다. 1409년 세자 양녕대군에게 새해 선물로 활과 화살을 바쳤는데, 이 때문에 사헌부로부터 세자가 학문을 그만두는 단서를 열어주었다는 탄핵을 받았다.
1410년 다시 지의정부사(知議政府事)로 기용되었으며, 이듬해 노비변정도감을 두었을 때 호조판서로서 제조가 되었다. 그 뒤 호조판서 · 병조판서 · 의정부찬성 · 이조판서 등을 차례로 역임하였다. 1418년(세종 즉위년) 봉숭도감(封崇都監)의 제조가 되었으며, 이어서 선공감제조가 되었으나 선공감 관리의 부정으로 통진현에 유배되었다가 12년만에 소환되어 죽었다. 시호는 혜숙(惠肅)이다.