Tags

From OpenStreetMap Wiki
(Redirected from Key Value System)
Jump to navigation Jump to search
Mf tag.svg

A tag consists of two items, a key and a value. Tags describe specific features of map elements (nodes, ways, or relations) or changesets. Both items are free format text fields, but often represent numeric or other structured items. Conventions are agreed on the meaning and use of tags, which are captured on this wiki. Though in some relatively minor cases there are competing visions what tags actually mean, or mappers using them in a different ways.

As of February 2024, OpenStreetMap contains over 96 thousand distinct keys and over 155 million distinct tags.

Keys and values

Tags are applied to elements or changesets (i.e., tagging them) resulting in a collection of tags of any size. However, each collection may only contain a key once. Where a tag is not present, there are often considered to be default values or values inherited from parent elements.

The key, therefore, is used to describe a topic, category, or type of feature (e.g., highway or name). Keys can be qualified with prefixes, infixes, or suffixes (usually, separated with a colon, :), forming super- or sub-categories, or namespace. Common namespaces are language specification and a date namespace specification for name keys.

The value provides detail for the key-specified feature. Commonly, values are free form text (e.g., name="Jeff Memorial Highway"), one of a set of distinct values (an enumeration; e.g., highway=motorway), multiple values from an enumeration (separated by a semicolon), or a number (integer or decimal), such as a distance. The value is obligatory for the tag, even if the key is self-explanatory (e.g. motorcycle:rental=yes).

Here are a few examples used in practice:

  • highway=residential a tag with a key of highway and a value of residential which should be used on a way to indicate a road along which people live.
  • name=Park Avenue a tag for which the value field is used to convey the name of the particular street
  • maxspeed=50 a tag whose value is a numeric speed and speed unit. The unit, km/h, is implied, but can be explicitly specified; miles per hour can be alternatively specified by appending mph. Across OSM, metric units are the default.
  • maxspeed:forward=* a key that includes a namespace for maxspeed to further distinguish its meaning.
  • name:de:1953-1990=Ernst-Thälmann-Straße a tag with the name key suffixed namespaces to specify the German name which was valid in some years.

Finding your tag

The following resources are often used to find an appropriate tag or explore tag usage:

Technical specifications

Elements describes the technical limitations, encoding and formatting of Tags.

Use in an editor

Main article: Preset

Some OSM editors (for example iD, Potlatch 3, MapComplete) hide the tags of objects by default, making them not directly editable; instead users choose a preset and fill in a form. However, in most editors all tags can be displayed and edited by entering some kind of advanced mode of your editor.

iD

  1. (only needed if you created a new object) Select the generic feature type preset (it is the bottom one). For example select “point” if you created a new “point” object.
  2. Select “All tags” (bottom left)

StreetComplete

  1. Press undo (bottom-left of the screen)
  2. Select either last edit option or show edit history
  3. On final confirmation screen StreetComplete will list tags that were added in edit (and would be modified by a revert)

MapComplete

MapComplete will hide tags for new users. Once a contributor has more then 25 changesets, the added tags will be shown just below the 'save'-button for a question and below the preset.

key=value syntax

In discussions and when working with certain tools, it is common to refer to a tag using the syntax key=value, that is, the key, then an equals sign, then the value. Sometimes, the key or value is surrounded by quotes to avoid confusion: key="value" or "key"="value"; the quotes (and, indeed, equals sign) are not part of the tag content.

The key=value syntax or a variant thereof is used in the following tools:

On this wiki, you can refer to a tag using key=value syntax by including the {{Tag}} template.

Sometimes, a relation role is given as role=…. This means the element's role in the relation is set to the value on the right side of the equals sign, not that a key named role=* is set to that value.

Metadata

Some tags were used in data elements only for attaching metadata displayed in map editors or in quality assurance tools (such as completion status, things to do, approximations, data or imagery source, tool or editor version, etc.). Since version 0.6 of the API, map editors and import tools are encouraged to attach a few metadata tags to the changesets they create (changesets are not data elements) instead of tagging every added or modified data element: these tags are now documented on this wiki as "discardable", meaning that they may be silently deleted from data elements by editors when they update them (they are still usable in changesets, and these tags are still visible in older versions of elements where these discardable tags have been removed and you can still inspect these old tags from old changesets that did not use this now preferred tagging method because these changeset still point to the older versions of elements that had these tags).

See also