15 cities
| City | Rank | 2025 Pop. ↓ | 2020 Pop. | Annual Change | Density | Area (mi²) | Type |
|---|---|---|---|---|---|---|---|
| Vinita | 1 | 5,422 | 5,284 | 0.5% | 936 | 6 | City |
| Cleora | 2 | 1,519 | 1,616 | 0.2% | 128 | 12 | CDP |
| Bushyhead | 3 | 1,476 | 1,258 | 0.68% | 99 | 15 | CDP |
| Copeland | 4 | 1,350 | 1,725 | -1.39% | 193 | 7 | CDP |
| South Coffeyville | 5 | 696 | 683 | 0.29% | 943 | 1 | Town |
| Welch | 6 | 641 | 625 | 0.47% | 1,250 | 1 | Town |
| Bernice | 7 | 436 | 419 | 0.69% | 534 | 1 | Town |
| White Oak | 8 | 210 | 284 | -1.87% | 35 | 6 | CDP |
| Sportmans Shores | 9 | 197 | 230 | 7.07% | 704 | 0 | CDP |
| Big Cabin | 10 | 177 | 170 | 0.57% | 76 | 2 | Town |
| Narcissa | 11 | 139 | 137 | 6.92% | 34 | 4 | CDP |
| Pensacola | 12 | 108 | 101 | 0.93% | 360 | 0 | Town |
| New Alluwe | 13 | 88 | 87 | 0% | 759 | 0 | Town |
| Dotyville | 14 | 80 | 106 | -1.23% | 174 | 0 | CDP |
| Grand Lake Towne | 15 | 79 | 79 | 0% | 590 | 0 | Town |
Vinita is the largest city in Craig County, with a population of 5,422.
Grand Lake Towne is the smallest city in Craig County, with a population of 79.
There are 15 cities in Craig County, Oklahoma.