diff --git a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldFormatterSettingsTest.php b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldFormatterSettingsTest.php
index aa47c90..5659178 100644
--- a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldFormatterSettingsTest.php
+++ b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldFormatterSettingsTest.php
@@ -134,6 +134,7 @@ public function testEntityDisplaySettings() {
     $this->assertIdentical($expected, $component);
     $display = EntityViewDisplay::load('node.story.default');
     $expected['type'] = 'file_url_plain';
+    $expected['settings'] = ['absolute_url' => FALSE];
     $component = $display->getComponent('field_test_filefield');
     $this->assertIdentical($expected, $component);
 
diff --git a/core/modules/file/config/schema/file.schema.yml b/core/modules/file/config/schema/file.schema.yml
index 42d57d9..90a3b73 100644
--- a/core/modules/file/config/schema/file.schema.yml
+++ b/core/modules/file/config/schema/file.schema.yml
@@ -85,6 +85,10 @@ field.formatter.settings.file_table:
 field.formatter.settings.file_url_plain:
   type: mapping
   label: 'URL to file format settings'
+  mapping:
+    absolute_url:
+      type: boolean
+      label: 'Render as absolute URL'
 
 field.widget.settings.file_generic:
   type: mapping
diff --git a/core/modules/file/src/Plugin/Field/FieldFormatter/UrlPlainFormatter.php b/core/modules/file/src/Plugin/Field/FieldFormatter/UrlPlainFormatter.php
index d5e2a7c..5bbd291 100644
--- a/core/modules/file/src/Plugin/Field/FieldFormatter/UrlPlainFormatter.php
+++ b/core/modules/file/src/Plugin/Field/FieldFormatter/UrlPlainFormatter.php
@@ -3,6 +3,7 @@
 namespace Drupal\file\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FieldItemListInterface;
+use Drupal\Core\Form\FormStateInterface;
 
 /**
  * Plugin implementation of the 'file_url_plain' formatter.
@@ -20,12 +21,61 @@ class UrlPlainFormatter extends FileFormatterBase {
   /**
    * {@inheritdoc}
    */
+  public static function defaultSettings() {
+    $settings = parent::defaultSettings();
+
+    $settings['absolute_url'] = FALSE;
+    return $settings;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function settingsForm(array $form, FormStateInterface $form_state) {
+    $form = parent::settingsForm($form, $form_state);
+
+    $form['absolute_url'] = [
+      '#type' => 'checkbox',
+      '#title' => t('Render as absolute url'),
+      '#description' => t('If checked, links will be rendered as absolute urls.'),
+      '#default_value' => $this->getSetting('absolute_url'),
+    ];
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function settingsSummary() {
+    $summary = [];
+
+    if ($this->getSetting('absolute_url')) {
+      $summary[] = t('Rendered as absolute url');
+    }
+    else {
+      $summary[] = t('Rendered as relative url');
+    }
+
+    return $summary;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function viewElements(FieldItemListInterface $items, $langcode) {
     $elements = [];
 
     foreach ($this->getEntitiesToView($items, $langcode) as $delta => $file) {
+      if ($this->getSetting('absolute_url')) {
+        $markup = file_create_url($file->getFileUri());
+      }
+      else {
+        $markup = file_url_transform_relative(file_create_url($file->getFileUri()));
+      }
+
       $elements[$delta] = [
-        '#markup' => file_url_transform_relative(file_create_url($file->getFileUri())),
+        '#markup' => $markup,
         '#cache' => [
           'tags' => $file->getCacheTags(),
         ],
