LIVING SURVEY — measurements are reviewed continuously as new data and local evidence arrive. Seen a sign, a gate, or a better name? Submit an update no account needed · photos welcome via GitHub

← all climbs

Vermölerstrasse

Mixed surface (28% unpaved) · listed, not ranked

4156.7 m · net rise 552.2 m · total ascent 556.1 m · overall 13.3% · evidence quality U (needs confirmation) · Mels · St. Gallen

Shape: sustained — 35% of the climbing sits in a quarter of the distance; longest continuous stretch at 10%+ is 381 m.

Found purely from mapping and LiDAR data, and not yet matched against books, race records or lists — it may be well known to locals under a name we've never heard. It was cross-checked against swisstopo’s swissTLM3D road model, OpenStreetMap and a second terrain model, but a discovery can still be an artifact of the terrain model or the map. Treat it as a well-evidenced hypothesis until someone has ridden it. If you know this road, tell us what you found — photographs, corrections and local knowledge all welcome; the map links below let you scout it first.

needs review max10 over 40 — treat short-window maxima here as provisional.

Vermölerstrasse (Mels, St. Gallen) is 4156.7 m long at 13.3% overall; its steepest 25 m averages ≈30.1% and its steepest 100 m ≈24.2%, measured from swisstopo's swissALTI3D 0.5 m LiDAR along the mapped road centreline.

Gradient ladder what do windows mean?

WindowMaximumLocated at
2 m (diagnostic)≈45%1338–1340 munder overhead cover terrain reads 75.0% at 1646–1648 m across a structure — excluded
3 m (diagnostic)≈43%2475–2478 munder overhead cover terrain reads 69.0% at 1645–1648 m across a structure — excluded
5 m≈42%2475–2480 munder overhead cover terrain reads 55.9% at 1644–1649 m across a structure — excluded
10 m40%2475–2485 m
20 m32.9%2469–2489 m
25 m≈30.1%1726–1751 munder overhead cover terrain reads 30.5% at 1644–1669 m across a structure — excluded
50 m≈25.5%1174–1224 munder overhead cover terrain reads 27.3% at 1644–1694 m across a structure — excluded
100 m≈24.2%1652–1752 munder overhead cover terrain reads 25.0% at 1645–1745 m across a structure — excluded

may start earliermay continue beyond end Extent detection suggests reviewing where this climb starts/ends.

Map

Check this route yourself: Google Maps route via their router · Street View at the base where coverage exists · geojson.io our exact measured line · OpenTopoMap

This climb's data: OCL JSON — the full gradient ladder, quality flags and provenance in the OpenClimb Ladder format.

Surface: mixed (28% unpaved), according to swisstopo's swissTLM3D road model: paved for the first 1,127 m; unpaved from 1,127 m to 1,753 m; paved from 1,753 m to 1,942 m; unpaved from 1,942 m to 2,479 m; paved from 2,479 m to 4,125 m. The steepest 25 m lies on the unpaved part.

Access: Listed 2026-09-11 (Switzerland run 6 extent wave): road audit — barrier lift_gate (no access tag) 14.4 m off route. Never silently ranked or dropped. Also trimmed 2026-09-15 at the tail dog-leg (a driveway). Re-measured 2026-10-30 on its full public length: the steepest 25 m reads 30.1 %, on gravel.

Measured, not vetted. This page records what the laser record shows about the road's shape — nothing more. Nobody has necessarily ridden or inspected this road for the survey, and a page here is not a recommendation and no guarantee that the road is open, surfaced, rideable or safe. Gates, private sections, missing rights of way and hazards do not show up in elevation data. Check access and conditions on the ground and make your own judgment.

Ridden it, or know better? Submit data for this climb no account needed ·

Route colour = gradient over a 25 m window: <10% 10–20% 20–25% ≥25%

Route line = the road surface as the LiDAR survey finds it. Basemap roads are for orientation and may sit a few metres off.

  © OpenStreetMap contributors · topo tiles © OpenTopoMap (CC-BY-SA) · vector tiles OpenFreeMap · aerial imagery © swisstopo

Vermölerstrasse LiDAR hillshade map with contours

Profile

The map, profile and gradient chart share one position — move your pointer over them and the marker follows. Colors are the gradient bands; the shaded span is the steepest 25 m. Any 25 m figure is good to about a point either way (why).

Vermölerstrasse elevation profile
Vermölerstrasse rolling gradient profile
 

Measurement card

Elevationswisstopo swissALTI3D — swissALTI3D 0.5 m DTM (Federal Office of Topography swisstopo)
Resolution / CRS0.5 m grid, EPSG:2056; sampled every 1.0 m, bilinear interpolation
Tiles2747-1211, 2748-1211, 2748-1212, 2749-1211, 2749-1212, 2750-1212
Road centrelineOpenStreetMap (local PBF extract)
Quality statusevidence quality U; review flags: max10 over 40
AnalysisOCL 0.1.0, analysis 0.1.0, run p4-chfr-261030, calculated 2026-10-30

Provenance

{
  "analysis_version": "0.1.0",
  "run_manifest": {
    "manifest_version": "1",
    "code_git_sha": "f628b9f954edc85093d07c070992c6edc94ac395",
    "code_git_dirty": "false",
    "analysis_version": "0.1.0",
    "analysis_config_digest": "sha256:cadd8ced0d561e22",
    "python": "3.14.4",
    "numpy": "2.5.4",
    "rasterio": "1.5.2",
    "pyproj": "3.8.0",
    "laspy": "2.7.0",
    "shapely": "2.2.0",
    "pyosmium": "4.3.2",
    "libosmium": "2.23.1",
    "gdal": "3.12.2",
    "proj": "9.8.1",
    "run_id": "p4-chfr-261030",
    "road_pbf": "switzerland-2026-09-10-batch.osm.pbf",
    "region_key": "switzerland",
    "crs": "EPSG:2056",
    "elevation_provider_key": "swisstopo",
    "tile_index": "stac",
    "authority": "swisstlm3d",
    "registry_pbf": "switzerland-2026-09-10.osm.pbf",
    "tile_index_snapshot": "sha256:f655910c76545aad"
  },
  "sample_interval_m": 1.0,
  "interpolation": "bilinear",
  "smoothing": "none",
  "gradient_windows_m": [
    5.0,
    10.0,
    20.0,
    25.0,
    50.0,
    100.0
  ],
  "diagnostic_windows_m": [
    2.0,
    3.0
  ],
  "elevation_crs": "EPSG:2056",
  "elevation_resolution_m": 0.5,
  "elevation_tiles": [
    "data/cache/ch/swissalti3d_2020_2747-1211_0.5_2056_5728.tif",
    "data/cache/ch/swissalti3d_2020_2748-1211_0.5_2056_5728.tif",
    "data/cache/ch/swissalti3d_2019_2748-1212_0.5_2056_5728.tif",
    "data/cache/ch/swissalti3d_2019_2749-1211_0.5_2056_5728.tif",
    "data/cache/ch/swissalti3d_2019_2749-1212_0.5_2056_5728.tif",
    "data/cache/ch/swissalti3d_2020_2750-1212_0.5_2056_5728.tif"
  ],
  "calculated_at": "2026-10-30T04:33:22+00:00",
  "road_source": "OpenStreetMap (local PBF extract)",
  "road_attribution": "\u00a9 OpenStreetMap contributors, ODbL",
  "osm_pbf_path": "data/cache/pbf/switzerland-2026-09-10-batch.osm.pbf",
  "osm_snapshot": "",
  "run_id": "p4-chfr-261030",
  "elevation_provider": "swisstopo swissALTI3D",
  "elevation_licence": "swisstopo open government data (OGD): free use, attribution '\u00a9 swisstopo' \u2014 https://www.swisstopo.admin.ch/en/terms-and-conditions",
  "elevation_dataset": "swissALTI3D 0.5 m DTM (Federal Office of Topography swisstopo)",
  "elevation_tile_ids": [
    "2747-1211",
    "2748-1211",
    "2748-1212",
    "2749-1211",
    "2749-1212",
    "2750-1212"
  ],
  "elevation_items": {
    "2747-1211": {
      "item": "swissalti3d_2020_2747-1211",
      "datetime": null
    },
    "2748-1211": {
      "item": "swissalti3d_2020_2748-1211",
      "datetime": null
    },
    "2748-1212": {
      "item": "swissalti3d_2019_2748-1212",
      "datetime": null
    },
    "2749-1211": {
      "item": "swissalti3d_2019_2749-1211",
      "datetime": null
    },
    "2749-1212": {
      "item": "swissalti3d_2019_2749-1212",
      "datetime": null
    },
    "2750-1212": {
      "item": "swissalti3d_2020_2750-1212",
      "datetime": null
    }
  },
  "route_cut_m": 4156.7,
  "climb_origin": "discovered",
  "seam_filled_samples": {
    "count": 0,
    "distances_m": []
  },
  "seam_filled_in_maximum": false,
  "canopy_check": "unavailable \u2014 no surface model (DSM or point cloud) registered for this coverage",
  "structure_own_ways": 14,
  "tunnel_check": "osm tunnel=* ways on 14 own way(s)",
  "tunnel_ranges_m": [],
  "underground_fraction": 0.0,
  "carriageway": {
    "stations": 173,
    "stations_resolved": 173,
    "width_median_m": 4.25,
    "width_p10_m": 2.75,
    "width_min_m": 1.0,
    "width_max_m": 11.0,
    "bounded_share": 0.671,
    "unbounded_share": 0.329,
    "confidence_median": 0.677,
    "width_median_bounded_m": 4.25,
    "window_m": [
      1726.0,
      1751.0
    ],
    "width_at_max25_m": 3.25,
    "window_stations": 7,
    "single_track": true,
    "single_track_rule": "PROVISIONAL (2026-09-15): width_p10_m <= 3.0 m with bounded_share >= 0.6; recorded, not a rule",
    "status": "ok",
    "source": "dtm",
    "station_m": 25.0,
    "window_station_m": 5.0,
    "halfwidth_m": 6.0,
    "step_m": 0.25,
    "level_tol_m": 0.12,
    "break_min_m": 0.3,
    "stations_failed": 0,
    "hedge_to_hedge": {
      "status": "unavailable \u2014 no DSM raster (surface model absent or point-cloud only, which cannot serve off-line samples)"
    }
  },
  "remeasured": {
    "on": "2026-10-30",
    "why": "hunt-extent-public-continuation (P4)",
    "published_max25_pct": 13.78,
    "max25_pct": 30.08,
    "published_overall_pct": 11.43,
    "overall_pct": 13.29,
    "rise_ruling": "The 2026-09-11 continuation rule keeps a part because it holds the 25 m maximum or climbs, so a rise is the reason the part was kept",
    "published_length_m": 1655.0999999999133,
    "length_m": 4156.700000000116,
    "expected_length_m": 4156.700000000116
  },
  "license": "ODbL-1.0",
  "license_url": "https://howsteep.org/licensing"
}