본관은 남양(南陽). 초명은 문해(文海). 자는 숙장(叔章). 홍수량(洪受湸)의 증손으로, 할아버지는 홍우서(洪禹瑞)이고, 아버지는 홍계현(洪啓鉉)이며, 어머니는 황계하(黃啓河)의 딸이다.
1775년(영조 51) 과방(科榜)에 들었으나 파방(罷榜)으로 삭과(削科)된 뒤 1777년(정조 1) 정시문과에 병과로 다시 등제(登第)되어 가주서(假注書)에서 일약 사헌부지평(司憲府持平)에 제수되었고, 이듬해에는 정언으로 재직 중 영조의 부마이던 정치달(鄭致達)의 처를 탄핵하였다.
1779년(정조 3) 홍문록(弘文錄)에 선발된 이후 시독관 등의 경연관으로 활동하여 정조를 지근에서 보필하였고, 1782년 채제공(蔡濟恭)을 멀리 도배(島配)시킬 것을 강력하게 주장하기도 했다.
이어 동지정사 정존겸(鄭存謙), 부사 홍양호(洪良浩)와 함께 서장관의 직책으로 중국에 다녀 왔으며, 집의·수찬을 거쳐 응교(應敎)로 재직시 홍국영(洪國榮)의 잔존 세력을 몰아 내는 데 앞장섰으나, 1784년 헌납 이집두(李集斗)의 탄핵으로 파직(罷職)되었다.
이후 형조참의, 대사간을 거쳐 동래부사(東萊府使)로 파견되었으나 동래(東萊) 초량리(草梁里)의 왜인 난동사건을 방지하지 못했다는 이유로 밀려나기도 했다. 1787년 대사간으로 복귀한 뒤 대사성을 거쳐 1790년에는 대사간, 병조참의, 승지 등을 역임했다.