The preset syntax has changed and this page needs to be adjusted to reflect the changes


Tagging Presets

JOSM supports distributed tagging presets. This is a XML config file that describes a GUI for entering tags (or properties, annotations, sometimes called map features). The XML files can be placed anywhere in the web or at the users local file system. Presets can be added by the users at a central page Presets.

Installing presets

Open the preferences window, click source:trunk/images/preferences/map.png map settings and select third tab Tagging Presets.

Develop a new preset – Example

<presets xmlns="">
  <item name="Highway">
    <label text="Inserting a highway in UK" />

    <text key="name" text="Highway (e.g. M3)" />
    <combo key="highway" text="Type" values="major,minor" />

    <!-- Highways are usually oneway -->
    <check key="oneway" text="Oneway" default="on" />

    <!-- Always setting class=highway -->
    <key key="class" value="highway" />

Develop a new preset – Add to the list of available presets

See Presets.

Develop a new preset – XML Format description

The tagging preset description is in a very simple XML format.

See the comment section in defaultpresets.xml for the valid format description.

The full XSD schema is available at the namespace URI ( as well as the source repository.

Develop a new preset – XML Format description (outdated!)


The document prolog:

Has to be the main tag of the file. Supports following attributes

  • xmlns=""
  • author - the name of the author
  • version - a version of the file
  • description (i18n) - description what the file contains
  • shortdescription (i18n) - short overview description
  • link (i18n) - web link to further details
  • icon - informational icon for the preset


<!-- this is an example comment -->
The document can contain embedded comments.
Menu creation:
Used to group items in sub menus. name is required, icon is optional attribute.
Every item is one annotation set to select from. name is required, icon is optional attribute.
Insert a line separator into the menu.
Create instructions for the user:
Labels are static texts for display. text is a required attribute.
Used to group some optional elements of an item. Possibly equivalent to <label text="Optional Attributes:"/>
<space />
Add some space (ie a newline) in the preset display. Possibly equivalent to <label text=" "/>
Specify a web link for this feature or to anything else of use. The href attribute is required.
Attribute entry and selection dialog boxes:
A text edit field to enter any arbitrary string from the user. key is mandatory, text, default and required is optional
Displays a multiple choice combo box. key and values are mandatory and text, default, editable and required is optional. If editable is true (default), combo boxes can be edited as if they were text fields (additional to the drop down menu). Non editable combo boxes can only contain one of the specified values.

Displays a list from which zero or more items can be chosen. key and values are mandatory, and text, default, delimiter, and required are optional. The selected values will be concatenated with the specified delimiter (default: semicolon) and written to the tag value. If a tag value has already been set when the preset dialog is opened, the multiselect will attempt to mark the appropriate items in the list as select. If the tag value cannot be represented by a combination of choices in the list, then the list will be disabled so that the user cannot accidentally overwrite a custom value. In contrast to the "combo" element, the "multiselect" expects the list of values, descriptions etc. to use the specified delimiter, i.e. by default you will have to use a semicolon. You can specify delimiter="," but then a comma will also be used in the tag value.
A checkbox which the user can only select or deselect. The key attribute is mandatory. text, default and required is optional.

Set a key value pair:

This tag will always set a key to a specific value. key is required and if value is present, the key will be set. If value attribute is ommited, the key is removed.


The attributes of the tags have the following meaning:

Specify a name for an item. This name will be used in the GUI to display the tagging preset.
Translation context for name attribute to separate equals words with different meaning (not required for in-file translations).
When specified, only objects of the given type will be changed at all by this tagging preset. Can be "node", "relation", "way", "closedway" or any comma separated combination of them.
A name of an icon that is within any classpath in the subdirectory of /images/symbols. You can load plugin-jar's to provide those images as well. The image will be used as icon to display in the selection list and when adding the preset to the toolbar. The icon should be quadratic in size.
This specifies the property key that will be modified by the item.
text="Any text"
The description, that will be displayed before (after in case of <check>) the gui element.
Translation context for text attribute to separate equals words with different meaning (not required for in-file translations).
The default value for the item. If not specified, the current value of the key is chosen as default (if applicable).
A list of entries (for the combo box and multiselect). The list has to be separated by commas (for the combo box) or by the specified delimiter (for the multiselect). If a value contains the delimiter, the delimiter may be escaped with a backslash. If a value contains a backslash, it must also be escaped with a backslash.
Translation context for name attribute to separate equals words with different meaning (not required for in-file translations).
A list of entries that is displayed to the user. Must be the same number of entries as values and editable must be false or not specified. For the delimiter character and escaping, see the remarks at values.
Specify a value to be entered in the <key> tag.
Specify the true value to be entered in the <key> tag (default is "yes").
Specify the false value to be entered in the <key> tag (default is "no").
The combo box is readonly, which means that the user can only select an item in the list.
For combo boxes or text fields the last value is used as default. Using "force" enforces this behaviour also for already tagged objects.
Specify the number of rows in multiselect entry.
name_template="template", name_template_filter="search expression"
Custom name formatter for osm primitives matching this preset. See NameTemplate for details.
Allows to change the matching process, i.e., determining whether the tags of an OSM object fit into this preset.

  • none: neutral, i.e., do not consider this item for matching
  • key: positive if key matches, neutral otherwise
  • key!: positive if key matches, negative otherwise
  • keyvalue: positive if key and value matches, neutral otherwise
  • keyvalue!: positive if key and value matches, negative otherwise
Note that for a match, at least one positive and no negative is required. Default is "keyvalue!" for <key> and "none" for <text>, <combo>, <multiselect> and <check>.

To support translations, all textual elements may be used in translated form. E.g. "" would represent the name in case German language support is loaded.

Icon handling

See Styles.

See also

Last modified 37 hours ago Last modified on Oct 24, 2014, 10:25:46 PM

Attachments (2)

Download all attachments as: .zip