Proposal:MTB Trail Features

From OpenStreetMap Wiki
Jump to navigation Jump to search
MTB Trail Features
Proposal status: Draft (under way)
Proposed by: Pkoby
Tagging: mtb:feature:*=*
Applies to: node / way
Definition: Skill features on trails for mountain biking
Draft started: 2026-06-25


Problem Statement

Mountain biking often involves trail features (a.k.a. "skill features", "technical trail features" (ttf)) that test skills, enhance the experience, and can be great fun to ride. Up to now, there has not been a clear method for mapping or tagging these features in OpenStreetMap. Adding them to the OSM database would help mountain bikers plan ahead for their rides in new areas, provide an accurate representation of MTB trails, and also allow other trail users (hikers, horse riders) to know about obstacles. Trail features can change, but tend to be permanent enough that they're worth mapping.

Proposal

This proposal puts forward mapping and tagging guidelines for adding MTB trail features to OSM. At the time of proposal, there are very few elements mapped (at least as discoverable by searching for similar keys and values). mtb:feature=* has 43 uses worldwide, mtb_ttf=* has 26, and 0 for mtb_feature=* or mtb=feature . There are a few elements tagged mtb=jump(9), mtb=gap_jump(6), etc., but as mtb=* is used for access, these are confusing. cycling=dirtjump is tagged on ways only, so seems to refer to a riding style, not a feature.

Instead of any of these options, I propose using mtb:feature:*=*, where :* denotes the type (e.g. jump, skinny, rock garden). The value can be yes to denote the presence of a single feature without further detail. If there is more than one feature at a single point on the trail, the side relative to the direction of the way should be tagged, e.g. =*. Values can be left, right, or middle.

Additionally, if it is possible to avoid the feature(s) without leaving the trail (i.e. if above your skill level), tag the feature with mtb:feature:*:bypass=*. Values can be yes to denote that avoiding is possible, or left, right, or both.[1]

Features should be mapped as nodes connected to the highway=* in most cases, or as part of the highway=* split at the start and end if they are longer features like rock gardens, berms, skinnies, or wall rides.

Rationale

Per discussions with other mappers on OSMUS Slack (see link below), the mtb:feature:*=* was considered more flexible than mtb:feature=* because the latter only allows one feature at a single point on the trail (unless separated with semicolons, which is not as easy for consumers to parse). Presets for each feature type could add all relevant tags at once including the "top-level" tag of what type it is, so with mtb:feature:*=* you don't have to semicolon-ize manually for each type. While multiple : levels can be overwhelming, this method allows for limitless detail for each feature. If desired, one could tag the color, difficulty level, height, width, length, material, surface, etc.

Mapping the point (or short way) as part of the trail way could be used in future to provide routing notes for mountain biking. For example, plotting a mountain biking route could list the features that would be ridden. If points were separate from the highway=*, further analysis would be needed to associate the features with the trail.

Tagging

While somewhat subjective, these tags are designed for features that are purpose-built for mountain biking, or are natural features that are consistently used as features. Do not map every bump and tall rock as a jump just because you could get some air.

Main Tags
Key Importance Value(s) Example
mtb:feature:*=* ! Required yes to show presence, left, right or middle to show side of the trail relative to way direction mtb:feature:jump=left
mtb:feature:*:bypass=*  Important yes or no to denote presence, left, right or both to show side of the feature relative to path way direction. Can also tag mtb:feature:*:bypass=separate if there is a separate path line drawn around the feature. For most cases, though, it is sufficient to use tags. mtb:feature:jump:bypass=right
mtb:feature:*:oneway=* ? Optional yes, no, or -1 based on direction of way mtb:feature:jump:oneway=yes
mtb:feature:*:description=* ? Optional Human-readable description of a feature mtb:feature:jump:description=Two foot tall wooden jump
mtb:feature:*:height/width/length=* ? Optional Dimensions of a feature. Measurements should ideally be in meters, but see https://wiki.openstreetmap.org/wiki/Units for other options. mtb:feature:jump:height=0.7
mtb:feature:*:surface=* ? Optional Surface of a feature. If mapped as a way, this tag may be redundant if the highway=* surface=* is tagged, but should be used on way features that differ from the path surface, or on any node feature. mtb:feature:jump:surface=wood
Feature Types
Type Element Description Useful Tags Example
Jump

mtb:feature:jump=*

Node A simple jump made of one ramp with a landing on the same level, aka 'trail jump', 'takeoff'. Can ride without tires leaving the surface.

_/\_

mtb:feature:jump:height=*
mtb:feature:jump:width=*
mtb:feature:jump:surface=*
A mountain bike jump
Gap Jump

mtb:feature:gap_jump=*

NodeWay A jump made of a launch ramp and a landing ramp with a gap in between. aka 'double'.

_/\_/\_

mtb:feature:gap_jump:height=*
mtb:feature:gap_jump:width=*
mtb:feature:gap_jump:length=* distance between tops of ramps
mtb:feature:gap_jump:surface=*
Tabletop

mtb:feature:tabletop=*

NodeWay A jump with a ramp up and ramp down with a flat section at the top. Can ride without tires leaving the surface.

_/‾‾\_

mtb:feature:tabletop:height=*
mtb:feature:tabletop:width=*
mtb:feature:tabletop:length=* distance along top
mtb:feature:tabletop:surface=*
Step-Up

mtb:feature:stepup=*

NodeWay A gap jump with a short takeoff leading to a higher landing.

_ʌ_/\_

mtb:feature:stepup:height=* height of taller ramp
mtb:feature:stepup:width=*
mtb:feature:stepup:length=* distance between tops of ramps
mtb:feature:stepup:surface=*
Step-Down

mtb:feature:stepdown=*

NodeWay A gap jump with a tall takeoff leading to a shorter landing.

_/\_ʌ_

mtb:feature:stepdown:height=* height of taller ramp
mtb:feature:stepdown:width=*
mtb:feature:stepdown:length=* distance between tops of ramps
mtb:feature:stepdown:surface=*
Drop

mtb:feature:drop=*

Node A jump from a high level to a lower level. May be possible to roll down the surface.

‾\_

mtb:feature:drop:height=*
mtb:feature:drop:width=*
mtb:feature:drop:surface=*
Berm

mtb:feature:berm=*

NodeWay A raised edge of the trail, often made of dirt, to allow faster turning around a corner. mtb:feature:berm:height=*
mtb:feature:berm:length=*
mtb:feature:berm:surface=*
A small berm for mountain biking, on the Yellow Trail in Wissahickon Valley Park
Skinny

mtb:feature:skinny=*

NodeWay A narrow, usually elevated segment like a log, rock, or boardwalk that requires balance and precise riding to follow, aka 'log ride' in some instances. mtb:feature:skinny:width=*
mtb:feature:skinny:height=*
mtb:feature:skinny:length=*
mtb:feature:skinny:surface=*
Bridge

mtb:feature:bridge=*

NodeWay A bridge-like feature that doesn't necessarily (but can) go over anything. mtb:feature:bridge:height=*
mtb:feature:bridge:width=*
mtb:feature:bridge:length=*
mtb:feature:bridge:surface=*
Mountain bike bridge feature
A mountain bike bridge
A-Frame

mtb:feature:aframe=*

Node A tall, usually wooden structure shaped like a capital A. mtb:feature:aframe:height=*
mtb:feature:aframe:width=*
mtb:feature:aframe:length=*
mtb:feature:aframe:surface=*
Rock Garden

mtb:feature:rock_garden=*

NodeWay An area of large rocks along the path. Requires picking a good line to roll smoothly. mtb:feature:rock_garden:length=*
A very short rock garden for mountain biking
Teeter-Totter

mtb:feature:teeter=*

Node A narrow hinged platform that pivots after you cross the middle. mtb:feature:teeter:height=*
mtb:feature:teeter:width=*
mtb:feature:teeter:length=*
mtb:feature:teeter:surface=*
Wall Ride

mtb:feature:wall_ride=*

NodeWay A curved wall (basically a large berm) that you can ride up to hit fast corners. mtb:feature:wall_ride:height=*
mtb:feature:wall_ride:length=*
mtb:feature:wall_ride:surface=*
A mountain bike wall ride
Shark Fin

mtb:feature:shark_fin=*

NodeWay A wall ride leading to a drop at its end. mtb:feature:shark_fin:height=*
mtb:feature:shark_fin:length=*
mtb:feature:shark_fin:surface=*
User-defined Some features don't fall into these classifications. If you have another name for something here, try to fit it in, but feel free to create your own types.
Additional Details
Key Description
mtb:feature:*:colour=* Notable color of a feature, e.g. a painted wall.
... etc.
Disambiguation
Tag:barrier=log A log across the trail, even if it has little ramps to get over it, is probably not a jump.
Key:bridge A bridge as part of the path, crossing something like a stream or gully, should be tagged as a bridge, not an MTB feature.
Key:ford If a trail crosses a stream, tag it as a ford.

Examples

Real-World Examples
yes
mtb:feature:berm=left
mtb:feature:berm:bypass=right
mtb:feature:berm:length=3
mtb:feature:berm:surface=dirt

Unresolved Questions

Please discuss these points on the discussion page.

  • Should the tag be mtb:feature:*=*, or would mtb:*=* or mtb_feature:*=* make more sense?
  • Is it called a "drop" or "drop-off"?
  • Surface of drop/off: is it the top, bottom, or ~vertical face?

Impact on Data Consumers

There should be no impact because there is not a tagging scheme in use so far.

Features/Pages affected

Mountain biking

External discussions

https://wiki.openstreetmap.org/wiki/Talk:Mountain_biking#Skills_area_-_how_to_tag
https://osmus.slack.com/archives/CKC0HGF4H/p1774532976037549

Comments

Please comment on the discussion page.

  1. Please discuss if left/right/middle is sufficient for feature position. Edge cases might have more than three features. In those cases, it's probably better to map individual paths to each feature.