송생 남쪽에 있는 안덕(安德)이 고구려의 이화혜현(伊火兮縣), 서쪽의 청부현(靑鳧縣)이 고구려의 청기현(靑杞縣)이었던 것으로 보아 삼국시대 초기에는 송생현이 고구려의 영토로 추측된다.
송생은 본래 신라의 소라현(召羅縣)이었는데, 1018년(현종 9)예주(禮州: 지금의寧海)에 속하였다. 1143년(인종 21) 감무를 두어 예주에서 분리하였고, 1394년(태조 3) 안동 임내의 안덕현(安德縣)을 송생현에 합쳤다. 1423년(세종 5)청보군(靑寶郡)과 합칠 때 앞 글자를 따서 청송군(靑松郡)으로 하였다.
1914년 행정구역개편 때 청송군 청송면 송생리가 되었는데 이는 옛 읍명을 취한 것이며, 1976년 청송읍으로 승격되면서 명칭을 가지게 되었다.
『신증동국여지승람』에는 삼면(三面)이 하늘이 만든 천험(天險)이라고 하였으며, 주방산(周房山)에는 돌로 쌓은 성이 있었고, 북쪽은 진보(眞寶), 서쪽은 청송과 접한다.