diff --git a/packages/website-astro/public/llms-full.txt b/packages/website-astro/public/llms-full.txt
index a9bd5290..328900aa 100644
--- a/packages/website-astro/public/llms-full.txt
+++ b/packages/website-astro/public/llms-full.txt
@@ -3730,7 +3730,7 @@ function Demo() {
---
-# Browser hooks (49)
+# Browser hooks (50)
## useBroadcastChannel
@@ -5767,6 +5767,147 @@ function Demo() {
---
+## useMicrophone
+
+URL: https://reactuse.com/browser/usemicrophone/
+Category: browser
+Description: useMicrophone is a React hook for the microphone — open a stream, read a real-time audio level, and record audio to a Blob with MediaRecorder.
+Import: `import { useMicrophone } from '@reactuses/core'`
+
+# useMicrophone
+
+React hook for capturing microphone audio
+
+`useMicrophone` wraps [`getUserMedia`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia), the [Web Audio API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API), and [`MediaRecorder`](https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder) into a single hook. It opens and closes the microphone stream, exposes a throttled audio `level` (0–1, RMS) suitable for a VU meter, and records the active stream to a `Blob` with a hook-managed object URL.
+
+The live-stream controls (`start` / `stop`) and the recording controls (`startRecording` / `stopRecording` / `pauseRecording` / `resumeRecording`) are independent: you can show a level meter without recording, and start or stop a recording without dropping the microphone.
+
+### When to Use
+
+- Building voice-note or dictation UIs where the user sees a live input level before and while recording
+- Adding "speak now" prompts or microphone calibration screens that need a VU meter but no capture
+- Recording short audio clips to a `Blob` for upload or local playback
+
+### Notes
+
+- **SSR-safe**: Returns `isSupported: false` and no-op controls during server-side rendering. No `navigator.mediaDevices` access occurs on the server.
+- **`start()` before `startRecording()`**: Recording captures an already-open stream. Call `start()` first; calling `startRecording()` without an active stream sets `error` instead of recording.
+- **HTTPS required**: In production the microphone requires a secure context (HTTPS). The browser prompts for permission on the first `start()`.
+- **Object URL lifecycle**: `audioUrl` is created and revoked by the hook — it is replaced on the next recording and revoked on unmount, so consumers do not need to call `URL.revokeObjectURL` themselves.
+- **Mime type**: The recording format is auto-selected from the formats the browser supports (`audio/webm;codecs=opus`, `audio/webm`, `audio/mp4`, `audio/ogg;codecs=opus`). The resolved value is exposed as `mimeType`.
+- **Related hooks**: Use `useMediaDevices` to enumerate microphones and pass a `deviceId`, or `useSpeechRecognition` for speech-to-text.
+
+## Usage
+
+```tsx live
+function Demo() {
+ const {
+ isSupported,
+ isActive,
+ level,
+ isRecording,
+ isPaused,
+ audioUrl,
+ mimeType,
+ error,
+ start,
+ stop,
+ startRecording,
+ stopRecording,
+ pauseRecording,
+ resumeRecording,
+ } = useMicrophone();
+
+ if (!isSupported) {
+ return
+ );
+}
+```
+
+## 常見用例
+
+- **語音備忘錄**:開啟麥克風讓使用者看到即時電平,然後錄製為 `Blob` 並回放或上傳。
+- **音量監測**:用 `level` 驅動音量條或波形,而無需錄製任何內容。
+- **麥克風校準**:讓使用者在開始前確認擷取到的是正確的裝置。
+
+%%API%%
diff --git a/packages/website-astro/src/content/docs/browser/useMicrophone.mdx b/packages/website-astro/src/content/docs/browser/useMicrophone.mdx
new file mode 100644
index 00000000..87d682ae
--- /dev/null
+++ b/packages/website-astro/src/content/docs/browser/useMicrophone.mdx
@@ -0,0 +1,138 @@
+---
+title: useMicrophone – Browser Hook Usage & Examples
+sidebar_label: useMicrophone
+description: "useMicrophone is a React hook for the microphone — open a stream, read a real-time audio level, and record audio to a Blob with MediaRecorder."
+---
+# useMicrophone
+
+React hook for capturing microphone audio
+
+`useMicrophone` wraps [`getUserMedia`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia), the [Web Audio API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API), and [`MediaRecorder`](https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder) into a single hook. It opens and closes the microphone stream, exposes a throttled audio `level` (0–1, RMS) suitable for a VU meter, and records the active stream to a `Blob` with a hook-managed object URL.
+
+The live-stream controls (`start` / `stop`) and the recording controls (`startRecording` / `stopRecording` / `pauseRecording` / `resumeRecording`) are independent: you can show a level meter without recording, and start or stop a recording without dropping the microphone.
+
+### When to Use
+
+- Building voice-note or dictation UIs where the user sees a live input level before and while recording
+- Adding "speak now" prompts or microphone calibration screens that need a VU meter but no capture
+- Recording short audio clips to a `Blob` for upload or local playback
+
+### Notes
+
+- **SSR-safe**: Returns `isSupported: false` and no-op controls during server-side rendering. No `navigator.mediaDevices` access occurs on the server.
+- **`start()` before `startRecording()`**: Recording captures an already-open stream. Call `start()` first; calling `startRecording()` without an active stream sets `error` instead of recording.
+- **HTTPS required**: In production the microphone requires a secure context (HTTPS). The browser prompts for permission on the first `start()`.
+- **Object URL lifecycle**: `audioUrl` is created and revoked by the hook — it is replaced on the next recording and revoked on unmount, so consumers do not need to call `URL.revokeObjectURL` themselves.
+- **Mime type**: The recording format is auto-selected from the formats the browser supports (`audio/webm;codecs=opus`, `audio/webm`, `audio/mp4`, `audio/ogg;codecs=opus`). The resolved value is exposed as `mimeType`.
+- **Related hooks**: Use `useMediaDevices` to enumerate microphones and pass a `deviceId`, or `useSpeechRecognition` for speech-to-text.
+
+## Usage
+
+```tsx live
+function Demo() {
+ const {
+ isSupported,
+ isActive,
+ level,
+ isRecording,
+ isPaused,
+ audioUrl,
+ mimeType,
+ error,
+ start,
+ stop,
+ startRecording,
+ stopRecording,
+ pauseRecording,
+ resumeRecording,
+ } = useMicrophone();
+
+ if (!isSupported) {
+ return
+ Recorded clip ({mimeType || 'default format'}):
+
+
+
+ )}
+
+ {error && (
+
+ Error: {error.message}
+
+ )}
+
+ );
+}
+```
+
+## Common Use Cases
+
+- **Voice notes**: Open the mic so the user sees a live level, then record to a `Blob` and play it back or upload it.
+- **Level metering**: Drive a VU meter or waveform from `level` without recording anything.
+- **Microphone calibration**: Let users confirm the right device is picked up before they start.
+
+%%API%%
diff --git a/packages/website-docusaurus/api/useMicrophone-README-zhHans.md b/packages/website-docusaurus/api/useMicrophone-README-zhHans.md
new file mode 100644
index 00000000..3fc76aaf
--- /dev/null
+++ b/packages/website-docusaurus/api/useMicrophone-README-zhHans.md
@@ -0,0 +1,19 @@
+### UseMicrophoneOptions
+
+|参数名|描述|类型|默认值|
+|---|---|---|---|
+|deviceId|指定要使用的麦克风设备 ID;激活状态下变化会自动重新获取流|string |`-`|
+|constraints|与默认音频约束合并的额外 MediaTrackConstraints;deviceId 优先|MediaTrackConstraints |`-`|
+|levelInterval|音量级别状态更新的节流间隔(毫秒)|number |`-`|
+|mimeType|MediaRecorder 的首选 mime 类型;不受支持时自动回退|string |`-`|
+|autoStart|挂载时自动打开麦克风|boolean |`-`|
+
+### useMicrophone
+
+#### Returns
+`UseMicrophoneReturn`: 包含麦克风流、音量级别、录音控制等的对象
+
+#### Arguments
+|参数名|描述|类型|默认值|
+|---|---|---|---|
+|options|可选配置|[UseMicrophoneOptions](#usemicrophoneoptions) \| undefined |-|
\ No newline at end of file
diff --git a/packages/website-docusaurus/api/useMicrophone-README-zhHant.md b/packages/website-docusaurus/api/useMicrophone-README-zhHant.md
new file mode 100644
index 00000000..f163cc76
--- /dev/null
+++ b/packages/website-docusaurus/api/useMicrophone-README-zhHant.md
@@ -0,0 +1,19 @@
+### UseMicrophoneOptions
+
+|參數名|描述|類型|預設值|
+|---|---|---|---|
+|deviceId|指定要使用的麦克风设备 ID;激活状态下变化会自动重新获取流|string |`-`|
+|constraints|与默认音频约束合并的额外 MediaTrackConstraints;deviceId 优先|MediaTrackConstraints |`-`|
+|levelInterval|音量级别状态更新的节流间隔(毫秒)|number |`-`|
+|mimeType|MediaRecorder 的首选 mime 类型;不受支持时自动回退|string |`-`|
+|autoStart|挂载时自动打开麦克风|boolean |`-`|
+
+### useMicrophone
+
+#### Returns
+`UseMicrophoneReturn`: 包含麥克風串流、音量等級、錄音控制等的物件
+
+#### Arguments
+|參數名|描述|類型|預設值|
+|---|---|---|---|
+|options|可选配置|[UseMicrophoneOptions](#usemicrophoneoptions) \| undefined |-|
\ No newline at end of file
diff --git a/packages/website-docusaurus/api/useMicrophone-README.md b/packages/website-docusaurus/api/useMicrophone-README.md
new file mode 100644
index 00000000..06e7ab6d
--- /dev/null
+++ b/packages/website-docusaurus/api/useMicrophone-README.md
@@ -0,0 +1,19 @@
+### UseMicrophoneOptions
+
+|Property|Description|Type|DefaultValue|
+|---|---|---|---|
+|deviceId|Specific microphone deviceId; re-acquires the stream when changed while active|string |`-`|
+|constraints|Extra MediaTrackConstraints merged with the defaults; deviceId above takes precedence|MediaTrackConstraints |`-`|
+|levelInterval|Throttle interval (ms) for level state updates|number |`-`|
+|mimeType|Preferred MediaRecorder mime type; falls back to auto-selection if unsupported|string |`-`|
+|autoStart|Automatically open the microphone on mount|boolean |`-`|
+
+### useMicrophone
+
+#### Returns
+`UseMicrophoneReturn`: An object exposing the microphone stream, audio level, recording controls, and lifecycle methods
+
+#### Arguments
+|Argument|Description|Type|DefaultValue|
+|---|---|---|---|
+|options|Optional configuration|[UseMicrophoneOptions](#usemicrophoneoptions) \| undefined |-|
\ No newline at end of file
diff --git a/scripts/hook-registry.json b/scripts/hook-registry.json
index 70670f45..5278cfb9 100644
--- a/scripts/hook-registry.json
+++ b/scripts/hook-registry.json
@@ -239,6 +239,10 @@
"category": "state",
"url": "https://reactuse.com/state/usemergedrefs/"
},
+ "useMicrophone": {
+ "category": "browser",
+ "url": "https://reactuse.com/browser/usemicrophone/"
+ },
"useMobileLandscape": {
"category": "browser",
"url": "https://reactuse.com/browser/usemobilelandscape/"