Convert CSV (spreadsheet) to GeoJSON
Your file never leaves your device — conversion happens here in your browser.
GeoJSON and CSV are the two formats in FitFileHub that keep everything — no lossy channels, no dropped fields — which makes this conversion mostly a question of shape rather than data loss. This tool reads a CSV against FitFileHub's documented schema (timestamp, lat, lon, elevation_m, plus any of hr_bpm, cadence_rpm, power_w, temperature_c, and a lap-index column your file contains), tolerating common alias headers along the way, and writes a GeoJSON LineString with the sensor series carried in per-point coordinateProperties, the way GIS and web-mapping tools expect to find them. Timestamps keep their full millisecond precision on both sides of the conversion, and position and elevation are preserved exactly. The one column without a clean GeoJSON equivalent is the lap index — GeoJSON has no lap concept — so if your CSV has lap markers, they're dropped rather than approximated into something misleading. This is the natural path for spreadsheet GPS data headed into Leaflet, Mapbox GL, QGIS, or any pipeline built around the GeoJSON spec rather than a fitness device. Because both formats are ones FitFileHub already treats as first-class on the channel-support table, this conversion is closer to a schema translation than a lossy export. It runs entirely in your browser — no upload, no server, no account — with a background worker keeping large files responsive throughout.
Questions
Does converting CSV to GeoJSON lose any sensor data?
No — heart rate, cadence, power, and temperature all carry over in full if present in the CSV, stored as per-point coordinateProperties in the GeoJSON output.
What happens to a lap-index column in my CSV?
It's dropped. GeoJSON has no concept of laps, so there's no field to represent it in — this is the one channel that doesn't survive the conversion.
What column names does my CSV need?
FitFileHub's own schema: timestamp, lat, lon, elevation_m, and any sensor columns you have. Common alias headers from other tools' exports are recognized too.
Is there a file size limit?
Free use handles files up to 25 MB, 3 at a time. Larger or more frequent conversions are unlocked by supporting the project.