Articles · App ExamplesUpdated September 2026

An EV route planning app is not a map, it is a battery model with stops.

A petrol route ends when you run out of road. An EV route planning app ends when the battery does, and that is why it cannot be a thin layer over a map. Range is not a number printed on the car, it is a function of speed, temperature, elevation, load and how full the pack already is. Everything difficult about an electric vehicle route planner comes out of that one sentence, and it is what separates this build from ordinary route planning apps.

This page covers how a route becomes a state of charge model, which charging station data you can actually get and what the records contain, what none of the free feeds will tell you, and how to order the stops so a plan survives a cold morning.

Work out the charging stops

The short version

Distance is the easy half. The battery is the route.

Two numbers decide whether a planned trip is real: how much energy each leg takes, and how much of the pack you are willing to arrive on. Both of them move. The same 200 miles costs more in January than in June, more at 75 mph than at 60, and more with four people and a loaded roof rack.

A planner that treats range as a fixed brochure figure will send somebody to a charger they cannot reach. A planner that treats charging as a stop with a duration, a connector and a fallback is doing the real job.

The route is a state of charge problem

Work backwards from the state of charge you want on arrival, not forwards from the odometer. For each leg the app needs energy used, which is distance multiplied by consumption, and consumption is the part people get wrong. It rises with speed, with cold, with elevation gain, with a headwind and with weight. A model that uses one average figure for a car will be roughly right in spring and badly wrong on a December motorway run.

The second thing that shapes a plan is that charging is not linear. A pack takes power quickly when it is low and slows as it fills, so several short stops often beat one long one, and the app should aim to arrive low rather than to leave full. Charging time therefore depends on the state of charge you arrive with, which means the stop list and the range model are the same calculation, not two features.

Keep a reserve, and make it a setting rather than a constant. Arriving with a sliver left is fine on a familiar commute and a bad idea on a mountain road in winter. The most useful thing you can store is your own history: real kWh per 100 miles for the roads you actually drive, logged trip by trip, in the same spirit as a car maintenance log app. After a dozen trips your own numbers beat any generic vehicle profile.

Try it

How many charging stops the trip needs

Put your own numbers in. Take the kWh per 100 miles from the trip computer, on a road like the one you are planning.

1 charging stop

Each leg runs about 177 miles before the reserve is gone, and the whole trip wants roughly 115 kWh out of the pack. Raise the cold and hills figure and watch a comfortable plan grow another stop.

Where charging station data comes from

Yes, there is free charging station data behind a documented API, and there are two worth knowing about. The first is the Alternative Fuel Stations API on the United States Department of Energy developer network, which is the dataset behind the official Alternative Fueling Station Locator. It covers the United States and Canada, it needs a key you request through an open signup form, and the key travels either as an api_key query parameter or in an X-Api-Key header.

It also answers the exact question a route planner asks. The nearby-route endpoint takes a route as a well known text LINESTRING of latitude and longitude points plus a distance in miles, which defaults to 5.0 and accepts up to 100.0, and returns the stations along it. You can filter by charging level, which is 1, 2 or dc_fast, by connector type, by ev_power_kw_min for a minimum port power, by public or private access, and by status: available, planned or temporarily unavailable.

Read the note at the top of that documentation before you design anything, because it saves a week of confusion. Driving directions and route generation are not provided by the service. You have to work out the route yourself, then hand the service a line that represents it. That means a routing engine, its licence and its cost are still your problem, and the charging data sits on top of the route rather than producing it.

The second source is Open Charge Map, a community registry of charging locations published as open data, with a public OpenAPI specification. Its poi endpoint takes an encoded polyline and a distance, so the same query along a line works, and its coverage reaches well beyond North America. Its documentation says plainly that the basic API is a free service with no warranty and no service level agreement, that the key goes in an X-API-Key header or a key parameter, and that anyone making heavy use should run their own mirror rather than hammering the public one. Licensing is mixed per data provider, so pass opendata=true when you need open licensed records only.

Alternative Fuel Stations API, stations nearby route endpoint

A charger is more than a pin on the map

The fields in those records decide what your app can honestly promise. Open Charge Map returns each site with a list of connections, and each connection carries a connector type, a power figure in kW, amps, voltage, current type, a quantity and its own status with an operational flag. The site itself carries a usage type that records whether you pay at the location, whether membership is required and whether an access key is needed, which is the difference between a charger you can use and a charger you can look at.

Connector type is the field that ruins trips. The government dataset filters on J1772 for AC, CCS listed as J1772COMBO, CHAdeMO, NACS listed under the Tesla code as J3400, and MCS for heavy vehicles. A driver does not care how many stalls a site has. They care how many stalls their car can physically use at the power they need, and in your query those are two different filters that have to be combined.

Neither source tells you whether a port is free right now. Open Charge Map records a date the site was last verified and a date the status last changed. The government records carry date_last_confirmed and updated_at for the same reason: a station record ages, and a registry describes what was installed rather than what is happening. Live port availability is a separate feed, usually from the charging networks themselves, and we have not verified any free public source for it. Build as though you will not have it. Show the date the record was last confirmed, let drivers report what they found, and always carry a second station for every stop.

Open Charge Map API, OpenAPI specification

Ordering the stops so the plan survives

Once charging stops join the itinerary, the trip becomes an ordering problem with time windows, the same shape as a multi stop route planning app and a little meaner. One of the stops has a duration that depends on the state of charge you arrive with, so moving a stop changes how long it takes. That is why distance ordering alone produces elegant routes that fall apart at the second charger.

Rank the candidates on more than distance. Both datasets carry the facility type of the site and its hours, so an app can prefer a stop next to food and a toilet over a stall behind a dealership gate that closes at six. A 30 minute wait at a service area is a break. The same wait in an empty retail car park at night is the reason people go back to petrol.

Then plan for the stop that fails. Keep a second charger within reach of the first for every leg, and refuse to offer a plan where the fallback is outside the reserve. The moment that matters in this category is not the route preview, it is the driver standing in front of a broken charger with 12 percent left, and the app either has an answer ready or it does not.

What each approach gives a driver

OptionUses your real consumptionPlans charging stopsLive port availabilityUseful with no signal
Paper plan plus a charger mapNoin your headNoif the map is saved
General maps appNoNoNocached areas only
Built in car navigationthe car's own modelon some carson some carsNo
Dedicated EV trip plannerfrom a vehicle profileYeswhere a network shares itNo
A planner you buildyour own logged numbersYesonly with a paid feedwith cached station data

Building one around the car you actually drive

Commercial trip planners are built for a catalogue of cars and an average driver. If your case is specific, a van with a rack on the roof, a small fleet that charges at one depot, a weekly run where you already know which charger is unreliable, the general product keeps being generically right and specifically wrong. The gap is rarely a missing feature. It is that your constraints are not in its data model.

Newly is an AI app builder. You describe the app in plain English and it writes a real React Native and Expo project you own, runs it on a cloud simulator while it builds, and uploads iOS builds to TestFlight using your own Apple Developer account. It is $25 a month, there is no free plan, and Android goes to Google Play internal testing from the Deploy tab, or out as a standalone APK. It does not come with a routing licence or a charging feed, and it cannot make a station record fresher than its source. It is what you use when the app you need is a small specific thing nobody sells.

One decision comes before the rest. The mountain pass with no bars is exactly where the plan matters most, so the station list and the leg maths belong on the device rather than behind a live request. Work out what you are caching and how stale you will let it get, and read up on planning where there is no signal before you build around an API call.

Questions people ask about EV route planning apps

It turns a trip into a sequence of legs and charging stops. For each leg it estimates the energy needed from distance and consumption, checks that against the pack and the reserve you want on arrival, and places a charging stop where the numbers run out. Finding chargers is the easy part. Estimating energy honestly and picking a stop the car can actually use is the work.

Describe the trips you actually make

Write down the car, the reserve you are happy to arrive on and the chargers you already avoid, then build the planning around those.

Start building