Index: trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java	(revision 14802)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java	(revision 14803)
@@ -5,4 +5,6 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.function.Supplier;
 
@@ -65,9 +67,5 @@
         for (String i : keys) {
             if (i.equals(k)) {
-                TestError error = validateTag(p, k, validator, code);
-                if (error != null) {
-                    errors.add(error);
-                }
-                break;
+                return errors.addAll(validateTag(p, k, validator, code));
             }
         }
@@ -83,6 +81,7 @@
      * @return The error if the validation fails, {@code null} otherwise
      * @since 7824
+     * @since 14803 (return type)
      */
-    public TestError validateTag(OsmPrimitive p, String k, AbstractValidator validator, int code) {
+    public List<TestError> validateTag(OsmPrimitive p, String k, AbstractValidator validator, int code) {
         return doValidateTag(p, k, null, validator, code);
     }
@@ -97,27 +96,29 @@
      * @return The error if the validation fails, {@code null} otherwise
      */
-    private TestError doValidateTag(OsmPrimitive p, String k, String v, AbstractValidator validator, int code) {
-        TestError error = null;
-        String value = v != null ? v : p.get(k);
-        if (!validator.isValid(value)) {
-            Supplier<Command> fix = null;
-            String errMsg = validator.getErrorMessage();
-            if (tr("URL contains an invalid protocol: {0}", (String) null).equals(errMsg)) {
-                // Special treatment to allow URLs without protocol. See UrlValidator#isValid
-                String proto = validator instanceof EmailValidator ? "mailto://" : "http://";
-                return doValidateTag(p, k, proto+value, validator, code);
-            } else if (tr("URL contains an invalid authority: {0}", (String) null).equals(errMsg)
-                    && value.contains("\\") && validator.isValid(value.replaceAll("\\\\", "/"))) {
-                // Special treatment to autofix URLs with backslashes. See UrlValidator#isValid
-                errMsg = tr("URL contains backslashes instead of slashes");
-                fix = () -> new ChangePropertyCommand(p, k, value.replaceAll("\\\\", "/"));
+    private List<TestError> doValidateTag(OsmPrimitive p, String k, String v, AbstractValidator validator, int code) {
+        List<TestError> errors = new ArrayList<>();
+        String values = v != null ? v : p.get(k);
+        for (String value : values.split(";")) {
+            if (!validator.isValid(value)) {
+                Supplier<Command> fix = null;
+                String errMsg = validator.getErrorMessage();
+                if (tr("URL contains an invalid protocol: {0}", (String) null).equals(errMsg)) {
+                    // Special treatment to allow URLs without protocol. See UrlValidator#isValid
+                    String proto = validator instanceof EmailValidator ? "mailto://" : "http://";
+                    return doValidateTag(p, k, proto+value, validator, code);
+                } else if (tr("URL contains an invalid authority: {0}", (String) null).equals(errMsg)
+                        && value.contains("\\") && validator.isValid(value.replaceAll("\\\\", "/"))) {
+                    // Special treatment to autofix URLs with backslashes. See UrlValidator#isValid
+                    errMsg = tr("URL contains backslashes instead of slashes");
+                    fix = () -> new ChangePropertyCommand(p, k, value.replaceAll("\\\\", "/"));
+                }
+                errors.add(TestError.builder(this, Severity.WARNING, code)
+                            .message(validator.getValidatorName(), marktr("''{0}'': {1}"), k, errMsg)
+                            .primitives(p)
+                            .fix(fix)
+                            .build());
             }
-            error = TestError.builder(this, Severity.WARNING, code)
-                    .message(validator.getValidatorName(), marktr("''{0}'': {1}"), k, errMsg)
-                    .primitives(p)
-                    .fix(fix)
-                    .build();
         }
-        return error;
+        return errors;
     }
 
Index: trunk/test/unit/org/openstreetmap/josm/data/validation/tests/InternetTagsTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/tests/InternetTagsTest.java	(revision 14802)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/tests/InternetTagsTest.java	(revision 14803)
@@ -3,7 +3,10 @@
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.List;
 
 import org.junit.Rule;
@@ -51,4 +54,12 @@
 
     /**
+     * Test multiple URLs.
+     */
+    @Test
+    public void testMultipleUrls() {
+        testUrl("url", "http://www.domain-a.com;https://www.domain-b.com", true); // multiple values
+    }
+
+    /**
      * Test of invalid URLs.
      */
@@ -82,24 +93,25 @@
     @Test
     public void testInvalidSlashes() {
-        TestError error = testUrl("website", "http:\\\\www.sjoekurs.no", false);
+        TestError error = testUrl("website", "http:\\\\www.sjoekurs.no", false).get(0);
         assertEquals(tr("''{0}'': {1}", "website", tr("URL contains backslashes instead of slashes")), error.getDescription());
         assertNotNull(error.getFix());
     }
 
-    private static TestError testKey(String key, String value, boolean valid, AbstractValidator validator, int code) {
-        TestError error = TEST.validateTag(TestUtils.addFakeDataSet(TestUtils.newNode(key+"="+value+"")), key, validator, code);
+    private static List<TestError> testKey(String key, String value, boolean valid, AbstractValidator validator, int code) {
+        List<TestError> errors = TEST.validateTag(TestUtils.addFakeDataSet(TestUtils.newNode(key+"="+value+"")), key, validator, code);
         if (valid) {
-            assertNull(error != null ? error.getMessage() : null, error);
+            assertTrue(errors.isEmpty());
         } else {
-            assertNotNull(error);
+            assertFalse(errors.isEmpty());
+            assertNotNull(errors.get(0));
         }
-        return error;
+        return errors;
     }
 
-    private static TestError testUrl(String key, String value, boolean valid) {
+    private static List<TestError> testUrl(String key, String value, boolean valid) {
         return testKey(key, value, valid, UrlValidator.getInstance(), InternetTags.INVALID_URL);
     }
 
-    private static TestError testEmail(String key, String value, boolean valid) {
+    private static List<TestError> testEmail(String key, String value, boolean valid) {
         return testKey(key, value, valid, EmailValidator.getInstance(), InternetTags.INVALID_EMAIL);
     }
