Статус города получил в 1922 году, до 1990 года являлся административным центром Юго-Осетинской автономной области Грузинской ССР, в настоящий момент — столица частично признанной и фактически самоуправляемой Республики Южная Осетия, расположенной согласно конституции Грузии на территории Грузии. Согласно юрисдикции Южной Осетии является отдельной административной единицей Южной Осетии, согласно юрисдикции Грузии — в Горийском районе грузинского края Шида-Картли.
С 7 августа 2008 года город стал местом военных действий между грузинской и южноосетинской сторонами. Главное административное здание Цхинвала было уничтожено, город серьёзно пострадал.

Блок-пост при въезде в город Цхинвал


Название населённого пункта происходит от груз. ქრცხინვალი (Крцхинвали, Кцхинвали — «земля грабов») . В русскоязычных источниках вплоть до первой половины XX в. назывался Цхинвал.
В 1934 году в честь Иосифа Сталина город получил название Сталинир или Сталинири. В 1961 году был переименован в Цхинвали. В 1991-м году властями Южной Осетии было официально утверждено название Цхинвал, фактически используемое и в советское время параллельно с Цхинвали. Также в быту употребляется неофициальное название города — осет. Чъреба (Чреба) .