diff --git a/model_server/base/roiset.py b/model_server/base/roiset.py
index d78a9805b8c13bd1e8df5b545e4c9840642e7550..13d16e7f772fd05d462202aedc43b74d101105f7 100644
--- a/model_server/base/roiset.py
+++ b/model_server/base/roiset.py
@@ -49,6 +49,7 @@ class RoiFilterRange(BaseModel):
 class RoiFilter(BaseModel):
     area: Union[RoiFilterRange, None] = None
     diag: Union[RoiFilterRange, None] = None
+    min_hw: Union[RoiFilterRange, None] = None
 
 
 class RoiSetMetaParams(BaseModel):
@@ -116,7 +117,7 @@ def filter_df(df: pd.DataFrame, filters: RoiFilter = None) -> pd.DataFrame:
     query_str = 'label > 0'  # always true
     if filters is not None:  # parse filters
         for k, val in filters.dict(exclude_unset=True).items():
-            assert k in ('area', 'diag')
+            assert k in ('area', 'diag', 'min_hw')
             vmin = val['min']
             vmax = val['max']
             assert vmin >= 0
@@ -282,6 +283,8 @@ def df_insert_slices(df: pd.DataFrame, sd: dict, expand_box_by) -> pd.DataFrame:
     df['h'] = df['y1'] - df['y0']
     df['w'] = df['x1'] - df['x0']
     df['diag'] = (df['w']**2 + df['h']**2).apply(sqrt)
+    df['min_hw'] = df[['w', 'h']].min(axis=1)
+
     ebxy, ebz = expand_box_by
     df['ebb_y0'] = (df.y0 - ebxy).apply(lambda x: max(x, 0))
     df['ebb_y1'] = (df.y1 + ebxy).apply(lambda x: min(x, h))
diff --git a/tests/base/test_roiset.py b/tests/base/test_roiset.py
index 3a6619146ca673dcd2bc5c985fac7ef1e85f0d42..5f8fe52b86b0b75466b7792fa5642f198407f93f 100644
--- a/tests/base/test_roiset.py
+++ b/tests/base/test_roiset.py
@@ -260,7 +260,11 @@ class TestRoiSetMultichannelProducts(BaseTestRoiSetMonoProducts, unittest.TestCa
             params=RoiSetMetaParams(
                 expand_box_by=(128, 2),
                 mask_type='boxes',
-                filters={'area': {'min': 1e3, 'max': 1e4}, 'diag': {'min': 1e1, 'max': 1e5}},
+                filters={
+                    'area': {'min': 1e3, 'max': 1e4},
+                    'diag': {'min': 1e1, 'max': 1e5},
+                    'min_hw': {'min': 1e1, 'max': 1e4}
+                },
                 deproject_channel=0,
             )
         )