diff --git a/.changeset/wild-lamps-promise.md b/.changeset/wild-lamps-promise.md
new file mode 100644
index 0000000000..8b9d0ef1df
--- /dev/null
+++ b/.changeset/wild-lamps-promise.md
@@ -0,0 +1,5 @@
+---
+"effect": patch
+---
+
+added {Readable, Subscribable}.unwrap
diff --git a/packages/effect/src/Readable.ts b/packages/effect/src/Readable.ts
index 019112c594..b5bc249ff9 100644
--- a/packages/effect/src/Readable.ts
+++ b/packages/effect/src/Readable.ts
@@ -79,3 +79,14 @@ export const mapEffect: {
self: Readable,
f: (a: NoInfer) => Effect
): Readable => make(core.flatMap(self.get, f)))
+
+/**
+ * @since 2.0.0
+ * @category constructors
+ */
+export const unwrap = (
+ effect: Effect, E1, R1>
+): Readable =>
+ make(
+ core.flatMap(effect, (s) => s.get)
+ )
diff --git a/packages/effect/src/Subscribable.ts b/packages/effect/src/Subscribable.ts
index 85f7c4493f..8ae1f85140 100644
--- a/packages/effect/src/Subscribable.ts
+++ b/packages/effect/src/Subscribable.ts
@@ -85,3 +85,15 @@ export const mapEffect: {
get: Effect.flatMap(self.get, f),
changes: Stream.mapEffect(self.changes, f)
}))
+
+/**
+ * @since 2.0.0
+ * @category constructors
+ */
+export const unwrap = (
+ effect: Effect.Effect, E1, R1>
+): Subscribable =>
+ make({
+ get: Effect.flatMap(effect, (s) => s.get),
+ changes: Stream.unwrap(Effect.map(effect, (s) => s.changes))
+ })