Index: trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 17519)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 17521)
@@ -20,4 +20,5 @@
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Locale;
@@ -25,4 +26,5 @@
 import java.util.Map.Entry;
 import java.util.Optional;
+import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -345,17 +347,18 @@
      */
     private static String getCommentWithDataSetHashTag(String comment, DataSet dataSet) {
-        String result = comment;
+        StringBuilder result = new StringBuilder(comment);
         if (dataSet != null) {
             String hashtags = dataSet.getChangeSetTags().get("hashtags");
             if (hashtags != null) {
+                Set<String> sanitizedHashtags = new LinkedHashSet<>();
                 for (String hashtag : hashtags.split(";", -1)) {
-                    String sanitizedHashtag = hashtag.startsWith("#") ? hashtag : "#" + hashtag;
-                    if (!result.contains(sanitizedHashtag)) {
-                        result = result + " " + sanitizedHashtag;
-                    }
+                    sanitizedHashtags.add(hashtag.startsWith("#") ? hashtag : "#" + hashtag);
                 }
-            }
-        }
-        return result;
+                if (!sanitizedHashtags.isEmpty()) {
+                    result.append(' ').append(String.join(" ", sanitizedHashtags));
+                }
+            }
+        }
+        return result.toString();
     }
 
