diff --git a/core/modules/media/config/install/core.entity_form_display.media.file.default.yml b/core/modules/media/config/install/core.entity_form_display.media.file.default.yml
index 15de2acd90..1ffdc335dd 100644
--- a/core/modules/media/config/install/core.entity_form_display.media.file.default.yml
+++ b/core/modules/media/config/install/core.entity_form_display.media.file.default.yml
@@ -32,6 +32,13 @@ content:
       size: 60
       placeholder: ''
     third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
   uid:
     type: entity_reference_autocomplete
     weight: 5
diff --git a/core/modules/media/config/install/core.entity_form_display.media.image.default.yml b/core/modules/media/config/install/core.entity_form_display.media.image.default.yml
index 7806770ef9..8911cdb09c 100644
--- a/core/modules/media/config/install/core.entity_form_display.media.image.default.yml
+++ b/core/modules/media/config/install/core.entity_form_display.media.image.default.yml
@@ -34,6 +34,13 @@ content:
       size: 60
       placeholder: ''
     third_party_settings: {  }
+  status:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 120
+    region: content
+    third_party_settings: {  }
   uid:
     type: entity_reference_autocomplete
     weight: 5
diff --git a/core/modules/media/src/Entity/Media.php b/core/modules/media/src/Entity/Media.php
index 858404112e..5c68552888 100644
--- a/core/modules/media/src/Entity/Media.php
+++ b/core/modules/media/src/Entity/Media.php
@@ -423,6 +423,16 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ])
       ->setDisplayConfigurable('view', TRUE);
 
+    $fields['status']
+      ->setDisplayOptions('form', [
+        'type' => 'boolean_checkbox',
+        'settings' => [
+          'display_label' => TRUE,
+        ],
+        'weight' => 120,
+      ])
+      ->setDisplayConfigurable('form', TRUE);
+
     $fields['created'] = BaseFieldDefinition::create('created')
       ->setLabel(t('Authored on'))
       ->setDescription(t('The time the media item was created.'))
diff --git a/core/modules/media/src/MediaForm.php b/core/modules/media/src/MediaForm.php
index 1e91e9f627..3766950a82 100644
--- a/core/modules/media/src/MediaForm.php
+++ b/core/modules/media/src/MediaForm.php
@@ -49,66 +49,10 @@ public function form(array $form, FormStateInterface $form_state) {
 
     $form['#attached']['library'][] = 'media/media_form';
 
-    $form['#entity_builders']['update_status'] = [$this, 'updateStatus'];
-
     return $form;
   }
 
   /**
-   * {@inheritdoc}
-   */
-  protected function actions(array $form, FormStateInterface $form_state) {
-    $element = parent::actions($form, $form_state);
-    $media = $this->entity;
-
-    // Add a "Publish" button.
-    $element['publish'] = $element['submit'];
-    // If the "Publish" button is clicked, we want to update the status to
-    // "published".
-    $element['publish']['#published_status'] = TRUE;
-    $element['publish']['#dropbutton'] = 'save';
-    if ($media->isNew()) {
-      $element['publish']['#value'] = $this->t('Save and publish');
-    }
-    else {
-      $element['publish']['#value'] = $media->isPublished() ? $this->t('Save and keep published') : $this->t('Save and publish');
-    }
-    $element['publish']['#weight'] = 0;
-
-    // Add a "Unpublish" button.
-    $element['unpublish'] = $element['submit'];
-    // If the "Unpublish" button is clicked, we want to update the status to
-    // "unpublished".
-    $element['unpublish']['#published_status'] = FALSE;
-    $element['unpublish']['#dropbutton'] = 'save';
-    if ($media->isNew()) {
-      $element['unpublish']['#value'] = $this->t('Save as unpublished');
-    }
-    else {
-      $element['unpublish']['#value'] = !$media->isPublished() ? $this->t('Save and keep unpublished') : $this->t('Save and unpublish');
-    }
-    $element['unpublish']['#weight'] = 10;
-
-    // If already published, the 'publish' button is primary.
-    if ($media->isPublished()) {
-      $element['publish']['#button_type'] = 'primary';
-    }
-    // Otherwise, the 'unpublish' button is primary and should come first.
-    else {
-      $element['unpublish']['#button_type'] = 'primary';
-      $element['unpublish']['#weight'] = -10;
-    }
-
-    // Remove the "Save" button.
-    $element['submit']['#access'] = FALSE;
-
-    $element['delete']['#access'] = $media->access('delete');
-    $element['delete']['#weight'] = 100;
-
-    return $element;
-  }
-
-  /**
    * Entity builder updating the media status with the submitted value.
    *
    * @param string $entity_type_id
diff --git a/core/modules/media/tests/src/Functional/MediaRevisionTest.php b/core/modules/media/tests/src/Functional/MediaRevisionTest.php
index ce1897f3ce..6e409b30ec 100644
--- a/core/modules/media/tests/src/Functional/MediaRevisionTest.php
+++ b/core/modules/media/tests/src/Functional/MediaRevisionTest.php
@@ -26,7 +26,7 @@ public function testFileMediaRevision() {
     $page = $this->getSession()->getPage();
     $page->fillField('Name', 'Foobar');
     $page->attachFileToField('File', $this->container->get('file_system')->realpath($uri));
-    $page->pressButton('Save and publish');
+    $page->pressButton('Save');
     $assert->addressMatches('/^\/media\/[0-9]+$/');
 
     // The media item was just created, so it should only have one revision.
@@ -41,7 +41,7 @@ public function testFileMediaRevision() {
     $assert->checkboxChecked('Create new revision');
     $page = $this->getSession()->getPage();
     $page->fillField('Name', 'Foobaz');
-    $page->pressButton('Save and keep published');
+    $page->pressButton('Save');
     $this->assertRevisionCount($media, 2);
   }
 
@@ -66,7 +66,7 @@ public function testImageMediaRevision() {
     $page = $this->getSession()->getPage();
     $page->fillField('Name', 'Foobar');
     $page->attachFileToField('Image', \Drupal::root() . '/core/modules/media/tests/fixtures/example_1.jpeg');
-    $page->pressButton('Save and publish');
+    $page->pressButton('Save');
     $assert->addressMatches('/^\/media\/[0-9]+$/');
 
     // The media item was just created, so it should only have one revision.
@@ -81,7 +81,7 @@ public function testImageMediaRevision() {
     $assert->checkboxChecked('Create new revision');
     $page = $this->getSession()->getPage();
     $page->fillField('Name', 'Foobaz');
-    $page->pressButton('Save and keep published');
+    $page->pressButton('Save');
     $this->assertRevisionCount($media, 2);
   }
 
diff --git a/core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php b/core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php
index 8f3f67506a..4caab94083 100644
--- a/core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php
+++ b/core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php
@@ -59,7 +59,7 @@ public function testMediaWithOnlyOneMediaType() {
     $page->fillField('name[0][value]', $media_name);
     $revision_log_message = $this->randomString();
     $page->fillField('revision_log_message[0][value]', $revision_log_message);
-    $page->pressButton('Save and publish');
+    $page->pressButton('Save');
     $media_id = $this->container->get('entity.query')->get('media')->execute();
     $media_id = reset($media_id);
     /** @var \Drupal\media\MediaInterface $media */
@@ -78,7 +78,7 @@ public function testMediaWithOnlyOneMediaType() {
     $assert_session->checkboxNotChecked('edit-revision');
     $media_name = $this->randomMachineName();
     $page->fillField('name[0][value]', $media_name2);
-    $page->pressButton('Save and keep published');
+    $page->pressButton('Save');
     /** @var \Drupal\media\MediaInterface $media */
     $media = $this->container->get('entity_type.manager')
       ->getStorage('media')
@@ -109,7 +109,7 @@ public function testMediaWithOnlyOneMediaType() {
     $assert_session->checkboxChecked('edit-revision');
     $page->fillField('name[0][value]', $media_name);
     $page->fillField('revision_log_message[0][value]', $revision_log_message);
-    $page->pressButton('Save and keep published');
+    $page->pressButton('Save');
     $assert_session->titleEquals($media_name . ' | Drupal');
     /** @var \Drupal\media\MediaInterface $media */
     $media = $this->container->get('entity_type.manager')
@@ -118,6 +118,16 @@ public function testMediaWithOnlyOneMediaType() {
     $this->assertEquals($media->getRevisionLogMessage(), $revision_log_message);
     $this->assertNotEquals($previous_revision_id, $media->getRevisionId());
 
+    // Test the status checkbox.
+    $this->drupalGet('media/' . $media_id . '/edit');
+    $page->uncheckField('status[value]');
+    $page->pressButton('Save');
+    /** @var \Drupal\media\MediaInterface $media */
+    $media = $this->container->get('entity_type.manager')
+      ->getStorage('media')
+      ->loadUnchanged($media_id);
+    $this->assertFalse($media->isPublished());
+
     // Tests media delete form.
     $this->drupalGet('media/' . $media_id . '/edit');
     $page->clickLink('Delete');
diff --git a/core/modules/media/tests/src/FunctionalJavascript/MediaSourceFileTest.php b/core/modules/media/tests/src/FunctionalJavascript/MediaSourceFileTest.php
index 8c80b8343d..9cf467b61c 100644
--- a/core/modules/media/tests/src/FunctionalJavascript/MediaSourceFileTest.php
+++ b/core/modules/media/tests/src/FunctionalJavascript/MediaSourceFileTest.php
@@ -47,7 +47,7 @@ public function testMediaFileSource() {
     $this->drupalGet("media/add/{$media_type_id}");
     $page->attachFileToField("files[{$source_field_id}_0]", \Drupal::service('file_system')->realpath($test_filepath));
     $assert_session->assertWaitOnAjaxRequest();
-    $page->pressButton('Save and publish');
+    $page->pressButton('Save');
 
     $assert_session->addressEquals('media/1');
 
@@ -64,7 +64,7 @@ public function testMediaFileSource() {
     $this->drupalGet("media/add/{$media_type_id}");
     $page->attachFileToField("files[{$source_field_id}_0]", \Drupal::service('file_system')->realpath($test_filepath));
     $assert_session->assertWaitOnAjaxRequest();
-    $page->pressButton('Save and publish');
+    $page->pressButton('Save');
     $assert_session->elementAttributeContains('css', '.image-style-thumbnail', 'src', 'text--plain.png');
   }
 
diff --git a/core/modules/media/tests/src/FunctionalJavascript/MediaSourceImageTest.php b/core/modules/media/tests/src/FunctionalJavascript/MediaSourceImageTest.php
index 0505d3bb11..1aa3fe0b85 100644
--- a/core/modules/media/tests/src/FunctionalJavascript/MediaSourceImageTest.php
+++ b/core/modules/media/tests/src/FunctionalJavascript/MediaSourceImageTest.php
@@ -62,7 +62,7 @@ public function testMediaImageSource() {
     $page->attachFileToField("files[{$source_field_id}_0]", \Drupal::root() . '/core/modules/media/tests/fixtures/example_1.jpeg');
     $assert_session->assertWaitOnAjaxRequest();
     $page->fillField("{$source_field_id}[0][alt]", 'Image Alt Text 1');
-    $page->pressButton('Save and publish');
+    $page->pressButton('Save');
 
     $assert_session->addressEquals('media/1');
 
