diff --git a/docs/README.md b/docs/README.md
index 7bc75954d18f989bd2215fa392196040dc6e856b..07bd84aaf74f589f6f7bcde5f0bd90434f8d9886 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1354,12 +1354,17 @@ Usage example:
 
 ## IO Buffers
 
+IO buffer, described by the `struct mg_iobuf`, is a simple data structure
+that insert or delete chunks of data at arbitrary offsets and grow/shrink
+automatically.
+
 ### struct mg\_iobuf
 
 ```c
 struct mg_iobuf {
-  unsigned char *buf;
-  size_t size, len;
+  unsigned char *buf;  // Pointer to stored data
+  size_t size;         // Total size available
+  size_t len;          // Current number of bytes
 };
 ```
 
diff --git a/mongoose.h b/mongoose.h
index 111993373ad2ec4eea22f90da634ab75b49ee889..59c89101ac7aca7597be7da5cc03f65e99364bc8 100644
--- a/mongoose.h
+++ b/mongoose.h
@@ -628,7 +628,7 @@ const char *mg_url_uri(const char *url);
 #include <stddef.h>
 
 struct mg_iobuf {
-  unsigned char *buf;  // Data
+  unsigned char *buf;  // Pointer to stored data
   size_t size;         // Total size available
   size_t len;          // Current number of bytes
 };
diff --git a/src/iobuf.h b/src/iobuf.h
index c456e3beefa52c77e154bf18d1d4bf655129ee41..2c5b09fc01c2fc984708dd901f6183eb8fa4379a 100644
--- a/src/iobuf.h
+++ b/src/iobuf.h
@@ -3,7 +3,7 @@
 #include <stddef.h>
 
 struct mg_iobuf {
-  unsigned char *buf;  // Data
+  unsigned char *buf;  // Pointer to stored data
   size_t size;         // Total size available
   size_t len;          // Current number of bytes
 };