diff --git a/flag.module b/flag.module
index fe0e96f..dde95e0 100644
--- a/flag.module
+++ b/flag.module
@@ -461,6 +461,12 @@ function flag_entity_operation(\Drupal\Core\Entity\EntityInterface $entity) {
         'weight' => 50,
       ];
     }
+
+    $operations['reset'] = [
+      'title' => t('Reset'),
+      'url' => $entity->urlInfo('reset'),
+      'weight' => 100,
+    ];
   }
 
   return $operations;
diff --git a/flag.routing.yml b/flag.routing.yml
index 35299b5..b56fe85 100644
--- a/flag.routing.yml
+++ b/flag.routing.yml
@@ -117,3 +117,11 @@ entity.flag.disable:
     _title: 'Disable Flag?'
   requirements:
     _permission: 'administer flags'
+
+entity.flag.reset:
+  path: '/flag/reset/{flag}'
+  defaults:
+    _form: '\Drupal\flag\Form\FlagResetForm'
+    _title: 'Reset Flag?'
+  requirements:
+    _permission: 'administer flags'
diff --git a/src/Entity/Flag.php b/src/Entity/Flag.php
index 19623c1..e736028 100644
--- a/src/Entity/Flag.php
+++ b/src/Entity/Flag.php
@@ -58,7 +58,8 @@ use Drupal\flag\FlagInterface;
  *     "edit-form" = "/admin/structure/flags/manage/{flag}",
  *     "delete-form" = "/admin/structure/flags/manage/{flag}/delete",
  *     "enable" = "/flag/enable/{flag}",
- *     "disable" = "/flag/disable/{flag}"
+ *     "disable" = "/flag/disable/{flag}",
+ *     "reset" = "/flag/reset/{flag}"
  *   }
  * )
  */
diff --git a/src/Form/FlagResetForm.php b/src/Form/FlagResetForm.php
new file mode 100644
index 0000000..3c2b6d5
--- /dev/null
+++ b/src/Form/FlagResetForm.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\flag\Form\FlagResetForm.
+ */
+
+namespace Drupal\flag\Form;
+
+use Drupal\Core\Url;
+use Drupal\flag\FlagInterface;
+use Drupal\Core\Form\ConfirmFormBase;
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Provides the flag reset form.
+ */
+class FlagResetForm extends ConfirmFormBase {
+
+  /**
+   * The flag to reset.
+   *
+   * @var \Drupal\flag\FlagInterface
+   */
+  protected $flag;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state,
+                            FlagInterface $flag = NULL) {
+    $this->flag = $flag;
+    return parent::buildForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'flag_reset_confirm_form';
+  }
+
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getQuestion() {
+    return t('Are you sure you want to reset the Flag %label?', [
+      '%label' => $this->flag->label(),
+    ]);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDescription() {
+    return t('All flaggings created with Flag %label will be deleted.', [
+      '%label' => $this->flag->label(),
+    ]);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getConfirmText() {
+    return t('Reset');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCancelUrl() {
+    return new Url('flag.list');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    flag_reset_flag($this->flag);
+    drupal_set_message(t('Flag %label was reset.', [
+      '%label' => $this->flag->label(),
+    ]));
+
+    $form_state->setRedirectUrl($this->getCancelUrl());
+  }
+
+}
