diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
index 5c37a8d0555234d31b76bcb005d4441d65731371..bcea57b323099d01d52a48e1d41613947af1e3ed 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
@@ -209,6 +209,9 @@ class NetDbRenderer {
                     }
                 }
             }
+            String familyArg = family;  // save for error message
+            if (family != null)
+                family = family.toLowerCase(Locale.US);
             int toSkip = pageSize * page;
             int skipped = 0;
             int written = 0;
@@ -219,7 +222,6 @@ class NetDbRenderer {
                 if ((routerPrefix != null && key.toBase64().startsWith(routerPrefix)) ||
                     (version != null && version.equals(ri.getVersion())) ||
                     (country != null && country.equals(_context.commSystem().getCountry(key))) ||
-                    (family != null && family.equals(ri.getOption("family"))) ||
                     // 'O' will catch PO and XO also
                     (caps != null && hasCap(ri, caps)) ||
                     (tr != null && ri.getTargetAddress(tr) != null) ||
@@ -237,6 +239,22 @@ class NetDbRenderer {
                     if (sybil != null)
                         sybils.add(key);
                     notFound = false;
+                } else if (family != null) {
+                    String rifam = ri.getOption("family");
+                    if (rifam != null && rifam.toLowerCase(Locale.US).contains(family)) {
+                        if (skipped < toSkip) {
+                            skipped++;
+                            continue;
+                        }
+                        if (written++ >= pageSize) {
+                            morePages = true;
+                            break outerloop;
+                        }
+                        renderRouterInfo(buf, ri, false, true);
+                        if (sybil != null)
+                            sybils.add(key);
+                        notFound = false;
+                    }
                 } else if (ip != null) {
                     for (RouterAddress ra : ri.getAddresses()) {
                         if (ipMode == 0) {
@@ -381,8 +399,8 @@ class NetDbRenderer {
                     buf.append(_t("Version")).append(' ').append(version).append(' ');
                 if (country != null)
                     buf.append(_t("Country")).append(' ').append(country).append(' ');
-                if (family != null)
-                    buf.append(_t("Family")).append(' ').append(family).append(' ');
+                if (familyArg != null)
+                    buf.append(_t("Family")).append(' ').append(familyArg).append(' ');
                 if (ipArg != null)
                     buf.append("IP ").append(ipArg).append(' ');
                 if (ipv6 != null)