diff --git a/main.c b/main.c
index 8fe8e05..19600fc 100644
--- a/main.c
+++ b/main.c
@@ -162,6 +162,8 @@
 {
   if (CFG_TOYBOX_I18N) setlocale(LC_ALL, "");
 
+  toys.toycount = ARRAY_LEN(toy_list);
+
   if (CFG_TOYBOX) {
     // Trim path off of command name
     *argv = basename(*argv);
diff --git a/toys.h b/toys.h
index 8450b80..cd1755b 100644
--- a/toys.h
+++ b/toys.h
@@ -115,14 +115,15 @@
 
 extern struct toy_context {
   struct toy_list *which;  // Which entry in toy_list is this one?
-  int exitval;             // Value error_exit feeds to exit()
   char **argv;             // Original command line arguments
-  unsigned optflags;       // Command line option flags from get_optflags()
   char **optargs;          // Arguments left over from get_optflags()
+  jmp_buf *rebound;        // longjmp here instead of exit when do_rebound set
+  unsigned optflags;       // Command line option flags from get_optflags()
+  int exitval;             // Value error_exit feeds to exit()
   int optc;                // Count of optargs
   int exithelp;            // Should error_exit print a usage message first?
   int old_umask;           // Old umask preserved by TOYFLAG_UMASK
-  jmp_buf *rebound;        // longjmp here instead of exit when do_rebound set
+  int toycount;            // Total number of commands in this build
 } toys;
 
 // Two big temporary buffers: one for use by commands, one for library functions
diff --git a/toys/other/help.c b/toys/other/help.c
index e16abaa..15f8271 100644
--- a/toys/other/help.c
+++ b/toys/other/help.c
@@ -4,7 +4,7 @@
  *
  * Often a shell builtin.
 
-USE_HELP(NEWTOY(help, "<1", TOYFLAG_BIN))
+USE_HELP(NEWTOY(help, ""USE_HELP_EXTRAS("ah"), TOYFLAG_BIN))
 
 config HELP
   bool "help"
@@ -15,16 +15,62 @@
 
     Show usage information for toybox commands.
     Run "toybox" with no arguments for a list of available commands.
+
+config HELP_EXTRAS
+  bool "help -ah"
+  default y
+  depends on TOYBOX
+  depends on HELP
+  help
+    usage: help [-ah]
+
+    -a	All commands
+    -h	HTML output
 */
 
-
+#define FOR_help
 #include "toys.h"
 
+static void do_help(struct toy_list *t)
+{
+  if (toys.optflags & FLAG_h) 
+    xprintf("<a name=\"%s\"><h1>%s</h1><blockquote><pre>\n", t->name, t->name);
+
+  toys.which = t;
+  show_help();
+
+  if (toys.optflags & FLAG_h) xprintf("</blockquote></pre>\n");
+}
+
+// The simple help is just toys.which = toy_find("name"); show_help();
+// But iterating through html output and all commands is a big more 
+
 void help_main(void)
 {
-  struct toy_list *t = toy_find(*toys.optargs);
+  int i;
+  
+  if (!(toys.optflags & FLAG_a)) {
+    struct toy_list *t = toys.which;
 
-  if (!t) error_exit("Unknown command '%s'", *toys.optargs);
-  toys.which = t;
-  show_help();
+    if (*toys.optargs && !(t = toy_find(*toys.optargs)))
+      error_exit("Unknown command '%s'", *toys.optargs);
+    do_help(t);
+    return;
+  }
+
+  if (toys.optflags & FLAG_h) {
+    xprintf("<html>\n<title>Toybox command list</title>\n<body>\n<p>\n");
+    for (i=0; i < toys.toycount; i++)
+      xprintf("<a href=\"#%s\">%s</a>\n", toy_list[i].name,
+              toy_list[i].name);
+    xprintf("</p>\n");
+  }
+
+  for (i = 0; i < toys.toycount; i++) {
+    if (toys.optflags & FLAG_h) xprintf("<hr>\n<pre>\n");
+    do_help(toy_list+i);
+    if (toys.optflags & FLAG_h) xprintf("</pre>\n");
+  }
+
+  if (toys.optflags & FLAG_h) xprintf("</html>");
 }
