Ohio · 254 places of 5,000+
Fastest-growing cities in Ohio, 2020 to 2024
Short answer
- Fastest
- +44.3%
- Growing
- 106
- Shrinking
- 148
The 20 fastest-growing
Sunbury grew fastest, from 6,725 in July 2020 to 9,705 in July 2024, +44.3%. It is the 181st largest of the 254 places ranked. 106 places grew and 148 shrank or held flat; the median change was -0.5%.
By raw numbers the biggest gain was in Columbus, +26,797 people. At the other end, Bexley changed by -8.0%. Growth is measured between the July 2020 and July 2024 estimates for places with 5,000 or more residents in 2024, so fast growth from a small base can outrank larger absolute gains.
- 01Sunbury+44.3%
- 02Obetz+32.3%
- 03Marysville+13.9%
- 04Delaware+11.5%
- 05Grandview Heights+11.4%
- 06Pickerington+11.1%
- 07Canal Winchester+9.4%
- 08Centerville+8.8%
- 09Trenton+8.1%
- 10Harrison+7.1%
- 11South Lebanon+7.1%
- 12Grove City+6.5%
- 13Carlisle+6.3%
- 14Granville+5.9%
- 15North Ridgeville+5.8%
- 16Lebanon+5.3%
- 17New Albany+4.8%
- 18London+4.6%
- 19Reynoldsburg+4.5%
- 20Hilliard+4.4%
Dots: the 20 places in the chart. Orange pin: Sunbury, ranked first.
All 254 places of 5,000+ ranked
| # | Place | 2024 | Since 2020 | County |
|---|---|---|---|---|
| 1 | Sunbury | 9,705 | +44.3% | Delaware County |
| 2 | Obetz | 7,306 | +32.3% | Franklin County |
| 3 | Marysville | 29,276 | +13.9% | Union County |
| 4 | Delaware | 46,521 | +11.5% | Delaware County |
| 5 | Grandview Heights | 9,184 | +11.4% | Franklin County |
| 6 | Pickerington | 25,814 | +11.1% | Fairfield County +1 |
| 7 | Canal Winchester | 10,060 | +9.4% | Franklin County +1 |
| 8 | Centerville | 26,311 | +8.8% | Montgomery County +1 |
| 9 | Trenton | 14,131 | +8.1% | Butler County |
| 10 | Harrison | 13,526 | +7.1% | Hamilton County |
| 11 | South Lebanon | 6,923 | +7.1% | Warren County |
| 12 | Grove City | 44,019 | +6.5% | Franklin County |
| 13 | Carlisle | 5,855 | +6.3% | Warren County +1 |
| 14 | Granville | 6,308 | +5.9% | Licking County |
| 15 | North Ridgeville | 37,504 | +5.8% | Lorain County |
| 16 | Lebanon | 21,995 | +5.3% | Warren County |
| 17 | New Albany | 11,604 | +4.8% | Franklin County +1 |
| 18 | London | 10,743 | +4.6% | Madison County |
| 19 | Reynoldsburg | 42,897 | +4.5% | Franklin County +2 |
| 20 | Hilliard | 38,832 | +4.4% | Franklin County |
| 21 | Athens | 24,824 | +4.2% | Athens County |
| 22 | Avon Lake | 26,342 | +4.2% | Lorain County |
| 23 | Aurora | 17,985 | +4.2% | Portage County |
| 24 | Circleville | 14,433 | +3.4% | Pickaway County |
| 25 | Heath | 10,822 | +3.4% | Licking County |
| 26 | Mason | 36,046 | +3.3% | Warren County |
| 27 | Pataskala | 18,493 | +3.2% | Licking County |
| 28 | Streetsboro | 17,877 | +3.2% | Portage County |
| 29 | Monroe | 15,950 | +3.2% | Butler County +1 |
| 30 | Johnstown | 5,356 | +3.1% | Licking County |
| 31 | Louisville | 9,793 | +3.0% | Stark County |
| 32 | Beavercreek | 48,012 | +3.0% | Greene County |
| 33 | Columbiana | 6,773 | +3.0% | Columbiana County +1 |
| 34 | Bellbrook | 7,532 | +3.0% | Greene County |
| 35 | Columbus | 933,263 | +3.0% | Franklin County +2 |
| 36 | Tipp City | 10,596 | +2.9% | Miami County |
| 37 | Wadsworth | 24,753 | +2.8% | Medina County |
| 38 | Troy | 27,122 | +2.8% | Miami County |
| 39 | Newark | 51,424 | +2.8% | Licking County |
| 40 | Springboro | 19,646 | +2.7% | Warren County +1 |
| 41 | Brecksville | 13,951 | +2.6% | Cuyahoga County |
| 42 | Piqua | 20,940 | +2.6% | Miami County |
| 43 | Avon | 25,573 | +2.6% | Lorain County |
| 44 | Lancaster | 41,671 | +2.6% | Fairfield County |
| 45 | Union | 7,076 | +2.6% | Montgomery County +1 |
| 46 | Powell | 14,613 | +2.5% | Delaware County |
| 47 | Moraine | 6,603 | +2.5% | Montgomery County |
| 48 | Amherst | 13,048 | +2.5% | Lorain County |
| 49 | Middletown | 52,291 | +2.5% | Butler County +1 |
| 50 | Xenia | 26,067 | +2.4% | Greene County |
| 51 | Hillsboro | 6,599 | +2.3% | Highland County |
| 52 | Norwood | 19,455 | +2.3% | Hamilton County |
| 53 | Massillon | 32,750 | +2.2% | Stark County |
| 54 | Painesville | 20,660 | +1.8% | Lake County |
| 55 | Elyria | 53,604 | +1.7% | Lorain County |
| 56 | Cincinnati | 314,915 | +1.7% | Hamilton County |
| 57 | Miamisburg | 20,253 | +1.7% | Montgomery County |
| 58 | Springdale | 11,183 | +1.6% | Hamilton County |
| 59 | Blue Ash | 13,616 | +1.6% | Hamilton County |
| 60 | Mount Vernon | 17,329 | +1.6% | Knox County |
| 61 | Whitehouse | 5,083 | +1.6% | Lucas County |
| 62 | Fairborn | 35,105 | +1.5% | Greene County |
| 63 | Willoughby | 24,208 | +1.4% | Lake County |
| 64 | Wellston | 5,493 | +1.4% | Jackson County |
| 65 | Twinsburg | 19,504 | +1.3% | Summit County |
| 66 | Northwood | 5,222 | +1.1% | Wood County |
| 67 | Canal Fulton | 5,382 | +1.1% | Stark County |
| 68 | Perrysburg | 25,313 | +1.1% | Wood County |
| 69 | Germantown | 5,863 | +1.0% | Montgomery County |
| 70 | Pepper Pike | 6,881 | +1.0% | Cuyahoga County |
| 71 | Montgomery | 10,952 | +0.9% | Hamilton County |
| 72 | Sheffield Lake | 9,035 | +0.9% | Lorain County |
| 73 | Fairlawn | 7,773 | +0.9% | Summit County |
| 74 | Hamilton | 63,953 | +0.8% | Butler County |
| 75 | Rossford | 6,353 | +0.8% | Wood County |
| 76 | Clyde | 6,360 | +0.8% | Sandusky County |
| 77 | Norwalk | 17,172 | +0.8% | Huron County |
| 78 | Lorain | 65,751 | +0.8% | Lorain County |
| 79 | Defiance | 17,180 | +0.8% | Defiance County |
| 80 | Vermilion | 10,733 | +0.7% | Lorain County +1 |
| 81 | Coshocton | 11,114 | +0.6% | Coshocton County |
| 82 | Franklin | 11,758 | +0.6% | Warren County |
| 83 | Zanesville | 24,916 | +0.6% | Muskingum County |
| 84 | Madeira | 9,542 | +0.5% | Hamilton County |
| 85 | Conneaut | 12,357 | +0.4% | Ashtabula County |
| 86 | Fairfield | 45,094 | +0.4% | Butler County |
| 87 | Huber Heights | 43,590 | +0.3% | Montgomery County +1 |
| 88 | Sylvania | 19,102 | +0.3% | Lucas County |
| 89 | Deer Park | 5,437 | +0.3% | Hamilton County |
| 90 | Oberlin | 8,587 | +0.3% | Lorain County |
| 91 | Olmsted Falls | 8,676 | +0.3% | Cuyahoga County |
| 92 | Wyoming | 8,781 | +0.3% | Hamilton County |
| 93 | Urbana | 11,211 | +0.2% | Champaign County |
| 94 | Dublin | 49,456 | +0.2% | Franklin County +2 |
| 95 | Findlay | 40,343 | +0.2% | Hancock County |
| 96 | Celina | 10,945 | +0.1% | Mercer County |
| 97 | Mansfield | 47,593 | +0.1% | Richland County |
| 98 | Van Wert | 11,123 | +0.1% | Van Wert County |
| 99 | The Village of Indian Hill | 6,090 | +0.1% | Hamilton County |
| 100 | Fostoria | 13,063 | +0.1% | Seneca County +2 |
| 101 | Westlake | 34,232 | +0.1% | Cuyahoga County |
| 102 | Green | 27,476 | +0.1% | Summit County |
| 103 | Waterville | 6,022 | +0.1% | Lucas County |
| 104 | Hudson | 23,073 | +0.0% | Summit County |
| 105 | Washington Court House | 14,446 | +0.0% | Fayette County |
| 106 | Tallmadge | 18,412 | +0.0% | Summit County +1 |
| 107 | Riverside | 24,472 | -0.0% | Montgomery County |
| 108 | Trotwood | 23,073 | -0.0% | Montgomery County |
| 109 | New Franklin | 13,859 | -0.0% | Summit County |
| 110 | Clayton | 13,296 | -0.1% | Montgomery County |
| 111 | Bellefontaine | 14,100 | -0.1% | Logan County |
| 112 | Wickliffe | 12,659 | -0.1% | Lake County |
| 113 | Cuyahoga Falls | 50,979 | -0.1% | Summit County |
| 114 | Chardon | 5,233 | -0.2% | Geauga County |
| 115 | Wilmington | 12,639 | -0.2% | Clinton County |
| 116 | Loveland | 13,277 | -0.2% | Hamilton County +2 |
| 117 | Orrville | 8,442 | -0.2% | Wayne County |
| 118 | Akron | 189,664 | -0.3% | Summit County |
| 119 | Macedonia | 12,139 | -0.3% | Summit County |
| 120 | St. Marys | 8,376 | -0.3% | Auglaize County |
| 121 | Willoughby Hills | 9,986 | -0.3% | Lake County |
| 122 | Ontario | 6,648 | -0.3% | Richland County |
| 123 | Kirtland | 6,914 | -0.3% | Lake County |
| 124 | Mentor-on-the-Lake | 7,106 | -0.3% | Lake County |
| 125 | Rittman | 6,119 | -0.3% | Wayne County +1 |
| 126 | Cortland | 7,069 | -0.4% | Trumbull County |
| 127 | Sharonville | 14,040 | -0.4% | Hamilton County +1 |
| 128 | Gahanna | 35,544 | -0.5% | Franklin County |
| 129 | Willowick | 14,159 | -0.5% | Lake County |
| 130 | Fremont | 15,814 | -0.5% | Sandusky County |
| 131 | Alliance | 21,523 | -0.5% | Stark County +1 |
| 132 | Jackson | 6,226 | -0.5% | Jackson County |
| 133 | Shelby | 9,238 | -0.5% | Richland County |
| 134 | Delphos | 7,074 | -0.6% | Allen County +1 |
| 135 | Eaton | 8,337 | -0.6% | Preble County |
| 136 | Broadview Heights | 19,792 | -0.7% | Cuyahoga County |
| 137 | Steubenville | 18,029 | -0.7% | Jefferson County |
| 138 | Mentor | 47,113 | -0.7% | Lake County |
| 139 | Forest Park | 20,033 | -0.7% | Hamilton County |
| 140 | Ada | 5,293 | -0.7% | Hardin County |
| 141 | Canfield | 7,628 | -0.7% | Mahoning County |
| 142 | Ravenna | 11,236 | -0.7% | Portage County |
| 143 | Hubbard | 7,565 | -0.7% | Trumbull County |
| 144 | Brookville | 5,946 | -0.7% | Montgomery County |
| 145 | Cambridge | 10,036 | -0.7% | Guernsey County |
| 146 | Brunswick | 35,166 | -0.7% | Medina County |
| 147 | Sidney | 20,392 | -0.8% | Shelby County |
| 148 | Springfield | 58,138 | -0.8% | Clark County |
| 149 | Whitehall | 19,940 | -0.8% | Franklin County |
| 150 | Greenville | 12,701 | -0.8% | Darke County |
| 151 | North Canton | 17,677 | -0.8% | Stark County |
| 152 | Bellevue | 8,166 | -0.8% | Sandusky County +2 |
| 153 | Geneva | 5,871 | -0.8% | Ashtabula County |
| 154 | New Carlisle | 5,511 | -0.9% | Clark County |
| 155 | Dayton | 136,346 | -0.9% | Montgomery County |
| 156 | Independence | 7,518 | -0.9% | Cuyahoga County |
| 157 | Worthington | 14,649 | -0.9% | Franklin County |
| 158 | Upper Sandusky | 6,627 | -0.9% | Wyandot County |
| 159 | Wooster | 26,982 | -0.9% | Wayne County |
| 160 | Niles | 18,238 | -1.0% | Trumbull County |
| 161 | Bucyrus | 11,567 | -1.0% | Crawford County |
| 162 | Mount Healthy | 6,916 | -1.0% | Hamilton County |
| 163 | Oregon | 19,726 | -1.0% | Lucas County |
| 164 | Reading | 10,482 | -1.0% | Hamilton County |
| 165 | North College Hill | 9,552 | -1.0% | Hamilton County |
| 166 | Stow | 34,101 | -1.0% | Summit County |
| 167 | Bowling Green | 30,463 | -1.1% | Wood County |
| 168 | Campbell | 7,751 | -1.1% | Mahoning County |
| 169 | Ashtabula | 17,775 | -1.1% | Ashtabula County |
| 170 | Highland Heights | 8,612 | -1.1% | Cuyahoga County |
| 171 | Struthers | 9,891 | -1.2% | Mahoning County |
| 172 | Rocky River | 21,468 | -1.2% | Cuyahoga County |
| 173 | Vandalia | 15,013 | -1.2% | Montgomery County |
| 174 | Medina | 25,757 | -1.2% | Medina County |
| 175 | Kenton | 7,857 | -1.2% | Hardin County |
| 176 | Warren | 38,683 | -1.2% | Trumbull County |
| 177 | Chillicothe | 21,769 | -1.2% | Ross County |
| 178 | North Royalton | 30,894 | -1.2% | Cuyahoga County |
| 179 | Girard | 9,454 | -1.3% | Trumbull County |
| 180 | Cheviot | 8,640 | -1.3% | Hamilton County |
| 181 | Youngstown | 59,123 | -1.3% | Mahoning County +1 |
| 182 | Galion | 10,304 | -1.3% | Crawford County |
| 183 | Eastlake | 17,423 | -1.3% | Lake County |
| 184 | Marion | 35,576 | -1.3% | Marion County |
| 185 | Seven Hills | 11,560 | -1.3% | Cuyahoga County |
| 186 | Wauseon | 7,455 | -1.4% | Fulton County |
| 187 | Parma Heights | 20,524 | -1.4% | Cuyahoga County |
| 188 | Kettering | 57,028 | -1.4% | Montgomery County +1 |
| 189 | Wapakoneta | 9,817 | -1.4% | Auglaize County |
| 190 | Englewood | 13,282 | -1.4% | Montgomery County |
| 191 | Bryan | 8,601 | -1.4% | Williams County |
| 192 | Strongsville | 45,768 | -1.4% | Cuyahoga County |
| 193 | Beachwood | 13,820 | -1.4% | Cuyahoga County |
| 194 | Solon | 23,875 | -1.4% | Cuyahoga County |
| 195 | West Carrollton | 12,911 | -1.4% | Montgomery County |
| 196 | Bay Village | 15,903 | -1.5% | Cuyahoga County |
| 197 | Willard | 6,106 | -1.5% | Huron County |
| 198 | Napoleon | 8,724 | -1.5% | Henry County |
| 199 | Westerville | 38,612 | -1.6% | Franklin County +1 |
| 200 | Kent | 27,720 | -1.6% | Portage County |
| 201 | Salem | 11,685 | -1.6% | Columbiana County +1 |
| 202 | Reminderville | 5,345 | -1.7% | Summit County |
| 203 | New Philadelphia | 17,378 | -1.7% | Tuscarawas County |
| 204 | Port Clinton | 5,915 | -1.7% | Ottawa County |
| 205 | Upper Arlington | 36,140 | -1.7% | Franklin County |
| 206 | Tiffin | 17,729 | -1.7% | Seneca County |
| 207 | Oakwood | 9,400 | -1.7% | Montgomery County |
| 208 | Maumee | 13,625 | -1.7% | Lucas County |
| 209 | Toledo | 265,638 | -1.7% | Lucas County |
| 210 | Cleveland | 365,379 | -1.7% | Cuyahoga County |
| 211 | Dover | 12,946 | -1.8% | Tuscarawas County |
| 212 | Bedford Heights | 10,791 | -1.9% | Cuyahoga County |
| 213 | Belpre | 6,588 | -1.9% | Washington County |
| 214 | Norton | 11,423 | -2.0% | Summit County +1 |
| 215 | Middleburg Heights | 15,672 | -2.0% | Cuyahoga County |
| 216 | Canton | 69,211 | -2.0% | Stark County |
| 217 | Parma | 79,350 | -2.0% | Cuyahoga County |
| 218 | Oxford | 22,585 | -2.0% | Butler County |
| 219 | Barberton | 24,624 | -2.0% | Summit County |
| 220 | Mayfield Heights | 19,886 | -2.1% | Cuyahoga County |
| 221 | Logan | 7,142 | -2.1% | Hocking County |
| 222 | Richmond Heights | 10,552 | -2.1% | Cuyahoga County |
| 223 | North Olmsted | 31,690 | -2.1% | Cuyahoga County |
| 224 | Toronto | 5,187 | -2.1% | Jefferson County |
| 225 | Milford | 6,433 | -2.1% | Clermont County +1 |
| 226 | Warrensville Heights | 13,450 | -2.1% | Cuyahoga County |
| 227 | Grafton | 5,804 | -2.2% | Lorain County |
| 228 | South Euclid | 21,363 | -2.2% | Cuyahoga County |
| 229 | Bedford | 12,834 | -2.2% | Cuyahoga County |
| 230 | Lima | 34,690 | -2.2% | Allen County |
| 231 | Brook Park | 18,142 | -2.2% | Cuyahoga County |
| 232 | Lyndhurst | 13,700 | -2.3% | Cuyahoga County |
| 233 | Groveport | 5,867 | -2.3% | Franklin County |
| 234 | Maple Heights | 23,081 | -2.3% | Cuyahoga County |
| 235 | Brooklyn | 11,072 | -2.3% | Cuyahoga County |
| 236 | Euclid | 48,421 | -2.3% | Cuyahoga County |
| 237 | Shaker Heights | 28,689 | -2.4% | Cuyahoga County |
| 238 | Ashland | 18,770 | -2.4% | Ashland County |
| 239 | Fairview Park | 16,860 | -2.4% | Cuyahoga County |
| 240 | Garfield Heights | 29,014 | -2.4% | Cuyahoga County |
| 241 | Marietta | 13,039 | -2.4% | Washington County |
| 242 | East Cleveland | 13,402 | -2.6% | Cuyahoga County |
| 243 | Cleveland Heights | 44,064 | -2.6% | Cuyahoga County |
| 244 | Uhrichsville | 5,122 | -2.6% | Tuscarawas County |
| 245 | Lakewood | 49,517 | -2.6% | Cuyahoga County |
| 246 | Berea | 17,998 | -2.7% | Cuyahoga County |
| 247 | East Liverpool | 9,651 | -2.8% | Columbiana County |
| 248 | Martins Ferry | 6,050 | -3.0% | Belmont County |
| 249 | Sandusky | 24,174 | -3.6% | Erie County |
| 250 | Huron | 6,630 | -3.8% | Erie County |
| 251 | Ironton | 10,147 | -3.8% | Lawrence County |
| 252 | Portsmouth | 17,489 | -3.9% | Scioto County |
| 253 | University Heights | 13,265 | -4.5% | Cuyahoga County |
| 254 | Bexley | 12,793 | -8.0% | Franklin County |
Questions people ask
What is the fastest-growing city in Ohio?
Sunbury, up 44.3% from July 2020 to July 2024 among places of 5,000+, to 9,705 residents.
Which Ohio city added the most people?
Columbus, which gained 26,797 residents from July 2020 to July 2024.
How many Ohio cities are shrinking?
148 of 254 places of 5,000+ had the same or fewer residents in July 2024 than in July 2020.
Why use places of 5,000 or more?
Small towns can swing by double-digit percentages from a few new homes, and Census estimates for them carry more uncertainty. The 5,000 floor keeps the ranking to places where a percentage means something.
Sources and data as of
Data as of: Census Vintage 2024 population estimates, 2024 Gazetteer land area and internal points, SAIPE 2023 median household income.
How every number is computed: methodology. Spotted a wrong figure? Report an error.