Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 11072)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 11073)
@@ -6,7 +6,9 @@
 import java.io.IOException;
 import java.net.URL;
+import java.util.Optional;
 import java.util.concurrent.Future;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Stream;
 
 import org.openstreetmap.josm.Main;
@@ -39,4 +41,6 @@
 
     private static final String PATTERN_TRACE_ID = "https?://.*(osm|openstreetmap).org/trace/\\p{Digit}+/data";
+    private static final String PATTERN_USER_TRACE_ID = "https?://.*(osm|openstreetmap).org/user/[^/]+/traces/(\\p{Digit}+)";
+    private static final String PATTERN_EDIT_TRACE_ID = "https?://.*(osm|openstreetmap).org/edit/?\\?gpx=(\\p{Digit}+)";
 
     private static final String PATTERN_TRACKPOINTS_BBOX = "https?://.*/api/0.6/trackpoints\\?bbox=.*,.*,.*,.*";
@@ -49,5 +53,9 @@
     @Override
     public String[] getPatterns() {
-        return new String[] {PATTERN_EXTERNAL_GPX_FILE, PATTERN_EXTERNAL_GPX_SCRIPT, PATTERN_TRACE_ID, PATTERN_TRACKPOINTS_BBOX};
+        return new String[] {
+                PATTERN_EXTERNAL_GPX_FILE, PATTERN_EXTERNAL_GPX_SCRIPT,
+                PATTERN_TRACE_ID, PATTERN_USER_TRACE_ID, PATTERN_EDIT_TRACE_ID,
+                PATTERN_TRACKPOINTS_BBOX,
+        };
     }
 
@@ -69,4 +77,12 @@
     public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
         CheckParameterUtil.ensureParameterNotNull(url, "url");
+        final Optional<String> mappedUrl = Stream.of(PATTERN_USER_TRACE_ID, PATTERN_EDIT_TRACE_ID)
+                .map(p -> Pattern.compile(p).matcher(url))
+                .filter(Matcher::matches)
+                .map(m -> "https://www.openstreetmap.org/trace/" + m.group(2) + "/data")
+                .findFirst();
+        if (mappedUrl.isPresent()) {
+            return loadUrl(newLayer, mappedUrl.get(), progressMonitor);
+        }
         if (url.matches(PATTERN_TRACE_ID)
          || url.matches(PATTERN_EXTERNAL_GPX_SCRIPT)
