diff --git a/src/wp-includes/class-wp-theme.php b/src/wp-includes/class-wp-theme.php
index 6c9b7a1d9f..b41a9f1b2a 100644
--- a/src/wp-includes/class-wp-theme.php
+++ b/src/wp-includes/class-wp-theme.php
@@ -1326,6 +1326,22 @@ final class WP_Theme implements ArrayAccess {
        if ( empty( $page_templates ) ) {
                return array();
        }
+
+       /*
+        * Sort page templates by their human-readable template name
+        * instead of by filename.
+        *
+        * This ensures the Page Template dropdown in the editor UI
+        * is ordered alphabetically by template label.
+        *
+        * @see https://core.trac.wordpress.org/ticket/49194
+        */
+       uasort(
+               $page_templates,
+               static function ( $a, $b ) {
+                       return strnatcasecmp( $a, $b );
+               }
+       );
+
        return $page_templates;
 }
