# Read stderr from a child process (/docs/guides/process/spawn-stderr)

<!-- agent-signals: reading_time_min: 1 · est_tokens: 150 · updated: 2026-07-28 -->
Related: [Parse command-line arguments](/docs/guides/process/argv.md), [Listen for CTRL+C](/docs/guides/process/ctrl-c.md), [Spawn a child process and communicate using IPC](/docs/guides/process/ipc.md), [Get the process uptime in nanoseconds](/docs/guides/process/nanoseconds.md), [Listen to OS signals](/docs/guides/process/os-signals.md), [Read stdout from a child process](/docs/guides/process/spawn-stdout.md)

When you spawn a child process with [`Bun.spawn()`](/runtime/child-process), it inherits the `stderr` of the spawning process. To read and handle `stderr` instead, set the `stderr` option to `"pipe"`.

```ts
const proc = Bun.spawn(["echo", "hello"], {
  stderr: "pipe",
});

proc.stderr; // => ReadableStream
```

***

To read `stderr` until the child process exits, use `.text()`.

```ts
const proc = Bun.spawn(["echo", "hello"], {
  stderr: "pipe",
});

const errors: string = await proc.stderr.text();
if (errors) {
  // handle errors
}
```

***

See [Child processes](/runtime/child-process).
