본관은 나주(羅州). 자는 법세(法世), 호는 해좌(海左). 정시한(丁時翰)의 현손이며, 정도항(丁道恒)의 증손으로, 할아버지는 정영신(丁永愼)이고, 아버지는 유학 정지령(丁志寧)이며, 어머니는 신필양(申弼讓)의 딸이다. 세거지는 원주로 홍이헌(洪而憲) · 신성연(申聖淵) · 유한우(兪漢遇) 등과 친교가 깊었다.
1759년 (영조 35) 진사시에 합격한 뒤 성균관유생이 되었다가, 마침 동궁(東宮: 思悼世子)을 비난하는 유소(儒疏)가 바쳐지자 이에 반대하였다. 1763년 증광 문과에 갑과로 급제해 사직서직장(社稷署直長)이 되었다가 성균관전적 · 병조좌랑을 거쳐 지평이 되었다. 그러나 왕명을 받드는 데 지체했다는 죄로 잠시 갑산으로 유배되었다.
이듬해 이조좌랑에 서용되고 옥구현감을 거쳐 홍문록에 뽑히자, 그 문학의 재주를 평가한 우의정 원인손(元仁孫)의 천거로 수찬이 되었다. 이어 동부승지로 발탁되었으며, 왕명에 따라 「건공가(建功歌)」 · 「백운고시(百韻古詩)」를 지어 바쳐 시명이 조야간에 크게 드러났 한다.
그 뒤 공조참의 · 풍기군수를 역임하고, 정조 초에 양양부사가 되어 부세를 줄이고 유풍(儒風)을 진작시키는 등 서민 교화에 진력하였다. 그러나 겸관(兼官)으로 있던 강릉에서 목상(木商)이 소나무를 잠매(潛買)한 사건으로 파직되었다가 이듬해인 1781년 동부승지로 서용되고, 대사간을 거쳐 풍천부사가 되어 사직하였다.
1788년 예조참의로 서용되었으나 부임하지 않았다. 1792년 대사헌에 임명되었으나 나이가 많음을 들어 치사(致仕)를 청했으나 허락되지 않고 예조참판 · 개성유수 · 이조참판 등에 차례로 제수되었다. 2년 후 지돈녕부사가 되어 기로사(耆老社)에 들어가면서 형조판서에 승진, 지춘추관사를 겸임하였다.
그 뒤 78세가 되던 정조 말년까지 조정에 머물며 예문관 · 홍문관의 제학으로서 문사(文詞)의 임무를 맡았다. 1800년 정조가 죽자 정종행장찬술당상(正宗行狀撰述堂上)으로 뽑혀 만장 7율 10수를 지었으며, 이듬해 실록청찬집당상으로서 『정종실록』 편찬에 참여하였다.
시율과 문장에 뛰어나 사림의 모범으로 명성을 얻었고, 또 이로 인해 영조와 정조의 총애를 받았다. 특히, 문체반정(文體反正)에 주력하던 정조에 의해 당대 문학의 제1인자로 평가되어 70이 넘은 고령에도 불구, 오랫동안 문사의 임무를 맡았다. 남인 집안 출신으로서 정치적 자세는 불편부당한 입장을 취하면서도 당시의 탕평책에는 비판적이었다.
즉, 탕평책이 외면적이고 형식적인 균용론(均用論)만 취하는 것이어서 사의(私意)가 횡행해 효과를 거두지 못한다고 하였다. 대신 붕당을 없애기 위해서는 공정한 인사 관리와 신의 있는 시책, 분명한 정치적 자세가 필요하다고 하였다. 문집으로 『해좌집』 39권이 있다. 시호는 문헌(文憲)이다.