Skip to main content
This guide covers common issues and their solutions, organized by category.

Microphone Issues

Microphone Not Detected

1

Check system permissions

  1. Open System SettingsPrivacy & SecurityMicrophone
  2. Ensure OpenWhispr is checked
  3. If not listed, click the lock icon and add OpenWhispr manually
  4. Restart OpenWhispr
2

Test microphone in browser

Navigate to https://webcammictest.com/check-mic.html and verify your microphone works in Chrome/Edge.If it doesn’t work in browser, the issue is system-level (not OpenWhispr-specific).
3

Check FFmpeg availability

Open DevTools (Cmd/Ctrl+Shift+I) in Control Panel and run:
await window.electronAPI.checkFFmpegAvailability()
Expected output:
{
  "available": true,
  "path": "/path/to/ffmpeg",
  "version": "6.0"
}
4

Enable debug logging

  1. Open Control Panel → Settings → Advanced
  2. Enable “Debug Logging”
  3. Try recording again
  4. Click “Open Logs Folder” and check main.log for errors
Common issue: Browser-based microphone access requires HTTPS or localhost. Electron uses localhost in development, so this should not be a problem.

No Audio Detected

Possible causes:
  1. Microphone muted: Check system volume mixer
  2. Wrong input device: Select correct device in System Settings → Sound
  3. Extremely quiet audio: Increase microphone gain
  4. FFmpeg conversion failure: Audio didn’t convert to WAV properly
Debug:
# Enable debug logging and check for FFmpeg errors:
# Look for lines like:
# [audioManager] FFmpeg conversion failed: ...
# [audioManager] Audio level: 0.00 (too quiet)
Fix:
  • Increase microphone input volume
  • Test with ffmpeg -f avfoundation -i ":0" -t 5 test.wav (macOS)
  • Test with ffmpeg -f dshow -i audio="Microphone" -t 5 test.wav (Windows)
Cause: Browser/Electron version too old or missing codecsFix:
  1. Update OpenWhispr to latest version (includes latest Electron)
  2. Verify Electron version:
    console.log(process.versions.electron); // Should be 36.9.5+
    
  3. Check supported MIME types:
    MediaRecorder.isTypeSupported('audio/webm'); // Should be true
    

Transcription Failures

Local Whisper Transcription Fails

1

Verify whisper.cpp binary

# Check if binary exists
ls -la resources/bin/whisper-cpp-*

# On macOS, check for ARM vs Intel
file resources/bin/whisper-cpp-darwin-arm64
# Output: Mach-O 64-bit executable arm64

# Test binary directly
./resources/bin/whisper-cpp-darwin-arm64 --help
If binary is missing:
npm run download:whisper-cpp
2

Check model download

# List downloaded models
ls -lh ~/.cache/openwhispr/whisper-models/

# Verify file size matches expectedSizeBytes
stat -f%z ~/.cache/openwhispr/whisper-models/ggml-base.bin
# Should output: 148000000 (148 MB)
If model is missing or corrupted:
# Delete and re-download
rm ~/.cache/openwhispr/whisper-models/ggml-base.bin
# Then download via Control Panel → Models
3

Test whisper.cpp manually

# Create test audio
ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -ar 16000 test.wav

# Run whisper
./resources/bin/whisper-cpp-darwin-arm64 \
  -m ~/.cache/openwhispr/whisper-models/ggml-base.bin \
  -f test.wav \
  -l en

# Should output transcription or error message
4

Check debug logs

Look for errors like:
  • whisper.cpp: error loading model
  • whisper.cpp: failed to decode audio
  • FFmpeg conversion failed
Common fixes:
  • Re-download model
  • Verify FFmpeg is working
  • Check disk space (models are 75MB-3GB)

Cloud Transcription Fails

Error: Invalid API key or 401 UnauthorizedFix:
  1. Verify API key at https://platform.openai.com/api-keys
  2. Check API key format: sk-proj-... (new format) or sk-... (legacy)
  3. Ensure billing is active (https://platform.openai.com/account/billing)
  4. Re-save key in Control Panel → Settings → API Keys
Test key manually:
curl https://api.openai.com/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

# Should return list of models, not error
Error: 429 Too Many RequestsCause: OpenAI free tier limits or quota exhaustedFix:
  1. Wait 60 seconds and retry
  2. Upgrade OpenAI plan: https://platform.openai.com/account/billing/overview
  3. Switch to local transcription (no rate limits)
Check quota:
curl https://api.openai.com/v1/usage \
  -H "Authorization: Bearer YOUR_API_KEY"
Symptom: ECONNREFUSED, ETIMEDOUT, or Network errorDebug:
  1. Test internet connectivity:
    curl -I https://api.openai.com
    # Should return HTTP 200 or 301
    
  2. Check corporate firewall/proxy settings
  3. Try with VPN disabled (some VPNs block OpenAI)
Proxy configuration:
# Set proxy in environment
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080

# Then restart OpenWhispr

Clipboard / Pasting Issues

macOS: Text Not Pasting

1

Grant accessibility permissions

  1. Open System SettingsPrivacy & SecurityAccessibility
  2. Enable OpenWhispr
  3. If not listed, click + and add OpenWhispr
  4. Restart OpenWhispr
Accessibility permission is required for AppleScript-based auto-paste to work.
2

Test clipboard manually

  1. Record a short dictation
  2. Open TextEdit or any text field
  3. Press Cmd+V
If text pastes manually but not automatically, it’s a permission issue.
3

Check debug logs

Look for:
[clipboard] Accessibility permission denied
[clipboard] AppleScript paste failed: ...
If you see “permission denied”, re-check System Settings.

Windows: Text Not Pasting

Symptom: Paste fails silentlyCause: PowerShell execution policy blocks SendKeysFix:
# Check current policy
Get-ExecutionPolicy

# If "Restricted", change to RemoteSigned
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Alternative: Use windows-fast-paste.exe (downloaded automatically)
Symptom: Logs show nircmd.exe not foundFix:
npm run download:nircmd
Or download manually:

Linux: Text Not Pasting

1

Check paste tool availability

# X11: xdotool (primary method)
which xdotool

# Wayland: wtype or ydotool
which wtype
which ydotool

# If none found, install one:
sudo apt install xdotool  # Debian/Ubuntu
sudo dnf install xdotool  # Fedora
2

Test native paste binary

# Check if compiled
ls -la resources/bin/linux-fast-paste

# Test manually
echo "test" | xclip -selection clipboard
resources/bin/linux-fast-paste
# Should paste "test" to focused window
3

GNOME Wayland users

Native Wayland apps (not XWayland) may not support auto-paste.Workaround:
  • Use Ctrl+V manually
  • Or use XWayland-based apps (most Electron apps run via XWayland)
4

ydotool daemon (if using ydotool)

# Start daemon
sudo systemctl enable --now ydotoold

# Check status
systemctl status ydotoold

Hotkey Conflicts

Hotkey Not Registering

Cause: Another app is using the same hotkeyFix:
  1. Open Control Panel → Settings → Hotkey
  2. Change to a different key combination
  3. Common alternatives: F8, F9, Cmd+Shift+Space, Ctrl+Alt+R
macOS conflicts:
  • Backtick (`): Spotlight or Raycast
  • Cmd+Space: Spotlight
  • Globe/Fn: System emoji picker (macOS 13+)
Windows conflicts:
  • Win+G: Xbox Game Bar
  • Win+Shift+S: Snipping Tool
Cause: Electron’s globalShortcut API doesn’t work on WaylandSolution: OpenWhispr automatically uses native GNOME shortcutsVerify:
  1. Open GNOME SettingsKeyboardKeyboard ShortcutsCustom Shortcuts
  2. Look for “OpenWhispr Toggle Dictation”
  3. If missing, restart OpenWhispr
Limitations:
  • Push-to-talk not supported (only tap-to-talk)
  • Some keys unavailable (e.g., backtick `)
Symptom: Tap works but push-to-talk doesn’t respondCause: Native key listener binary missing or failedFix:
# Re-download binary
npm run download:windows-key-listener

# Or check if it exists
ls resources/bin/windows-key-listener.exe
Fallback: If binary can’t be obtained, use tap-to-talk mode

Model Download Problems

Download Stalls or Fails

1

Check network connectivity

# Test HuggingFace connectivity
curl -I https://huggingface.co

# Test whisper.cpp model URL
curl -I https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin
2

Clear partial downloads

# Delete incomplete files
rm ~/.cache/openwhispr/whisper-models/*.tmp
rm ~/.cache/openwhispr/whisper-models/*.partial
3

Check disk space

# Ensure enough space for model
df -h ~/.cache/openwhispr

# Large model needs 3GB free:
# - large-v3: 3GB
# - turbo: 1.6GB
# - medium: 1.5GB
4

Try manual download

# Download with curl (resume supported)
curl -L -C - -o ~/.cache/openwhispr/whisper-models/ggml-base.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin

# Verify file size
ls -lh ~/.cache/openwhispr/whisper-models/ggml-base.bin

Model File Corrupted

Cause: Download interrupted or file corruptedFix:
# Delete corrupted model
rm ~/.cache/openwhispr/whisper-models/ggml-base.bin

# Re-download via Control Panel
# Or manually:
curl -L -o ~/.cache/openwhispr/whisper-models/ggml-base.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin

# Verify size matches expectedSizeBytes
# base model should be exactly 148000000 bytes

Debug Mode

Enable comprehensive logging for troubleshooting:
1

Enable via UI

  1. Open Control PanelSettingsAdvanced
  2. Toggle Debug Logging on
  3. Reproduce the issue
  4. Click Open Logs Folder
2

Enable via environment variable

# Add to .env file
OPENWHISPR_LOG_LEVEL=debug

# Or set temporarily
export OPENWHISPR_LOG_LEVEL=debug
npm run dev
3

Log file locations

~/Library/Logs/OpenWhispr/main.log
4

Read logs

# View last 100 lines
tail -n 100 ~/Library/Logs/OpenWhispr/main.log

# Follow in real-time
tail -f ~/Library/Logs/OpenWhispr/main.log

# Search for errors
grep -i error ~/Library/Logs/OpenWhispr/main.log
What’s logged in debug mode:
  • Audio pipeline (MediaRecorder → FFmpeg → whisper.cpp)
  • IPC calls and responses
  • File system operations
  • Network requests (API calls, downloads)
  • Error stack traces

Performance Issues

Slow Transcription (Local)

Symptom: Transcription takes 30+ seconds for 10 seconds of audioFix:
  1. Switch to smaller model: base (142MB) or tiny (75MB)
  2. Use cloud transcription (OpenAI API)
  3. Enable GPU acceleration (if supported):
    • macOS: Automatic (Metal)
    • Windows/Linux: CUDA (requires NVIDIA GPU)
Symptom: OpenWhispr uses 500MB+ RAMCause: Large model loaded in memoryFix:
  • Use smaller model
  • Stop whisper-server when not in use:
    await window.electronAPI.whisperServerStop();
    
  • Restart app to clear memory

High CPU Usage

Normal behavior: Transcription uses 100% of available coresIf it persists after transcription:
  1. Check if whisper-server is stuck:
    await window.electronAPI.whisperServerStatus()
    
  2. Stop server:
    await window.electronAPI.whisperServerStop()
    
  3. Restart OpenWhispr

Getting Help

If none of the above solutions work:
1

Gather information

  • OS: macOS 13.4 / Windows 11 / Ubuntu 22.04
  • OpenWhispr version: Control Panel → About
  • Error message: Exact text or screenshot
  • Debug logs: Last 50 lines from log file
2

Search existing issues

Check GitHub Issues: https://github.com/OpenWhispr/openwhispr/issuesUse search terms like:
  • “microphone permission”
  • “whisper.cpp failed”
  • “paste not working”
3

Create new issue

If not already reported:
  1. Go to https://github.com/OpenWhispr/openwhispr/issues/new
  2. Use template:
    **Describe the bug**
    [Clear description]
    
    **To Reproduce**
    1. Open app
    2. Record dictation
    3. Error appears
    
    **Expected behavior**
    [What should happen]
    
    **Environment**
    - OS: [e.g., macOS 14.2]
    - Version: [e.g., 1.5.5]
    
    **Debug logs**
    
    [Paste relevant log lines]
Do NOT include API keys, passwords, or personal information in GitHub issues. Redact them from logs before posting.

Common Error Messages

Error MessageCauseSolution
Microphone permission deniedmacOS/Windows microphone privacy settingGrant permission in System Settings
No audio detectedMicrophone muted or gain too lowIncrease input volume
whisper.cpp binary not foundMissing or wrong platform binaryRun npm run download:whisper-cpp
Failed to load modelModel file corrupted or missingDelete and re-download model
Invalid API keyWrong or expired OpenAI keyUpdate key in Settings
Rate limit exceededToo many API requestsWait 60s or upgrade plan
Accessibility permission requiredmacOS paste needs permissionEnable in System Settings → Accessibility
xdotool not foundLinux paste tool missingsudo apt install xdotool
Hotkey already in useConflict with another appChange hotkey in Settings
FFmpeg not foundBundled FFmpeg failed to unpackReinstall OpenWhispr

Platform-Specific Notes

Common Issues:
  • Globe key listener requires Xcode Command Line Tools
  • Accessibility permission needed for paste
  • Notarization may cause “damaged” errors on unsigned builds
Fix “App is damaged”:
xattr -cr /Applications/OpenWhispr.app

Next Steps

Architecture

Deep dive into technical internals

Model Registry

Manage AI models and downloads

Building from Source

Compile and customize OpenWhispr

Build docs developers (and LLMs) love