← Back to converter

GPX → FIT

Adaptive pacing with anchor-based timing

What it does

A GPX route only says where you went. It doesn't say when you were at each point. A basic converter spreads your time evenly along the route, so the result looks like you walked up a mountain at the same speed you ran down it.

This tool gives the route a realistic pace. You enter a start time, then say how long the activity took, when it ended, or the average speed you kept — whichever you actually know. (An average speed only sets the total; the pace still varies along the route, and any time you spend stopped is added on top of it.) You can also add times you know from along the way. It then works out when you were at every point and writes a FIT file you can upload to Strava, Garmin Connect and similar services.

How pacing works

After converting, a speed and elevation chart slides up over the map so you can check the pacing before you download.

Anchor points

An anchor sets a time you know for a point on the route, e.g. "I reached the summit at 11:40". Click anywhere on the route to add one. The pacing between anchors is fitted separately, so each anchor makes the result more accurate.

If you click a spot the route passes more than once, like an out-and-back or a loop that crosses itself, you'll be asked which pass you meant.

Photo anchors

Photos you took during the activity usually record where and when they were taken, which is exactly what an anchor is. Drop them onto the Photos box and every geotagged photo becomes an anchor automatically.

The location and time are read from the photo's metadata inside your browser. The photos themselves are never uploaded, and nothing is stored after you close the tab.

When a photo is skipped

Tips

Stops

Click the route and choose "Add stop" to record a break, such as lunch, a summit rest or a café. You can give it either:

The stop is written into the FIT file as a real pause, so it's excluded from moving time and doesn't lower your average pace.

Device

A FIT file names the device that recorded it with two numbers: a manufacturer ID and a product ID. Strava looks that pair up in its own list of devices and shows the name only if it finds a match. It ignores any device name written into the file. So typing "Garmin Forerunner 965" does nothing on Strava, but the Forerunner 965's IDs do.

That's why the picker only offers devices whose IDs are known. Garmin and Suunto publish theirs. The COROS, Polar and Wahoo ones come from the device tables of other FIT tools. Most other brands don't publish them, and a guessed ID would just show nothing.

Privacy

There's no server behind this site. The conversion itself is Python compiled to run in your browser (Pyodide), so the processing happens on your own device.

Stays on your device

There are no accounts, analytics, tracking or cookies.

What does go over the network

Stored in your browser

Only four settings: light or dark theme, whether surface lookup is on, your pace smoothness level, and the device you picked (with its embedded name).

Check it yourself

Open your browser's developer tools (F12), go to the Network tab and convert a route. Every request the page makes is listed there.