diff --git a/doc/man/index.html b/doc/man/index.html
index e16c14d2e..99bc1f7d6 100644
--- a/doc/man/index.html
+++ b/doc/man/index.html
@@ -39,7 +39,8 @@
notcurses_palette—operations on notcurses palettes
notcurses_render—sync the physical display
notcurses_resize—resize the standard plane based off screen size
- notcurses_selector—high-level widget for selecting from a set
+ notcurses_selector—high-level widget for selecting one item from a set
+ notcurses_multiselector—high-level widget for selecting items from a set
notcurses_stats—notcurses runtime statistics
notcurses_stdplane—acquire the standard ncplane
notcurses_stop—collapse the context
diff --git a/doc/man/man3/notcurses_multiselector.3.md b/doc/man/man3/notcurses_multiselector.3.md
new file mode 100644
index 000000000..d20123103
--- /dev/null
+++ b/doc/man/man3/notcurses_multiselector.3.md
@@ -0,0 +1,64 @@
+% notcurses_multiselector(3)
+% nick black
+% v1.2.3
+
+# NAME
+
+notcurses_multiselector - high level widget for selecting from a set
+
+# SYNOPSIS
+
+**#include **
+
+```c
+**struct ncinput;**
+**struct ncplane;**
+**struct notcurses;**
+**struct ncmultiselector;**
+
+struct mselector_item {
+ char* option;
+ char* desc;
+ bool selected;
+};
+
+typedef struct multiselector_options {
+ char* title; // title may be NULL, inhibiting riser
+ char* secondary; // secondary may be NULL
+ char* footer; // footer may be NULL
+ struct mselector_item* items; // initial items, statuses
+ unsigned itemcount; // number of initial items
+ // default item (selected at start)
+ unsigned defidx;
+ // maximum number of options to display at once
+ unsigned maxdisplay;
+ // exhaustive styling options
+ uint64_t opchannels; // option channels
+ uint64_t descchannels; // description channels
+ uint64_t titlechannels;// title channels
+ uint64_t footchannels; // secondary and footer channels
+ uint64_t boxchannels; // border channels
+ uint64_t bgchannels; // background channels for body
+} multiselector_options;
+```
+
+**struct ncmultiselector* ncmultiselector_create(struct ncplane* n, int y, int x, const multiselector_options* opts);**
+
+**struct ncplane* ncmultiselector_plane(struct ncmultiselector* n);**
+
+**bool ncmultiselector_offer_input(struct ncmultiselector* n, const struct ncinput* nc);**
+
+**void ncmultiselector_destroy(struct ncmultiselector* n, char** item);**
+
+# DESCRIPTION
+
+# NOTES
+
+# RETURN VALUES
+
+# SEE ALSO
+
+**notcurses(3)**,
+**notcurses_input(3)**,
+**notcurses_ncplane(3)**
+**notcurses_selector(3)**
diff --git a/doc/man/man3/notcurses_selector.3.md b/doc/man/man3/notcurses_selector.3.md
index 4d3618c83..ca1616a97 100644
--- a/doc/man/man3/notcurses_selector.3.md
+++ b/doc/man/man3/notcurses_selector.3.md
@@ -69,4 +69,5 @@ typedef struct selector_options {
**notcurses(3)**,
**notcurses_input(3)**,
+**notcurses_multiselector(3)**
**notcurses_ncplane(3)**