diff --git a/source/common/uloc_tag.cpp b/source/common/uloc_tag.cpp
index 1c10c481..2b76a927 100644
--- a/source/common/uloc_tag.cpp
+++ b/source/common/uloc_tag.cpp
@@ -1110,6 +1110,19 @@ _appendRegionToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool stri
     }
 }
 
+static void _sortVariants(VariantListEntry* first) {
+    for (VariantListEntry* var1 = first; var1 != NULL; var1 = var1->next) {
+        for (VariantListEntry* var2 = var1->next; var2 != NULL; var2 = var2->next) {
+            // Swap var1->variant and var2->variant.
+            if (uprv_compareInvCharsAsAscii(var1->variant, var2->variant) > 0) {
+                const char* temp = var1->variant;
+                var1->variant = var2->variant;
+                var2->variant = temp;
+            }
+        }
+    }
+}
+
 static void
 _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool strict, UBool *hadPosix, UErrorCode* status) {
     char buf[ULOC_FULLNAME_CAPACITY];
@@ -1199,6 +1212,9 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
             if (varFirst != NULL) {
                 int32_t varLen;
 
+                /* per UTS35, we should sort the variants */
+                _sortVariants(varFirst);
+
                 /* write out validated/normalized variants to the target */
                 var = varFirst;
                 while (var != NULL) {
@@ -2822,6 +2838,7 @@ ulocimp_forLanguageTag(const char* langtag,
     }
 
     /* variants */
+    _sortVariants(lt.getAlias()->variants);
     n = ultag_getVariantsSize(lt.getAlias());
     if (n > 0) {
         if (noRegion) {
