diff --git a/src/lib.rs b/src/lib.rs
index c8aa742..7b7782e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -271,29 +271,36 @@ where
.unwrap()
}
-/// Sends `blob` with that status code, and optional content type, `None` for no `Content-Type`
-/// header to be set.
+/// Sends `blob` with that status code, and optional content type and content disposition, `None` for no `Content-Type`
+/// and `Content-Disposition` headers to be set.
///
-/// No `Content-Type` header:
+/// No `Content-Type` and `Content-Disposition` headers:
///
/// ```rust,ignore
-/// cgi::binary_response(200, None, vec![1, 2]);
+/// cgi::binary_response(200, None, None, vec![1, 2]);
/// ```
///
-/// Send an image:
+/// Send an image with no `Content-Disposition` header::
///
/// ```rust,ignore
-/// cgi::binary_response(200, "image/png", vec![1, 2]);
+/// cgi::binary_response(200, "image/png", None, vec![1, 2]);
/// ```
///
-/// Send a generic binary blob:
+/// Send a generic binary blob with no `Content-Disposition` headers:
+///
+/// ```rust,ignore
+/// cgi::binary_response(200, "application/octet-stream", None, vec![1, 2]);
+/// ```
+///
+/// Send a generic binary blob with `Content-Disposition` header:
///
/// ```rust,ignore
-/// cgi::binary_response(200, "application/octet-stream", vec![1, 2]);
+/// cgi::binary_response(200, "application/octet-stream", "attachment; filename=filename.bin", vec![1, 2]);
/// ```
pub fn binary_response<'a, T>(
status_code: T,
content_type: impl Into