diff --git a/src/browser.c b/src/browser.c
index 6b479a7f4bd37c2a695788c0da29b5a945b1a978..3fd6bb8254732ffed9447949400a57fd0d733ac5 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -30,7 +30,7 @@
 #include <ncurses.h>
 
 
-static int graph = 1, show_as = 0, info_show = 0, info_page = 0, info_start = 0;
+static int graph = 1, show_as = 0, info_show = 0, info_page = 0, info_start = 0, show_items = 0;
 static char *message = NULL;
 
 
@@ -88,8 +88,8 @@ static void browse_draw_info(struct dir *dr) {
 
 
 static void browse_draw_item(struct dir *n, int row) {
-  char ct, dt, *size, gr[11];
-  int i, o;
+  char ct, dt, *size, gr[11], *items;
+  int i, o, x;
   float pc;
 
   if(n->flags & FF_BSEL)
@@ -102,6 +102,9 @@ static void browse_draw_item(struct dir *n, int row) {
         graph == 1 ? 24 :
         graph == 2 ? 20 :
                      31 ;
+    if (show_items) {
+      o += 7;
+    }
     mvaddstr(row, o, "/..");
     if(n->flags & FF_BSEL)
       attroff(A_REVERSE);
@@ -137,12 +140,26 @@ static void browse_draw_item(struct dir *n, int row) {
     }
   }
 
+  x = 0;
+
+  mvprintw(row, x, "%c %8s ", ct, size);
+  x += 11;
+
+  if (show_items) {
+    if (n->items > 99999)
+      items = "> 100k";
+    else
+      items = n->items ? fullsize(n->items) : "";
+    mvprintw(row, x, "%6s ", items);
+    x += 7;
+  }
+
   /* format and add item to the list */
   switch(graph) {
-    case 0: mvprintw(row, 0, "%c %8s  %c%-*s",               ct, size,         dt, wincols-13, cropstr(n->name, wincols-13)); break;
-    case 1: mvprintw(row, 0, "%c %8s [%10s] %c%-*s",         ct, size,     gr, dt, wincols-25, cropstr(n->name, wincols-25)); break;
-    case 2: mvprintw(row, 0, "%c %8s [%5.1f%%] %c%-*s",      ct, size, pc,     dt, wincols-21, cropstr(n->name, wincols-21)); break;
-    case 3: mvprintw(row, 0, "%c %8s [%5.1f%% %10s] %c%-*s", ct, size, pc, gr, dt, wincols-32, cropstr(n->name, wincols-32));
+    case 0: mvprintw(row, x, " %c%-*s",                       dt, wincols- 2-x, cropstr(n->name, wincols- 2-x)); break;
+    case 1: mvprintw(row, x, "[%10s] %c%-*s",             gr, dt, wincols-14-x, cropstr(n->name, wincols-14-x)); break;
+    case 2: mvprintw(row, x, "[%5.1f%%] %c%-*s",      pc,     dt, wincols-10-x, cropstr(n->name, wincols-10-x)); break;
+    case 3: mvprintw(row, x, "[%5.1f%% %10s] %c%-*s", pc, gr, dt, wincols-21-x, cropstr(n->name, wincols-21-x));
   }
 
   if(n->flags & FF_BSEL)
@@ -383,6 +400,9 @@ int browse_key(int ch) {
         graph = 0;
       info_show = 0;
       break;
+    case 'c':
+      show_items = !show_items;
+      break;
     case 'i':
       info_show = !info_show;
       break;
diff --git a/src/help.c b/src/help.c
index e3c3d825ca125ece4fef20ffbbb800bc9cec83aa..1ba38903f3f271c5c1bfdcbdc81fa2be640f1354 100644
--- a/src/help.c
+++ b/src/help.c
@@ -32,7 +32,7 @@
 int page, start;
 
 
-#define KEYS 14
+#define KEYS 15
 char *keys[KEYS*2] = {
 /*|----key----|  |----------------description----------------|*/
         "up, k", "Move cursor up",
@@ -45,6 +45,7 @@ char *keys[KEYS*2] = {
             "t", "Toggle dirs before files when sorting",
             "g", "Show percentage and/or graph",
             "a", "Toggle between apparent size and disk usage",
+            "c", "Toggle display of child item counts",
             "e", "Show/hide hidden or excluded files",
             "i", "Show information about selected item",
             "r", "Recalculate the current directory",