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.
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.
Here are a few examples used in practice:
- highway=residential a tag with a key of
highwayand a value of
residentialwhich 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
maxspeedto further distinguish its meaning.
- name:de:1953-1990=Ernst-Thälmann-Straße a tag with the
namekey 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:
- Browse this wiki
- Taginfo – an site to explore current tag usage in the OSM database, including tag values that are not necessarily documented (but it includes links to this wiki if there is a documentation for a tag)
- TagFinder – Website providing full text search engine for OSM tags. (Also webservices available).
- Look how a similar object at another place is mapped (if you know where it might also exist)
- Read any tags you like
- Search the tagging mailing list archive or questions about “tagging” at the help site or forum.openstreetmap.org. Of course you also could ask at all three sites (but please only one at a time).
- OSM Semantic Network – a machine-readable structure containing the OSM tags
Elements describes the technical limitations, encoding and formatting of Tags.
Use in an editor
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.
For the example editors:
- (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.
- select “All tags” (bottom left)
- Press undo (bottom-left of the screen)
- Select either last edit option or show edit history
- On final confirmation screen StreetComplete will list tags that were added in edit (and would be modified by a revert)
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.
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"; 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:
- iD – When a feature is selected, expand the Tags section of the left sidebar and change the view from to .
- JOSM – Right-click on the Tags panel and choose "Copy all Keys/Values".
- Name Suggestion Index – A tagset in key=value format is listed under each entry in the index.
- OpenStreetMap Tags Editor
- Osmium – Filter expressions supplement key-value syntax with additional syntax for alternative keys or values.
- Overpass turbo – This syntax appears in OverpassQL as a has-kv filter and in the simpler wizard syntax.
- Taginfo – Enter key=value syntax into the search box to find a tag.
On this wiki, you can refer to a tag using key=value syntax by including thetemplate.
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.
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).