diff --git a/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java
index 84640adca..99a07119f 100644
--- a/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java
+++ b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java
@@ -30,6 +30,7 @@ import org.openstreetmap.josm.data.osm.history.HistoryRelation;
 import org.openstreetmap.josm.data.osm.history.HistoryWay;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetNameTemplateList;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.I18n;
@@ -174,6 +175,9 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
                 if (n == null) {
                     n = formatAddress(node);
                 }
+                if (n == null) {
+                    n = formatMatchingPreset(node);
+                }
 
                 if (n == null) {
                     n = node.isNew() ? tr("node") : Long.toString(node.getId());
@@ -230,17 +234,11 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
                 if (n == null) {
                     n = way.get("ref");
                 }
-                if (n == null) {
-                    n = way.hasKey("highway") ? tr("highway") :
-                        way.hasKey("railway") ? tr("railway") :
-                        way.hasKey("waterway") ? tr("waterway") :
-                        way.hasKey("landuse") ? tr("landuse") : null;
-                }
                 if (n == null) {
                     n = formatAddress(way);
                 }
-                if (n == null && way.hasKey("building")) {
-                    n = tr("building");
+                if (n == null) {
+                    n = formatMatchingPreset(way);
                 }
                 if (n == null || n.isEmpty()) {
                     n = String.valueOf(way.getId());
@@ -305,6 +303,17 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         return n;
     }
 
+    private String formatMatchingPreset(IPrimitive osm) {
+        Collection<TaggingPreset> presets = TaggingPresets.getMatchingPresets(osm);
+        if (!presets.isEmpty()) {
+            TaggingPreset taggingPreset = presets.iterator().next();
+            return taggingPreset.group != null
+                    ? taggingPreset.group.getLocaleName() + "/" + taggingPreset.getLocaleName()
+                    : taggingPreset.getLocaleName();
+        }
+        return null;
+    }
+
     private final Comparator<IWay<?>> wayComparator = Comparator.comparing(this::format);
 
     @Override
