diff --git a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php
index b9a229a..baf1eb5 100644
--- a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php
+++ b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php
@@ -207,6 +207,12 @@ public function massageFormValues(array $values, array $form, array &$form_state
         try {
           $parsed_url = UrlHelper::parse($value['url']);
 
+          // If internal links are supported, look up whether the given value is
+          // a path alias and store the system path instead.
+          if ($this->supportsInternalLinks() && !UrlHelper::isExternal($value['url'])) {
+            $parsed_url['path'] = \Drupal::service('path.alias_manager.cached')->getSystemPath($parsed_url['path']);
+          }
+
           $url = Url::createFromPath($parsed_url['path']);
           $url->setOption('query', $parsed_url['query']);
           $url->setOption('fragment', $parsed_url['fragment']);
diff --git a/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php b/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php
index e335fd7..01f7ed7 100644
--- a/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php
+++ b/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php
@@ -103,12 +103,15 @@ function testURLValidation() {
     $this->assertFieldByName("{$field_name}[0][url]", '', 'Link URL field is displayed');
     $this->assertRaw('placeholder="http://example.com"');
 
+    // Create a path alias.
+    \Drupal::service('path.alias_storage')->save('admin', 'a/path/alias');
     // Define some valid URLs.
     $valid_external_entries = array(
       'http://www.example.com/',
     );
     $valid_internal_entries = array(
       'entity_test/add',
+      'a/path/alias',
     );
 
     // Define some invalid URLs.
