diff --git a/src/libknot/dynarray.h b/src/libknot/dynarray.h
index 9ff14d083ab7595a4cd27a293911ec4645dc415b..e9f699ef788f64abacc43d304c87951bfbdfd8a1 100644
--- a/src/libknot/dynarray.h
+++ b/src/libknot/dynarray.h
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2021 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/*  Copyright (C) 2022 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -147,6 +147,13 @@
 	} \
 	\
 	_unused_ \
+	visibility ntype *prefix ## _dynarray_bsearch(struct prefix ## _dynarray *dynarray, const ntype *bskey) \
+	{ \
+		ntype *arr = prefix ## _dynarray_arr(dynarray); \
+		return bsearch(bskey, arr, dynarray->size, sizeof(*arr), prefix ## _dynarray_memb_cmp); \
+	} \
+	\
+	_unused_ \
 	visibility void prefix ## _dynarray_sort_dedup(struct prefix ## _dynarray *dynarray) \
 	{ \
 		if (dynarray->size > 1) { \
diff --git a/tests/contrib/test_dynarray.c b/tests/contrib/test_dynarray.c
index a4ca922ec9896a52ec7b88e3712874b9525dbc30..ac1e0f1804f4efa3de40d7da22cd0bd370334b82 100644
--- a/tests/contrib/test_dynarray.c
+++ b/tests/contrib/test_dynarray.c
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2021 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/*  Copyright (C) 2022 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -117,5 +117,21 @@ int main(int argc, char *argv[])
 
 	q_dynarray_free(&q);
 
+	// binary search removal test
+	q = q_fill(test_capacity * 10);
+	for (int i = 0; i < test_capacity * 10; i++) {
+		quadrate_t qu = { i, i * i };
+		if ((qu.x % 2) == 0) {
+			q_dynarray_remove(&q, &qu);
+		}
+	}
+	q_dynarray_sort(&q);
+	for (int i = 0; i < test_capacity * 10; i++) {
+		quadrate_t qu = { i, i * i };
+		int present = (q_dynarray_bsearch(&q, &qu) != NULL ? 1 : 0);
+		ok(present == (i % 2), "presence in sorted array %d", i);
+	}
+	q_dynarray_free(&q);
+
 	return 0;
 }