In the city
Stairs, quays, bridges, park mounds. Vert gets picked up in small pieces, and by running the climbs more than once.
iPhone and Android
Pick a start and a distance. Trailgen digs through the paths around you and returns the loops that climb the most, in the city, in the countryside or in the mountains.
And when one hill is not enough, it will run you up the same one twice, or three times.

Chamonix, 5.0 mi for 3,563 ft of vert. Real screenshot, nothing retouched.
The case we care about
A city that looks flat is not flat on a GPS. The steps up from a quay, a railway embankment, the ramp onto a bridge, the mound in a park: each is worth a few dozen feet, and every one of them is in OpenStreetMap. What is left is stringing them together over the distance you want.
A flight of steps is a path like any other. Trailgen takes it as soon as it earns vert, and that vert shows up in the total.
Over six miles in a city, a single hill is not enough. Mark it, say how many times to run it, and the app tells you what you gain before you confirm.
Terrain is rarely right outside your door. Trailgen moves the start within the radius you allow it, and goes looking for where the ground rises.

Repeating a section: the app reports the 2.5 mi and 1,151 ft it will add before you confirm.
Everywhere
Wherever you are, the app looks for the same thing: the loop that climbs the most over the distance you asked for. All that changes is the raw material.
Stairs, quays, bridges, park mounds. Vert gets picked up in small pieces, and by running the climbs more than once.
Dirt tracks, hillsides, levees and woodland paths: everything road maps leave out and OpenStreetMap knows about.
There is no shortage of terrain. The work is picking which climbs will fit inside the distance you want.

The criteria: start point, flexibility, target distance, tolerance, minimum gain.
Training
A trail plan is counted in feet of vert per week. From a city, you have to go and find them in small doses and in repeats. You give the distance and the minimum gain, the app returns the loops that make it, or tells you what stopped it.
What the app does
You drop a start and a distance. The app downloads the area's paths and terrain, explores the loops it can build, and keeps the ones that climb the most.
Running the same hill three times is still the most efficient way to stack up vert over a short distance.
Tap the map: the app follows the paths from one point to the next, and distance and vert update with every point you add.
Trails, tracks and roads are set each on their own: allowed, avoided or ruled out.
A closed path, a washed-out bridge, private land. Rule it out once and later searches will keep away from it.
Terrain is rarely right outside your door. The app looks for a better start within the radius you set.
Elevation profile, the real share of trail and road, how much ground it repeats. A cursor moves along the map and the profile, and the vert climbs with it.
Export GPX to your watch. An image or a video of the route, map and profile included, ready to send.
A downloaded area stays on the phone. Later searches there are near instant, online or not.
No profile, no history, nothing to erase. To build a route, the app asks for the paths and terrain of the area you are searching: those requests point at an area, never at a person. The details are in the privacy policy.
The numbers
Wrong elevation gain does not look wrong: it displays, it seems credible, and it skews the training. On flat ground a worldwide elevation model can report up to three times the real gain, which lands exactly where this app is useful. Hence the choice of sources.
the IGN's RGE ALTI
gain checked to within 5 % against the IGN's elevation reference
USGS, Natural Resources Canada
the same order of accuracy, checked site by site
worldwide model, the AWS Open Data Terrain Tiles set
accuracy depends on the surveys available; on flat ground, gain may be overstated
Paths come from OpenStreetMap. That is what lets the app know about trails road maps ignore, and it is also why one of them may have disappeared, been closed, or cross private land. Look at the route before you set off. Once out there, trust the terrain over the screen.
Questions
Yes. The app downloads the area's paths and terrain the first time through, then keeps them. Later searches there are near instant, even offline.
Anywhere OpenStreetMap describes paths, which is very nearly everywhere. How accurate the gain is depends on the country: see the sources above.
No. An area you have already downloaded stays on the phone, and the route exports as GPX before you leave.
Export is GPX, which sports watches read. The other way round, a GPX you already have gets measured the same way.
One purchase, once. No subscription, no version that expires, nothing more to pay inside the app.
iPhone and Android. One purchase.