diff --git a/facets.api.php b/facets.api.php
index 1877085..ce2c9cf 100644
--- a/facets.api.php
+++ b/facets.api.php
@@ -26,3 +26,21 @@ function hook_facets_search_api_query_type_mapping_alter($backend_plugin_id, arr
     $query_types['string'] = 'search_api_solr_string';
   }
 }
+
+/**
+ * Alter the query string built for facet item.
+ *
+ * Allow other modules to alter/modify the url built for the facet items.
+ *
+ * @param \Drupal\facets\FacetInterface $facet
+ *   Facet on which to do alter.
+ * @param array $filter_params
+ *   Filter params
+ * @param array $context
+ *   Context for result and active filters.
+ */
+function hook_facets_query_string_alter(\Drupal\facets\FacetInterface $facet, array &$filter_params, array $context) {
+  if ($facet->getFacetSourceId() == 'my_facet_source') {
+    unset($filter_params[0]);
+  }
+}
diff --git a/src/Plugin/facets/url_processor/QueryString.php b/src/Plugin/facets/url_processor/QueryString.php
index b641ec1..b74d095 100644
--- a/src/Plugin/facets/url_processor/QueryString.php
+++ b/src/Plugin/facets/url_processor/QueryString.php
@@ -149,6 +149,13 @@ class QueryString extends UrlProcessorPluginBase {
         }
       }
 
+      // Allow other modules to alter the result url built.
+      $context = [
+        'result' => $result,
+        'active_filters' => $this->activeFilters,
+      ];
+      \Drupal::moduleHandler()->alter('facets_query_string', $facet, $filter_params, $context);
+
       $result_get_params->set($this->filterKey, array_values($filter_params));
       if (!empty($routeParameters)) {
         $url->setRouteParameters($routeParameters);
