diff --git a/footways.yaml b/footways.yaml
index aeea342..3798b04 100644
--- a/footways.yaml
+++ b/footways.yaml
@@ -467,6 +467,72 @@ filter:
         name: <{{ trans("other") }}>
         query: nwr[access]["access"!~"^(public|private|permissive|customers|discouraged|unknown|yes)$"]
         weight: 2
+  surface:
+    name: '{{ keyTrans("surface") }}'
+    type: select
+    placeholder: '<{{ trans("any value") }}>'
+    valueName: '{{ tagTrans("surface", value) }}'
+    query: '(nwr[surface="{{ value }}"];nwr[~"sidewalk:(left|right|both):surface"~"{{ value }}"];)'
+    values:
+      acrylic: {}
+      artificial_turf: {}
+      asphalt: {}
+      carpet: {}
+      chipseal: {}
+      clay: {}
+      cobblestone: {}
+      compacted: {}
+      concrete: {}
+      concrete:lanes: {}
+      concrete:plates: {}
+      dirt: {}
+      earth: {}
+      fine_gravel: {}
+      grass: {}
+      grass_paver: {}
+      gravel: {}
+      ground: {}
+      ice: {}
+      metal: {}
+      metal_grid: {}
+      mud: {}
+      paved: {}
+      paving_stones: {}
+      pebblestone: {}
+      rock: {}
+      rubber: {}
+      salt: {}
+      sand: {}
+      sett: {}
+      snow: {}
+      stepping_stones: {}
+      tartan: {}
+      unhewn_cobblestone: {}
+      unpaved: {}
+      wood: {}
+      woodchips: {}
+      '!':
+        name: <{{ trans('empty value') }}>
+        query: |
+          (
+          nwr[!"surface"];
+          nwr["sidewalk:left"="yes"][!"sidewalk:left:surface"];
+          nwr["sidewalk:right"="yes"][!"sidewalk:right:surface"];
+          nwr["sidewalk:both"="yes"][!"sidewalk:both:surface"][!"sidewalk:left:surface"];
+          nwr["sidewalk:both"="yes"][!"sidewalk:both:surface"][!"sidewalk:right:surface"];
+          nwr["sidewalk"="left"][!"sidewalk:left:surface"];
+          nwr["sidewalk"="right"][!"sidewalk:right:surface"];
+          nwr["sidewalk"="both"][!"sidewalk:both:surface"][!"sidewalk:left:surface"];
+          nwr["sidewalk"="both"][!"sidewalk:both:surface"][!"sidewalk:right:surface"];
+          )
+        weight: -3
+      '?':
+        name: <{{ trans("other") }}>
+        query: nwr[surface]["surface"!~"^(acrylic|artificial_turf|asphalt|carpet|chipseal|clay|cobblestone|compacted|concrete|concrete:lanes|concrete:plates|dirt|earth|fine_gravel|grass|grass_paver|gravel|ground|ice|metal|metal_grid|mud|paved|paving_stones|pebblestone|rock|rubber|salt|sand|sett|snow|stepping_stones|tartan|unhewn_cobblestone|unpaved|wood|woodchips)$"]
+        weight: -2
+      unknown:
+        name: '<{{ trans("unknown") }}>'
+        weight: -1
 const:
   categories:
     sidewalk: