본관은 풍산(豊山). 초명은 명한(鳴漢). 자는 공서(公舒). 홍만회(洪萬恢)의 증손으로, 할아버지는 군수 홍중성(洪重聖)이고, 아버지는 홍진보(洪鎭輔)이며, 어머니는 윤두천(尹斗天)의 딸이다.
1763년(영조 39) 진사가 되고, 1771년 참봉으로서 정시문과에 병과로 급제, 부수찬 등을 지냈다. 1779년(정조 3) 동지사(冬至使)의 서장관(書狀官)으로 청나라 북경에 다녀와서 그 곳의 지리·풍속과 사정 등 문견(聞見)을 왕에게 소상하게 보고하였다.
그 뒤 대사간·중화부사·한성부우윤·승지·대사성·대사헌 등을 거쳐 평안감사가 되었는데, 무열사(武烈祠)를 수축할 때 유생들로부터 돈을 거두었다는 혐의로 파직되어 금갑도(金甲島)에 유배되었다.
뒤에 풀려나서 이조참판·도승지·동래부사를 역임하고, 이어 순조대에 들어와 형조판서·수원유수·우참찬·예조판서·한성부판윤 등 내외의 요직을 두루 거쳐 판의금부사에 이르렀다. 글씨를 잘 썼다. 작품으로는 수원의 「지지대비(遲遲臺碑)」가 있다. 시호는 효헌(孝憲)이다.