It’s useful to count and compare charging stations and chargers, since some stations have one or two chargers, and others have ten or more. State governments have differing priorities and offer differing incentives related to the electrification of their state’s vehicle fleets, and EV network charging companies have differing strategies in terms of where they put stations and how many and of what type of chargers they install in each station.
1.1 Number of stations
Station availability has increased dramatically over the 10 years ending in 2025, more than quadrupling (Figure 1.1 panel A). California has about four times the number of stations as New York, the second-ranked state.
Figure 1.1: EV non-residential charging stations in the US by year and state 2016-2025
1.2 Number of chargers
In terms of chargers, there were five times as many available at the end of 2025 compared to 10 years earlier. California has more than three times as many as New York.
Since states vary widely in population, the normalized view people_per_charger is helpful. This plot shows a significant increase in and convergence of charger density happening in the states (Figure 1.3). The availability of chargers improved dramatically between 2016 and 2020 (panel B) then continued to improve as the charger density converges for all states below 5000 people per charger by 2025 (panel C).
Show the code
p1 <- dta_people_per_charger_state |>mutate(avg_people_per_charger =mean(people_per_charger),.by = yr) |>ggplot() +geom_col(aes(yr, avg_people_per_charger)) +scale_x_discrete(labels = year_labels) +scale_y_continuous(labels =label_number(scale_cut =cut_short_scale())) +labs(subtitle ="A. US at year-end",x =NULL,y =NULL )p2 <- dta_people_per_charger_state |>ggplot() +geom_line(aes(yr, people_per_charger, group = state),linewidth =0.2,alpha =0.2) +# geom_text_repel(data = dta_labels_for_plot,# aes(yr, n_chargers, group = state, label = state),# nudge_x = 0.5,# direction = "y") +scale_x_discrete(labels = year_labels) +scale_y_continuous(labels =label_number(scale_cut =cut_short_scale())) +coord_cartesian(xlim =c(NA, 2026)) +labs(subtitle ="B. By state",x =NULL,y =NULL )p3 <- dta_people_per_charger_state |>ggplot() +geom_line(aes(yr, people_per_charger, group = state),linewidth =0.2,alpha =0.2) +scale_x_discrete(labels = year_labels) +scale_y_continuous(labels =label_number(scale_cut =cut_short_scale())) +coord_cartesian(xlim =c(NA, 2026),ylim =c(NA, 20000)) +labs(subtitle ="C. Zooming in: by state (2020-2025)",x =NULL,y =NULL )p1 + p2 + p3 +plot_annotation(title ="People per charger in US states",subtitle ="All types in USA",caption = my_caption )
Figure 1.3: People per charger in the US by year and state 2016-2025
There is no relationship between state population and people per charger. California, the most populous state, has one of the lowest ratios of people per charger, and Vermont, one of the least populous states, has a similar ratio.
Show the code
best_worst <-bind_rows( dta_people_per_charger_state |>filter(yr ==2025) |>slice_min(order_by = people_per_charger,n =5) |>mutate(category ="best"), dta_people_per_charger_state |>filter(yr ==2025) |>slice_max(order_by = people_per_charger,n =5) |>mutate(category ="worst"))dta_people_per_charger_state |>filter(yr ==2025) |>ggplot(aes(pop, people_per_charger)) +geom_point(alpha =0.6) +geom_text_repel(data = best_worst,aes(label = state, color = category),nudge_x =0.001,direction ="y") +scale_color_manual(values =c("forestgreen", "firebrick")) +scale_x_log10(labels =label_number(scale_cut =cut_short_scale())) +guides(color ="none") +labs(title ="There is no relationship between state populuation\nand people per charger",subtitle =glue("People per charger in US states at end of 2025","\nStates with best and worst ratios highlighted"),x ="State population (log10 scale)",y ="People per charger",caption = my_caption )
Figure 1.4: There is no relationship between state population and people per charger
1.4 Chargers per station
Each station offers one or more chargers. Why is there a systematic drop in chargers per station between 2020 and 2021 (Figure 1.5)? Was there a change in data standards? Reporting policy? I have not found evidence in the data supporting any of these explanations.
Figure 1.5: EV chargers per station by state in the US by year and state 2016-2025
1.5 Charger types
There are three main charger types. These definitions are from the US Department of Transportation1
L1 charging: charging through a common residential 120-volt (120V) AC outlet. Level 1 chargers can take 40-50+ hours to charge a BEV to 80 percent from empty and 5-6 hours for a PHEV.
L2 charging: higher-rate AC charging through 240V (in residential applications) or 208V (in commercial applications) electrical service, and is common for home, workplace, and public charging. Level 2 chargers can charge a BEV to 80 percent from empty in 4-10 hours and a PHEV in 1-2 hours.
DC charging (also called direct current fast charging (DCFC): rapid charging along heavy-traffic corridors at installed stations. DCFC equipment can charge a BEV to 80 percent in just 20 minutes to 1 hour. Most PHEVs currently on the market do not work with fast chargers.
Figure 1.9: Smaller EV network companies are pursuing differing strategies regarding the types of chargers they install
There are some EV networks that show up in the data only in 2025, so trend charts are not meaningful (Figure 1.10). Among these companies iONNA made the biggest splash. From wikipedia:2
iONNA was formed in July 2023 as a joint venture between automakers BMW, Mercedes-Benz, General Motors, Stellantis, Hyundai, Honda, and Kia. In July 2024, Toyota would join the venture. The automakers set a goal of electrifying 30,000 new charge points in North America by 2030, which would put iONNA on the same scale as the Electrify America network by Volkswagen and the Supercharger network by Tesla.
It’s headquartered in Durham, NC, one of the counties in the NC triangle. See Section 4.2.
Show the code
dta_for_plot_sparse <- dta_for_plot |>filter(yr ==2025) |>filter(any(n_years_data <=1),.by = ev_network) |>filter(n >0) |>mutate(ev_network =fct_reorder(ev_network, n, sum))dta_for_plot_sparse |>ggplot() +geom_point(aes(n, ev_network, color = charger_type),size =2,alpha =0.8) +# scale_color_viridis_d(end = 0.9) +scale_color_manual(values =c("#663399", "steelblue")) +#guides(color =guide_legend(position ="inside")) +theme(legend.position.inside =c(0.8, 0.2),plot.title.position ="plot") +expand_limits(x =0) +labs(title ="Charger count for EV networks with data only in 2025",subtitle ="New investers. Showing 2025 charger count. All types in USA.",x =NULL,y =NULL,caption = my_caption )
Figure 1.10: Charger count for EV networks with data only in 2025 reveals new investers