본관은 남양(南陽). 자는 유직(幼直). 홍성언(洪聖元)의 증손으로, 할아버지는 호조참판 홍숙(洪璛)이고, 아버지는 충청도관찰사 홍용조(洪龍祚)이며, 어머니는 이창령(李昌岭)의 딸이다.
1753년 (영조 29) 알성문과에 장원으로 급제해 지평이 되었다. 이듬 해 전적·정언·이조좌랑 등을 거쳐 교리가 되었으나, 왕세자(莊獻世子)에게 극간한 것이 문제가 되어 흥해에 유배되었다.
그 뒤 풀려나 1765년 부수찬에 기용되었다. 이어 병조번고어사(兵曹反庫御史)가 되어 훈련도감의 재고부상목(在庫腐傷木)을 군사들에게 상품으로 지급할 것을 건의하였다. 또한, 그 해에 동지사의 서장관이 되어 정사 순의군 항(順義君恒), 부사 김선행(金善行)과 함께 청나라에 다녀왔다.
이듬 해 부응교가 되었으며, 강원도암행어사로 다녀와 탐욕이 많고 비루한 회양부사 김광국(金光國)의 파직을 건의하였다. 1768년 보덕·집의 등을 거쳐 응교가 되었으며, 이 때 응제에 수석해 대녹피(大鹿皮) 한 장이 하사되었다. 이듬 해 의주부윤이 되어 사상(私商) 가운데 범법자를 잡아 참형에 처하였다. 1771년 강계부사를 거쳐, 이듬 해 대사간에 이어 형조참의를 역임하였다.
1776년(정조 즉위년) 대사간으로부터 강계부사 재직시의 탐학을 이유로 탄핵을 받고 충군(充軍)되었다. 1787년 다시 대사간에 기용되었으며, 1789년 경상도관찰사가 되었으나 영·호남 사이의 교통을 사사로이 차단해 면포(綿布) 값을 앙등시킨 죄로 파직당하였다.
이듬 해 대사헌이 된 뒤 내의원제조(內醫院提調)·한성부판윤, 예조·형조·공조 등의 판서를 역임하였다. 1793년 판의금부사에 이어 지경연사를 겸하였다. 1798년 광주부유수(廣州府留守)를 거쳐, 1804년(순조 4) 지의금부사가 된 뒤 지중추부사를 역임하였다. 시호는 정간(貞簡)이다.