본관은 풍양(豊壤). 자는 수보(秀甫). 조대수(趙大壽)의 증손으로, 할아버지는 조석명(趙錫命)이고, 아버지는 증참판(贈參判) 조재세(趙載世)이며, 어머니는 이현보(李玄輔)의 딸이다. 큰아버지 조재임(趙載任)에게 입양되었다.
1774년(영조 50) 정시문과에 병과로 급제, 검열(檢閱)·정자(正字)를 거쳐 1780년(정조 4) 가주서가 되었으며, 이듬해 홍문록(弘文錄: 홍문관의 제학이나 敎理를 선발하기 위한 제1차 인사기록)에 올랐고, 그 해 개성부경력(開城府經歷)이 되었다.
이어 교리를 거쳐 1782년 부제학, 1786년 동부승지(同副承旨)에 이어 호조참의가 되었다. 그 뒤 봉산군수·곡산부사를 역임하고, 1809년(순조 9) 대사간이 되었다. 이듬해에는 의주부윤이 되어 압록강상의 위화도를 비롯한 제도(諸島)가 비옥한 사실을 알고 이의 개간을 건의하였다.
1811년 홍경래(洪景來)의 난이 일어나자 관군을 모아 의주를 굳게 지키는 한편, 반군이 점령한 철산(鐵山)·용천(龍川) 등 7읍을 수복하는 데 전공을 세웠으나 논공행상에 불만, 사직하였다.
이듬해 양사(兩司)의 건의에 따라 병조참판에 기용되고, 이어서 한성부우윤·부총관을 역임하였다. 사후에 이조판서, 이어 대제학에 추증되었다. 시호는 처음 숙정(肅靜)이었으나 충헌(忠獻)으로 개시(改諡)되었다.