North Carolina Air Quality
Mecklenburg County is the worst air in North Carolina right now at an index of 53, which is Moderate, from fine particles (PM2.5). AirNow carries 94 reporting areas in the state. No air quality alert is in force. Wildfire smoke has been drawn over 151 of the state’s towns today.
- Reporting areas
- 94
- Worst index now
- 53
- Alerts in force
- 0
- Towns under smoke
- 151
Fine particles on the map
Forecast fine particulate matter from NOAA’s National Air Quality Forecast Capability over North Carolina. Open it for the live map, where it pans and zooms.























Open the live map with the particulate forecast
Map layer from NOAA National Air Quality Forecast Capability. Boundaries from the Iowa Environmental Mesonet.
Alerts in force
An Air Quality Alert is issued by the National Weather Service on behalf of a state or local agency when pollution is expected to reach a level that harms health. An Air Stagnation Advisory means the air will not move enough to clear what is already in it.
None are in force in North Carolina right now. All North Carolina warnings.
By city, now and the days ahead94
Every AirNow reporting area in North Carolina: what its monitors measured this hour, and what the state or local agency that forecasts for it expects today and tomorrow. Each area links to the nearest town’s page.
| Reporting area | Now | Category now | Today | Tomorrow | Pollutant |
|---|---|---|---|---|---|
| Mecklenburg County | 53 | Moderate | Moderate | Good | PM2.5 |
| Northampton County | 52 | Moderate | Good | Good | PM2.5 |
| Cumberland County | 51 | Moderate | Moderate | Good | PM2.5 |
| Rowan County | 51 | Moderate | Moderate | Good | PM2.5 |
| Forsyth County-Winston-Salem-Greensboro-High Point | 48 | Good | Moderate | Good | PM2.5 |
| North Ridges | 48 | Good | Moderate | Good | Ozone |
| Buncombe County | 45 | Good | Moderate | Good | PM2.5 |
| Johnston County | 44 | Good | Moderate | Good | PM2.5 |
| Catawba County | 43 | Good | Moderate | Good | PM2.5 |
| Swain County | 43 | Good | Moderate | Good | PM2.5 |
| Durham County | 42 | Good | Moderate | Good | PM2.5 |
| South Ridges | 42 | Good | Moderate | Good | Ozone |
| Wake County | 42 | Good | Moderate | Good | PM2.5 |
| Edgecombe County | 38 | Good | Moderate | Good | PM2.5 |
| Mitchell County | 33 | Good | Moderate | Good | PM2.5 |
| Pitt County | 33 | Good | Moderate | Good | PM2.5 |
| New Hanover County | 32 | Good | Moderate | Good | PM2.5 |
| Montgomery County | 24 | Good | Moderate | Good | Ozone |
| Person County | 19 | Good | Moderate | Good | Ozone |
| Granville County | 18 | Good | Moderate | Good | Ozone |
| Union County | 18 | Good | Moderate | Good | Ozone |
| Martin County | 15 | Good | Good | Good | Ozone |
| Lincoln County | 14 | Good | Moderate | Good | Ozone |
| Carteret County | 10 | Good | Moderate | Good | Ozone |
| Alexander County | 8 | Good | Moderate | Good | Ozone |
| Lenoir County | 8 | Good | Moderate | Good | Ozone |
| Caldwell County | 5 | Good | Moderate | Good | Ozone |
| Haywood County | 5 | Good | Moderate | Good | Ozone |
| Avery County | 3 | Good | Moderate | Good | Ozone |
| Alleghany County | No reading | Moderate | Good | PM2.5 | |
| Anson County | No reading | Moderate | Good | PM2.5 | |
| Ashe County | No reading | Moderate | Good | PM2.5 | |
| Beaufort County | No reading | Good | Good | Ozone | |
| Bertie County | No reading | Good | Good | Ozone | |
| Bladen County | No reading | Moderate | Good | PM2.5 | |
| Brunswick County | No reading | Moderate | Good | PM2.5 | |
| Burke County | No reading | Moderate | Good | PM2.5 | |
| Cabarrus County | No reading | Moderate | Good | PM2.5 | |
| Camden County | No reading | Good | Good | Ozone | |
| Chatham County | No reading | Moderate | Good | PM2.5 | |
| Cherokee County | No reading | Moderate | Good | PM2.5 | |
| Chowan County | No reading | Good | Good | Ozone | |
| Clay County | No reading | Moderate | Good | PM2.5 | |
| Cleveland County | No reading | Moderate | Good | PM2.5 | |
| Columbus County | No reading | Moderate | Good | PM2.5 | |
| Craven County | No reading | Moderate | Good | PM2.5 | |
| Currituck County | No reading | Good | Good | Ozone | |
| Dare County | No reading | Good | Good | Ozone | |
| Duplin County | No reading | Moderate | Good | PM2.5 | |
| Franklin County | No reading | Moderate | Good | PM2.5 | |
| Gaston County | No reading | Moderate | Good | PM2.5 | |
| Gates County | No reading | Good | Good | Ozone | |
| Graham County | No reading | Moderate | Good | PM2.5 | |
| Greene County | No reading | Moderate | Good | PM2.5 | |
| Halifax County | No reading | Good | Good | Ozone | |
| Harnett County | No reading | Moderate | Good | PM2.5 | |
| Henderson County | No reading | Moderate | Good | PM2.5 | |
| Hertford County | No reading | Good | Good | Ozone | |
| Hoke County | No reading | Moderate | Good | PM2.5 | |
| Hyde County | No reading | Good | Good | Ozone | |
| Iredell County | No reading | Moderate | Good | Ozone | |
| Jackson County | No reading | Moderate | Good | PM2.5 | |
| Jones County | No reading | Moderate | Good | PM2.5 | |
| Lee County | No reading | Moderate | Good | PM2.5 | |
| Macon County | No reading | Moderate | Good | PM2.5 | |
| Madison County | No reading | Moderate | Good | PM2.5 | |
| McDowell County | No reading | Moderate | Good | PM2.5 | |
| Moore County | No reading | Moderate | Good | PM2.5 | |
| Nash County | No reading | Moderate | Good | PM2.5 | |
| Onslow County | No reading | Moderate | Good | PM2.5 | |
| Orange County | No reading | Moderate | Good | PM2.5 | |
| Pamlico County | No reading | Moderate | Good | PM2.5 | |
| Pasquotank County | No reading | Good | Good | Ozone | |
| Pender County | No reading | Moderate | Good | PM2.5 | |
| Perquimans County | No reading | Good | Good | Ozone | |
| Polk County | No reading | Moderate | Good | PM2.5 | |
| Richmond County | No reading | Moderate | Good | PM2.5 | |
| Robeson County | No reading | Moderate | Good | PM2.5 | |
| Rutherford County | No reading | Moderate | Good | PM2.5 | |
| Sampson County | No reading | Moderate | Good | PM2.5 | |
| Scotland County | No reading | Moderate | Good | PM2.5 | |
| Stanly County | No reading | Moderate | Good | PM2.5 | |
| Surry County | No reading | Moderate | Good | PM2.5 | |
| Transylvania County | No reading | Moderate | Good | PM2.5 | |
| Tyrrell County | No reading | Good | Good | Ozone | |
| Vance County | No reading | Moderate | Good | PM2.5 | |
| Warren County | No reading | Good | Good | Ozone | |
| Washington County | No reading | Good | Good | Ozone | |
| Watauga County | No reading | Moderate | Good | PM2.5 | |
| Wayne County | No reading | Moderate | Good | PM2.5 | |
| Wilkes County | No reading | Moderate | Good | PM2.5 | |
| Wilson County | No reading | Moderate | Good | PM2.5 | |
| Yadkin County | No reading | Moderate | Good | PM2.5 | |
| Yancey County | No reading | Moderate | Good | PM2.5 |
The forecaster’s discussion
Written by Forsyth County Office of Environmental Assistance and Protection for Forsyth County-Winston-Salem-Greensboro-High Point and filed with AirNow.
Morning cloud cover has kept ozone production lower than expected, but sunnier skies this afternoon will likely allow ozone AQI to reach Code YELLOW. Particle pollution also remains elevated in the Code YELLOW range under a weakening surface high pressure ridge. Monday will likely be hot and humid for much of the day, allowing ozone and particle pollution levels to easily reach Codde YELLOW AQI for both pollutants. However, an advancing cold front from the north will likely bring scattered showers and storms to the Triad later in the afternoon and evening. Behind the front, air quality levels are expected to drop to Code GREEN by late Monday evening. Cold air damming begins to set up over the Triad and will settle over the region the next few days to bring cooler and cloudier conditions Tuesday and Wednesday. With that said, air quality levels will easily remain Code GREEN through mid-week as the cold air wedge takes hold. (Payne)
Smoke
Where NOAA’s Hazard Mapping System analysts have drawn wildfire smoke over North Carolina in today’s satellite imagery. Smoke drawn overhead is not always smoke at ground level; each town’s page carries the near-surface forecast.
- Medium Charlotte, Raleigh, West Raleigh, Greensboro, Durham, Winston-Salem, Fayetteville, Cary, Wilmington, High Point, Asheville, Greenville, Concord, Gastonia, Jacksonville, Chapel Hill and 135 more
What this means
The index runs from 0 to 500. Good is 0 to 50, Moderate to 100, Unhealthy for Sensitive Groups to 150, Unhealthy to 200, Very Unhealthy to 300, and Hazardous above that. The figure reported for a place is the highest index among the pollutants measured there, and the pollutant that produced it is named beside it.
What these numbers are. An index beside a monitor’s name is a measurement, published hourly by AirNow and preliminary until the operating agency certifies it. A category for today or tomorrow is a state or local agency forecaster’s own forecast for a reporting area. An hourly index is NOAA’s air quality model on a five-kilometer grid, not a reading from any instrument. Where a town has no monitor within reach, only the model figures appear, and the page says so.
Towns
Air quality for any town in North Carolina: what is measured nearby, the category forecast for today and tomorrow, and NOAA’s model hour by hour. Largest first.
- Charlotte911,311 people
- Raleigh482,295 people
- West Raleigh338,759 people
- Greensboro285,342 people
- Durham257,636 people
- Winston-Salem241,218 people
- Fayetteville201,963 people
- Cary159,769 people
- Wilmington115,933 people
- High Point110,268 people
- Asheville95,056 people
- Greenville90,597 people
- Concord87,696 people
- Gastonia74,543 people
- Jacksonville67,357 people
- Chapel Hill59,568 people
- Rocky Mount55,806 people
- Huntersville52,704 people
- Burlington52,472 people
- Wilson49,643 people
- Kannapolis46,144 people
- Apex45,585 people
- Hickory40,374 people
- Wake Forest38,199 people
- Indian Trail37,073 people
- Mooresville36,009 people
- Goldsboro35,826 people
- Monroe34,623 people
- Salisbury34,017 people
- Holly Springs31,377 people
- Matthews30,678 people
- New Bern30,070 people
- Fort Bragg29,183 people
- Sanford29,144 people
- Cornelius28,092 people
- Garner28,053 people
- Thomasville27,061 people
- Statesville26,221 people
- Asheboro26,103 people
- Mint Hill25,627 people
- Fuquay-Varina23,907 people
- Morrisville23,820 people
- Kernersville23,811 people
- Lumberton21,667 people
- Kinston21,337 people
- Carrboro21,156 people
- Havelock20,364 people
- Shelby20,189 people
- Clemmons19,844 people
- Lexington19,326 people
- Clayton19,304 people
- Boone18,156 people
- Elizabeth City17,988 people
- Leland17,924 people
- Lenoir17,888 people
- Morganton16,692 people
- Hope Mills16,163 people
- Albemarle16,003 people
- Pinehurst15,752 people
- Laurinburg15,507 people
- Eden15,403 people
- Roanoke Rapids15,345 people
- Henderson15,271 people
- Stallings15,270 people
- Masonboro14,826 people
- Graham14,647 people
- Harrisburg14,539 people
- Knightdale14,256 people
- Murraysville14,215 people
- Mount Holly14,176 people
- Reidsville14,067 people
- Hendersonville13,814 people
- Mebane13,698 people
- Lewisville13,567 people
- Southern Pines13,539 people
- Waxhaw13,495 people
- Piney Green13,293 people
- Spring Lake13,234 people
- Newton13,035 people
- Davidson12,207 people
- Smithfield12,022 people
- Archdale11,564 people
- Tarboro11,164 people
- Lincolnton10,900 people
- Summerfield10,861 people
- Kings Mountain10,760 people
- Belmont10,533 people
- Weddington10,531 people
- Mount Airy10,354 people
- Elon10,024 people
- Waynesville9,809 people
- Washington9,788 people
- Dunn9,723 people
- Winterville9,464 people
- Morehead City9,347 people
- Rockingham9,220 people
- Myrtle Grove8,875 people
- Clinton8,767 people
- Saint Stephens8,759 people
- Oxford8,742 people
- Pineville8,429 people
- Siler City8,396 people
- Wesley Chapel8,355 people
- Half Moon8,352 people
- Roxboro8,334 people
- Black Mountain8,278 people
- Kings Grant8,278 people
- Conover8,248 people
- Marion7,861 people
- Butner7,751 people
- Brevard7,735 people
- Pope Air Force Base (historical)7,680 people
- Fletcher7,582 people
- Oak Island7,507 people
- Aberdeen7,343 people
- Forest City7,282 people
- Mills River7,162 people
- King7,059 people
- Kill Devil Hills7,058 people
- Etowah6,944 people
- Gibsonville6,773 people
- Ogden6,766 people
- Oak Ridge6,671 people
- Trinity6,669 people
- Unionville6,547 people
- Hamlet6,454 people
- Hillsborough6,415 people
- Woodfin6,349 people
- Selma6,307 people
- Rolesville6,289 people
- Wendell6,285 people
- Cullowhee6,228 people
- Marvin6,181 people
- Carolina Beach6,137 people
- Cherryville5,974 people
- James City5,899 people
- Boiling Spring Lakes5,789 people
- Long Beach5,618 people
- Silver Lake5,598 people
- Whiteville5,589 people
- Wadesboro5,584 people
- Bessemer City5,548 people
- Williamston5,508 people
- Nashville5,460 people
- Stokesdale5,340 people
- South Gastonia5,312 people
- Mocksville5,151 people
- Briar Chapel5,108 people
- Sawmills5,104 people
- Lake Norman of Catawba5,075 people
- Ayden5,053 people
- East Flat Rock4,995 people
- Angier4,970 people
- Walkertown4,969 people
- Zebulon4,964 people
- Ahoskie4,910 people
- Wrightsboro4,896 people
- Seven Lakes4,888 people
- Longview4,871 people
- Raeford4,860 people
- Edenton4,849 people
- Farmville4,758 people
- Midway4,742 people
- Mount Olive4,728 people
- Newport4,723 people
- Pleasant Garden4,715 people
- Archer Lodge4,708 people
- Erwin4,679 people
- Boiling Springs4,674 people
- Granite Falls4,662 people
- Dallas4,622 people
- Farmville4,613 people
- Seagate4,590 people
- Swannanoa4,576 people
- Valdese4,459 people
- Creedmoor4,425 people
- River Road4,394 people
- Walkertown4,331 people
- Cramerton4,328 people
- Royal Pines4,272 people
- Spindale4,263 people
- North Wilkesboro4,226 people
- Bethlehem4,214 people
- Beaufort4,212 people
- Pittsboro4,198 people
- Canton4,190 people
- Trent Woods4,189 people
- China Grove4,182 people
- Rutherfordton4,182 people
- Welcome4,162 people
- Randleman4,153 people
- Burgaw4,100 people
- Hampstead4,083 people
- Elkin4,060 people
- Westport4,026 people
- Shallotte3,991 people
- Wallace3,964 people
- Gamewell3,957 people
- Franklin3,940 people
- Weaverville3,936 people
249 smaller towns
- Tabor City3,927 people
- Forest Oaks3,890 people
- Tyro3,879 people
- Elroy3,869 people
- Wingate3,854 people
- Sunset Beach3,801 people
- Lake Park3,789 people
- Windsor3,785 people
- Carolina Shores3,767 people
- Moyock3,759 people
- Northchase3,747 people
- Jamestown3,737 people
- East Rockingham3,736 people
- Hudson3,721 people
- Emerald Isle3,720 people
- Stanley3,685 people
- Fairview3,684 people
- Eastover3,677 people
- Plymouth3,658 people
- Lowell3,649 people
- Mountain Home3,622 people
- Franklin3,619 people
- Mar-Mac3,615 people
- Benson3,591 people
- Elizabethtown3,586 people
- Ranlo3,556 people
- Louisburg3,553 people
- Mountain View3,552 people
- Wilkesboro3,531 people
- Polkton3,495 people
- Lillington3,476 people
- Southport3,475 people
- Kitty Hawk3,447 people
- Red Springs3,433 people
- Troy3,427 people
- Red Oak3,424 people
- Bayshore3,393 people
- Midland3,379 people
- Maiden3,369 people
- Dana3,329 people
- Flat Rock3,313 people
- Rockfish3,298 people
- Spencer3,291 people
- Warsaw3,175 people
- Saint James3,165 people
- River Bend3,149 people
- Swansboro3,149 people
- Whispering Pines3,148 people
- Rural Hall3,126 people
- Landis3,116 people
- Wallburg3,078 people
- Brices Creek3,073 people
- Pembroke3,004 people
- Murfreesboro3,002 people
- Granite Quarry2,995 people
- Locust2,966 people
- Fairfield Harbour2,952 people
- Lowesville2,945 people
- Buies Creek2,942 people
- Yadkinville2,927 people
- Enochville2,925 people
- Mineral Springs2,908 people
- Nags Head2,908 people
- Southern Shores2,867 people
- South Rosemary2,836 people
- Cajahs Mountain2,823 people
- La Grange2,804 people
- Skippers Corner2,785 people
- Wentworth2,765 people
- Glen Raven2,750 people
- Lake Junaluska2,734 people
- Fairmont2,697 people
- Liberty2,683 people
- Fairview2,678 people
- Grifton2,673 people
- Icard2,664 people
- Sneads Ferry2,646 people
- Marshville2,638 people
- Brogden2,633 people
- Sylva2,617 people
- Tobaccoville2,584 people
- Wrightsville Beach2,564 people
- Bermuda Run2,561 people
- Troutman2,544 people
- Mayodan2,470 people
- Maxton2,451 people
- Enfield2,427 people
- Coats2,408 people
- Haw River2,402 people
- Scotts Mill2,400 people
- Carthage2,395 people
- Norwood2,394 people
- Edneyville2,367 people
- Horse Shoe2,351 people
- Fearrington Village2,339 people
- Broad Creek2,334 people
- Mulberry2,332 people
- Laurel Park2,314 people
- Denver2,309 people
- Wilsons Mills2,277 people
- Jonesville2,257 people
- Mars Hill2,256 people
- Pumpkin Center2,222 people
- Salem2,218 people
- Madison2,197 people
- Surf City2,193 people
- Windsor2,192 people
- Green Level2,160 people
- Green Level2,158 people
- Hertford2,148 people
- Rockwell2,144 people
- Cherokee2,138 people
- Franklinton2,135 people
- Spruce Pine2,134 people
- Fairplains2,120 people
- Calabash2,119 people
- Millers Creek2,112 people
- Pumpkin Center2,107 people
- Holly Ridge2,096 people
- Kure Beach2,091 people
- Taylorsville2,078 people
- Valley Hill2,070 people
- Cape Carteret2,066 people
- Four Oaks2,050 people
- Saint Pauls2,035 people
- Fruitland2,031 people
- Neuse Forest2,005 people
- Yanceyville2,004 people
- Sharpsburg2,003 people
- Hildebran2,000 people
- Princeville1,991 people
- Badin1,981 people
- Sea Breeze1,969 people
- Scotland Neck1,965 people
- Plain View1,961 people
- Avery Creek1,950 people
- Belville1,936 people
- Moravian Falls1,901 people
- Oakboro1,874 people
- Drexel1,866 people
- Pine Level1,861 people
- Cricket1,855 people
- Hays1,851 people
- Mount Pleasant1,821 people
- Chadbourn1,791 people
- Cordova1,775 people
- Andrews1,752 people
- Bladenboro1,726 people
- Sparta1,726 people
- Tryon1,721 people
- Ramseur1,701 people
- Biscoe1,690 people
- Richlands1,689 people
- Maury1,685 people
- Hemby Bridge1,676 people
- Rose Hill1,665 people
- Burnsville1,660 people
- Denton1,657 people
- Hazelwood1,655 people
- Saxapahaw1,648 people
- Wanchese1,642 people
- Burnsville1,641 people
- Navassa1,636 people
- Connelly Springs1,635 people
- Tryon1,632 people
- Bethel1,620 people
- Murphy1,615 people
- Thurmond1,611 people
- Jefferson1,606 people
- Belhaven1,602 people
- Rocky Point1,602 people
- Weldon1,586 people
- Snow Hill1,574 people
- Dobson1,573 people
- Flat Rock1,556 people
- East Spencer1,549 people
- Northlakes1,534 people
- Atlantic Beach1,502 people
- Glen Alpine1,500 people
- Stanfield1,490 people
- Southmont1,470 people
- Lake Waccamaw1,465 people
- Pilot Mountain1,465 people
- Bryson City1,458 people
- Kenly1,450 people
- Toast1,450 people
- Biltmore Forest1,441 people
- Pinebluff1,439 people
- Robersonville1,424 people
- Walnut Cove1,402 people
- Manteo1,388 people
- Foscoe1,370 people
- Claremont1,365 people
- Pine Knoll Shores1,364 people
- Elm City1,350 people
- West Marion1,348 people
- Rutherford College1,341 people
- Beulaville1,330 people
- Pinetops1,319 people
- Stony Point1,317 people
- Spring Hope1,313 people
- West Jefferson1,308 people
- Cedar Point1,304 people
- Blowing Rock1,292 people
- Bent Creek1,287 people
- Princeton1,284 people
- Fremont1,280 people
- Buxton1,273 people
- Broadway1,264 people
- Barker Heights1,254 people
- Laurel Hill1,254 people
- Maggie Valley1,251 people
- West Canton1,247 people
- Bayboro1,243 people
- Clyde1,243 people
- Youngsville1,217 people
- South Henderson1,213 people
- Boonville1,207 people
- Harkers Island1,207 people
- Swepsonville1,204 people
- Roseboro1,203 people
- Castle Hayne1,202 people
- Balfour1,187 people
- Lake Lure1,184 people
- Robbins1,184 people
- Mount Gilead1,180 people
- Cove Creek1,171 people
- Franklinville1,157 people
- Vander1,146 people
- Advance1,138 people
- Banner Elk1,138 people
- Lucama1,132 people
- Brunswick1,131 people
- Pleasant Hill1,087 people
- Norlina1,081 people
- White Plains1,074 people
- Gaston1,067 people
- Hoopers Creek1,056 people
- Rowland1,050 people
- Rhodhiss1,048 people
- Stedman1,045 people
- White Plains1,041 people
- Stoneville1,038 people
- McLeansville1,021 people
- Gorman1,011 people
- Sherrills Ford1,007 people
- Ellerbe1,005 people
- Maysville1,004 people
- Vanceboro1,000 people
Smaller places have pages too; search for one on the air quality landing page.
Sources
Observations and daily forecasts from AirNow, the US Environmental Protection Agency’s program with NOAA, the National Park Service, NASA, tribal, state and local agencies. Hourly forecasts from NOAA’s National Air Quality Forecast Capability. Smoke analysis from NOAA’s Hazard Mapping System. Alerts from the National Weather Service. Index categories and breakpoints are EPA’s, as revised in 2024.