diff --git a/src/Form/DropdownWidgetForm.php b/src/Form/DropdownWidgetForm.php
new file mode 100644
index 0000000..9331aca
--- /dev/null
+++ b/src/Form/DropdownWidgetForm.php
@@ -0,0 +1,110 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\facets\Form\DropdownWidgetForm.
+ */
+
+namespace Drupal\facets\Form;
+
+use Drupal\Core\Form\BaseFormIdInterface;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+use Drupal\facets\FacetInterface;
+use Symfony\Component\HttpFoundation\RedirectResponse;
+
+/**
+ * The dropdown widget form.
+ */
+class DropdownWidgetForm implements BaseFormIdInterface {
+
+  use StringTranslationTrait;
+
+  /**
+   * The facet to build the form for.
+   *
+   * @var FacetInterface $facet
+   */
+  protected $facet;
+
+  /**
+   * Class constructor.
+   *
+   * @param \Drupal\facets\FacetInterface $facet
+   *   The facet to build the form for.
+   */
+  public function __construct(FacetInterface $facet) {
+    $this->facet = $facet;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getBaseFormId() {
+    return 'facets_dropdown_widget';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return $this->getBaseFormId() . '__' . $this->facet->id();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    $results = $this->facet->getResults();
+
+    $configuration = $this->facet->getWidgetConfigs();
+    $form['dropdown'] = [
+      '#type' => 'select',
+      '#title' => $this->facet->getName(),
+      '#default_value' => '_none',
+    ];
+
+    $options = [];
+    $active_result_url = '_none';
+    foreach ($results as $result) {
+      $result_url = $result->getUrl()->setAbsolute()->toString();
+
+      $text = $result->getDisplayValue();
+      if (!empty($configuration['show_numbers'])) {
+        $text .= ' (' . $result->getCount() . ')';
+      }
+
+      if ($result->isActive()) {
+        $options['_none'] = $text;
+        $active_result_url = $result_url;
+      }
+      else {
+        $options[$result_url] = $text;
+      }
+    }
+
+    $options = [$active_result_url => $this->t('- All -')] + $options;
+
+    $form['dropdown']['#options'] = $options;
+
+    $form['submit'] = [
+      '#type' => 'submit',
+      '#value' => 'submit',
+    ];
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validateForm(array &$form, FormStateInterface $form_state) { }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $form_state->setResponse(new RedirectResponse($form_state->getValue('dropdown')));
+  }
+
+}
diff --git a/src/Plugin/facets/widget/DropdownWidget.php b/src/Plugin/facets/widget/DropdownWidget.php
new file mode 100644
index 0000000..12a8650
--- /dev/null
+++ b/src/Plugin/facets/widget/DropdownWidget.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\facets\Plugin\facets\widget\DropdownWidget.
+ */
+
+namespace Drupal\facets\Plugin\facets\widget;
+
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+use Drupal\facets\FacetInterface;
+use Drupal\facets\Form\DropdownWidgetForm;
+use Drupal\facets\Widget\WidgetInterface;
+
+/**
+ * The dropdown widget.
+ *
+ * @FacetsWidget(
+ *   id = "select",
+ *   label = @Translation("Dropdown"),
+ *   description = @Translation("A configurable widget that shows a dropdown."),
+ * )
+ */
+class DropdownWidget implements WidgetInterface {
+
+  use StringTranslationTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function build(FacetInterface $facet) {
+    $form_builder = \Drupal::getContainer()->get('form_builder');
+    $form_object = new DropdownWidgetForm($facet);
+    return $form_builder->getForm($form_object);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getQueryType($query_types) {
+    return $query_types['string'];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildConfigurationForm(array $form, FormStateInterface $form_state, $config) {
+
+    $form['show_numbers'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Show the amount of results'),
+    ];
+
+    if (!is_null($config)) {
+      $widget_configs = $config->get('widget_configs');
+      if (isset($widget_configs['show_numbers'])) {
+        $form['show_numbers']['#default_value'] = $widget_configs['show_numbers'];
+      }
+    }
+
+    return $form;
+  }
+
+}
