Skip to main content
viewmygpx

Sample GPX file: 50 km road cycling loop in Sonoma County

50.0 km · +1,188 m gain · 2 h 0 m · 2,400 trackpoints

A 50 km road bike loop through Sonoma County, with rolling hills and ~25 km/h average pace. 1-second smart recording. For cycling-app and segment testing.

Drop your GPX file here

or browse to choose

About this route

A Sunday morning gravel-curious road loop through Sonoma County wine country, starting in Healdsburg, climbing west through the Dry Creek Valley vineyards, dropping into the Russian River drainage at Lake Sonoma, and returning via Geyserville. The course profile is rolling rather than mountainous: four named climbs (Dry Creek Road, Rockpile Road approach, Geyserville Pass, the back-side return), with short recovery flats between each.

The 50 km distance and 1,188 m of cumulative climbing put this in the mid-difficulty bracket for road-bike rides — call it a Cat-3 equivalent if you index against pro cycling climb classification. Average gradient on the climbs ranges from 4% to 7%, with a few brief double-digit kickers.

What this file demonstrates

A road-bike file with realistic 25 km/h average and pace variation across climbs and descents. Useful for testing cycling apps that compute moving versus elapsed time, normalized power proxies, and climb-classification algorithms (climbs are detectable from gradient and duration even without external data).

The file has no waypoints, which is typical of a pure recording where the rider does not stop or mark POIs. This makes it a clean stress-test for apps that index purely on the track polyline.

Notes on the data

1-second smart-recording cadence yields 2,400 trackpoints across the two-hour ride — about one trackpoint every 21 metres. Pace varies realistically: 35-40 km/h on the descents, 12-18 km/h on the steeper climbs.

Elevation is SRTM-sourced with grade-aware pace coupling, so the per-trackpoint speed slows on the climbs and accelerates on the descents the way a real recording would. No sensor extensions in this file — for a heart-rate / cadence / temperature variant, see the extensions-test.gpx sample instead.

Common questions about this sample

Is the Sonoma County route in this file rideable?

The route follows plausible roads in the Dry Creek Valley and Russian River area but the trackpoints don't trace specific paved routes. Coordinates are realistic for the named region but the file is synthetic — don't use it as a navigation reference. Local cycling clubs and Strava routes are better sources for actual rideable Sonoma routes.

Why does the average speed vary so much across the file?

Grade-aware pace coupling — slower on the climbs (12-18 km/h on the steeper sections), faster on descents (35-40 km/h on the long downs), normal on flats (~25 km/h). This matches a real cycling recording where the rider's effort is roughly constant but the speed varies with terrain. Apps that compute moving-time average speed should produce a value close to 25 km/h for this file.

Will this file produce realistic Strava segment matches?

Probably some accidental matches, since Strava's segments are dense in California wine country. The file is synthetic so any match is coincidental. Useful for testing your app's segment-matching logic against real Strava data; not useful as training data for the actual roads named in the route description.

Can I test power-data display with this file?

No — this file has no power data. The Garmin TrackPointExtension namespace is absent. For a file with sensor data including power-equivalent fields, use the extensions-test.gpx sample which includes heart rate, cadence, and temperature; for true power data, you'll need a recording from a real power-meter sensor since synthesized power isn't included in any of the published samples.

Why 2,400 trackpoints for a 2-hour ride?

Smart recording at 1-second cadence with grade-aware sampling. About one trackpoint every 21 metres on average, denser on the climbs (slower speed = more points per metre) and sparser on the descents. This shape is typical of real Wahoo or Garmin recordings; if your parser handles it cleanly, it'll handle most real cycling files.

Download road-cycling-50km.gpx381.1 KB · public domain (CC0)

What's inside this file

  • Trackpoints: 2,400
  • Waypoints: 0
  • Tracks: 1
  • Distance: 50 km
  • Elevation gain: 1188 m
  • Activity duration: 2 h 0 m
  • Extensions: none
  • File size: 381.1 KB
  • Format: GPX 1.1 (topografix.com/GPX/1/1)
View as raw XML (first 30 lines)
<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1" creator="viewmygpx-samples" xmlns="http://www.topografix.com/GPX/1/1">
  <metadata>
    <name>Healdsburg–Calistoga loop</name>
    <desc>50 km road ride through Sonoma County wine country, with rolling hills and a moderate climb over Chalk Hill Road.</desc>
    <author>
      <name>viewmygpx samples</name>
    </author>
    <bounds minlat="38.407946792185136" minlon="-122.78011505192788" maxlat="38.58062919348131" maxlon="-122.62623792215457"/>
  </metadata>
  <trk>
    <name>Sunday road ride</name>
    <type>cycling</type>
    <trkseg>
      <trkpt lat="38.407963699703984" lon="-122.71709014164823">
        <ele>35.541172325843945</ele>
        <time>2025-05-04T08:15:00.000Z</time>
      </trkpt>
      <trkpt lat="38.40808751012585" lon="-122.71726698625068">
        <ele>36.641575297553125</ele>
        <time>2025-05-04T08:15:04.005Z</time>
      </trkpt>
      <trkpt lat="38.408218163075965" lon="-122.7174304330976">
        <ele>35.36808217475756</ele>
        <time>2025-05-04T08:15:05.798Z</time>
      </trkpt>
      <trkpt lat="38.408358940716994" lon="-122.71758719704243">
        <ele>36.50687638431238</ele>
        <time>2025-05-04T08:15:09.892Z</time>
      </trkpt>

How to use this file

Test a GPX parser. Drop the file into your code, library, or app under development to verify it handles real-world data — distance, elevation, timestamps, waypoints. The point counts and stats above give you expected outputs to compare against.

Demo content for tutorials. Use the file as a stand-in for a real user upload when recording screenshots, writing documentation, or filming product walkthroughs. The file is public domain, so no attribution is needed in your materials.

Test platform integrations. Upload the file to Strava, Garmin Connect, Komoot, or AllTrails to confirm your import flow works end-to-end. The route is plausible but unattached to any user account, so it won't appear in anyone's feed.

Drop your own file too. The embedded viewer above accepts any .gpx file. Use it to compare your file's structure against this sample, or simply to view your route without leaving the page.

License and attribution

This file is released under Creative Commons Zero (CC0) — public domain. You may use it for any purpose, commercial or otherwise, with no attribution required.

The route is synthetic. Coordinates are plausible for the named region but do not trace any specific real-world trail, road, or ride. Use the file freely as test data; do not navigate by it.

More sample files

Browse the full set of 12 samples on the sample GPX files page, or jump to one of the related files below.