diff --git a/pw_stream/docs.rst b/pw_stream/docs.rst
index 2fcd644..749cdcd 100644
--- a/pw_stream/docs.rst
+++ b/pw_stream/docs.rst
@@ -52,6 +52,10 @@
 implementation. Note that ``Read()`` itself is **not** virtual, and should not
 be overridden.
 
+pw::stream::ReaderWriter
+-------------------------
+The class simply combines the interfaces of pw::stream::Reader/Writer.
+
 pw::stream::MemoryWriter
 ------------------------
 The ``MemoryWriter`` class implements the ``Writer`` interface by backing the
@@ -69,6 +73,10 @@
 The ``NullWriter`` class implements the ``Writer`` interface by dropping all
 requested data writes, similar to ``/dev/null``.
 
+pw::stream::NullReaderWriter
+-----------------------------
+The class simply combines pw::stream::NullReader/NullWriter.
+
 Why use pw_stream?
 ==================
 
diff --git a/pw_stream/public/pw_stream/null_stream.h b/pw_stream/public/pw_stream/null_stream.h
index b3db9c5..51ce2f5 100644
--- a/pw_stream/public/pw_stream/null_stream.h
+++ b/pw_stream/public/pw_stream/null_stream.h
@@ -36,4 +36,21 @@
   StatusWithSize DoRead(ByteSpan) final { return StatusWithSize::OutOfRange(); }
 };
 
+// Stream reader/writer that combines NullWriter and NullReader.
+class NullReaderWriter final : public ReaderWriter {
+ private:
+  NullWriter null_writer_;
+  NullReader null_reader_;
+
+  Status DoWrite(ConstByteSpan data) final { return null_writer_.Write(data); }
+
+  StatusWithSize DoRead(ByteSpan dest) final {
+    auto res = null_reader_.Read(dest);
+    if (!res.ok()) {
+      return StatusWithSize(res.status(), 0);
+    }
+    return StatusWithSize(res.value().size());
+  }
+};
+
 }  // namespace pw::stream
diff --git a/pw_stream/public/pw_stream/socket_stream.h b/pw_stream/public/pw_stream/socket_stream.h
index 1ab1161..7759d6e 100644
--- a/pw_stream/public/pw_stream/socket_stream.h
+++ b/pw_stream/public/pw_stream/socket_stream.h
@@ -31,7 +31,7 @@
 static constexpr int kExitCode = -1;
 static constexpr int kInvalidFd = -1;
 
-class SocketStream : public Writer, public Reader {
+class SocketStream : public ReaderWriter {
  public:
   explicit SocketStream() {}
   ~SocketStream();
diff --git a/pw_stream/public/pw_stream/stream.h b/pw_stream/public/pw_stream/stream.h
index 7014203..97fe069 100644
--- a/pw_stream/public/pw_stream/stream.h
+++ b/pw_stream/public/pw_stream/stream.h
@@ -144,4 +144,8 @@
   virtual StatusWithSize DoRead(ByteSpan dest) = 0;
 };
 
+// A general-purpose ReaderWriter class that combines interfaces of Reader and
+// Writer.
+class ReaderWriter : public Writer, public Reader {};
+
 }  // namespace pw::stream
diff --git a/pw_stream/stream_test.cc b/pw_stream/stream_test.cc
index fad335a..97f6e1d 100644
--- a/pw_stream/stream_test.cc
+++ b/pw_stream/stream_test.cc
@@ -33,5 +33,12 @@
   EXPECT_EQ(stream.ConservativeReadLimit(), std::numeric_limits<size_t>::max());
 }
 
+TEST(Stream, DefaultConservativeReadWriteLimit) {
+  NullReaderWriter stream;
+  EXPECT_EQ(stream.ConservativeWriteLimit(),
+            std::numeric_limits<size_t>::max());
+  EXPECT_EQ(stream.ConservativeReadLimit(), std::numeric_limits<size_t>::max());
+}
+
 }  // namespace
 }  // namespace pw::stream
