diff --git a/lib/fuse.c b/lib/fuse.c
index d68ca5d..7d66a7d 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -1806,11 +1806,18 @@
     fuse_getcontext = func;
 }
 
+enum {
+    KEY_HELP,
+    KEY_KEEP
+};
+
 #define FUSE_LIB_OPT(t, p, v) { t, offsetof(struct fuse_config, p), v }
 
 static const struct fuse_opt fuse_lib_opts[] = {
-    FUSE_OPT_KEY("debug", 0),
-    FUSE_OPT_KEY("-d", 0),
+    FUSE_OPT_KEY("-h",                    KEY_HELP),
+    FUSE_OPT_KEY("--help",                KEY_HELP),
+    FUSE_OPT_KEY("debug",                 KEY_KEEP),
+    FUSE_OPT_KEY("-d",                    KEY_KEEP),
     FUSE_LIB_OPT("debug",                 debug, 1),
     FUSE_LIB_OPT("-d",                    debug, 1),
     FUSE_LIB_OPT("hard_remove",           hard_remove, 1),
@@ -1830,6 +1837,35 @@
     FUSE_OPT_END
 };
 
+static void fuse_lib_help(void)
+{
+    fprintf(stderr,
+            "    -o hard_remove         immediate removal (don't hide files)\n"
+            "    -o use_ino             let filesystem set inode numbers\n"
+            "    -o readdir_ino         try to fill in d_ino in readdir\n"
+            "    -o direct_io           use direct I/O\n"
+            "    -o kernel_cache        cache files in kernel\n"
+            "    -o umask=M             set file permissions (octal)\n"
+            "    -o uid=N               set file owner\n"
+            "    -o gid=N               set file group\n"
+            "    -o entry_timeout=T     cache timeout for names (1.0s)\n"
+            "    -o negative_timeout=T  cache timeout for deleted names (0.0s)\n"
+            "    -o attr_timeout=T      cache timeout for attributes (1.0s)\n"
+            "\n");
+}
+
+static int fuse_lib_opt_proc(void *data, const char *arg, int key,
+                             struct fuse_args *outargs)
+{
+    (void) data; (void) arg; (void) outargs;
+
+    if (key == KEY_HELP)
+        fuse_lib_help();
+
+    return 1;
+}
+
+
 int fuse_is_lib_option(const char *opt)
 {
     return fuse_lowlevel_is_lib_option(opt) ||
@@ -1859,7 +1895,7 @@
     f->conf.attr_timeout = 1.0;
     f->conf.negative_timeout = 0.0;
 
-    if (fuse_opt_parse(args, &f->conf, fuse_lib_opts, NULL) == -1)
+    if (fuse_opt_parse(args, &f->conf, fuse_lib_opts, fuse_lib_opt_proc) == -1)
             goto out_free;
 
 #ifdef __FreeBSD__
