1747년(영조 23) 진사시에 합격하고, 1752년 정시문과에 병과로 급제해 사헌부 지평, 홍문관 수찬 · 교리 등을 역임하였다. 1774년 등준시(登俊試)에 뽑히기도 하였다. 1777년(정조 1) 홍국영(洪國榮)의 세도정치가 시작되면서 경흥부사로 밀려났다가 홍국영이 실각되면서 1781년 한성부우윤이 되었다.
이어 사간원대사간 · 사헌부대사헌 · 평안도관찰사 · 이조판서 등을 거쳐 1799년에는 홍문관 · 예문관 양관(兩館)의 대제학을 겸임하는 최고의 영예를 지냈다. 두 차례에 걸쳐 북경(北京)을 다녀오면서 청국의 석학들과 교유해 문명(文名)을 날렸으며, 고증학(考證學)을 수용 · 보급하는 데 기여하였다.
『영조실록』 · 『국조보감』 · 『갱장록(羹墻錄)』 · 『동문휘고(同文彙考)』를 비롯한 각종 편찬사업을 주관하기도 했으며, 지방관의 지침서인 『목민대방(牧民大方)』을 저술하였다. 특히, 1764년에는 일본에 가는 통신사(通信使) 일행에게 부탁해 벚나무 묘목을 들여다가 서울 우이동에 심어 뒷날의 경승지를 이루게도 하였다. 1801년 판중추부사로 물러났다가 이듬 해 79세의 나이로 죽었다.
학문과 문장이 뛰어나 『이계집』 37권 외에 『육서경위(六書經緯)』 · 『군서발배(群書發排)』 · 『격물해(格物解)』 · 『칠정변(七情辨)』 · 『해동명장전(海東名將傳)』 · 『고려대사기(高麗大事記)』 · 『흥왕조승(興王肇乘)』 · 『삭방습유(朔方拾遺)』 · 『북새기략(北塞記略)』 · 『만물원시(萬物原始)』 · 『향약절중(鄕約折中)』 등의 많은 저술을 남겼다.
문장이 바르면서 숙련되고 법칙이 있어서 당시 조정의 신료 중에 따를 사람이 없다는 평을 받았다. 글씨도 진체(晉體)와 당체(唐體)에 뛰어나 많은 작품을 남겼다. 곡산의 신덕왕후사제구기비(神德王后私第舊基碑)와 수원성(水原城)의 북문루상량문(北門樓上梁文)이 대표적이다. 시호는 문헌(文獻)이다.