궁핍과 빈곤 속에서 전국을 유람하며, 민중의 애환과 풍속을 시로 절실하게 노래했다. 본관은 고령(高靈). 자는 성연(聖淵), 호는 석북(石北)·오악산인(五嶽山人).
아버지 호(澔)와 어머니 성산이씨(星山李氏) 사이에서 장남으로 태어났다. 5세 때부터 글을 지어 사람들을 놀라게 했으나, 13세인 1724년 가세가 기울어 낙향했다. 여러 차례 과거에 응시했으나 낙방하고, 1746년 한성시(漢城試)에서 〈관산융마 關山戎馬〉로 2등 급제했는데, 이 시는 당시에 널리 읊어졌으며 과시(科詩)의 모범이 되었다. 1750년 비로소 진사에 급제했으나, 이후로 다시는 과거에 뜻을 두지 않았다. 그후 시골에서 칩거생활을 했으나, 갈수록 궁핍해져서 가산과 노복들을 청산하고 땅을 빌려 손수 농사를 지었다. 이때 몰락양반의 빈궁과 자신의 처지를 읊은 〈서관록 西關錄〉을 지었는데, 이 작품이 뒷날 역작인 〈관서악부〉를 짓는 계기가 되었다. 음보(蔭補)로 영릉참봉(寧陵參奉)에 임명되었고 이때 벗들과 여강에서 소일하며 〈여강록 驪江錄〉을 지었다. 악부체 시인 〈금마별가 金馬別歌〉도 이 시기에 지어졌다.
1763년 사옹봉사(司瓮奉事)가 되었고, 다음해에 금부도사로 제주에 가서 45일간 머물면서 제주민의 고충과 풍물을 노래한 〈탐라록 耽羅錄〉을 지었으며, 4월에는 선공봉사(繕工奉事)가 되었다. 1765년에 예빈직장(禮賓直長)이 되고 1767년에는 연천(連川) 현감이 되었다. 1772년 2월 어머니의 권유로 기로과(耆老科)에 응시하여 갑과(甲科) 1등으로 뽑혔다. 3월에 돈령도정(敦寧都正)이 되었는데, 영조가 궁핍한 사정을 알고 가옥과 노비를 하사했다. 다시 병조참의에 오르고 9월에 영월부사(寧越府使)에 임명되었다. 1774년 관서지방의 풍속·고적·고사 등을 소재로 한 〈관서악부 關西樂府〉를 지었다. 1775년 우승지에까지 올랐다. 저서인 〈석북집〉은 시인으로 일생을 보내면서 지은 많은 시가 실려 있는데, 특히 여행의 경험을 통해서 아름다운 자연과 향토의 풍물에 대한 애착을 느끼고 그 속에서 생활하는 민중의 애환을 그린 뛰어난 작품집이다.