A browser app for exploring EEG with a Muse 2 / Muse S headset. Built for PSYC 20N (Stanford) so undergraduates can connect a headset, see live EEG, learn what good contact and artifacts look like, run simple one-variable experiments, and compare conditions. No install, no accounts, no data leaves your computer.
Use it: https://braindynamicslab.github.io/muse-web/ (Chrome or Edge — Safari/Firefox don't support Web Bluetooth). No headset? Click Practice for a simulated Muse.
- Live 4-channel EEG (TP9, AF7, AF8, TP10) with a contact-quality indicator for each sensor (muse-lsl "horseshoe" index: amplitude, muscle, line noise, clipping, drift) and plain-language fit hints
- Band power over time (theta, alpha, beta, gamma, optional delta) using nouscope's 1/f-corrected wavelet pipeline
- Optional layers: spectrogram, pulse (PPG, heart rate), head motion (accelerometer); battery level
- Experiment blocks: choose a condition, Start / Stop; per-condition band summary and A-vs-B spectrum comparison
- One-click .zip download: raw EEG, band shares, signal quality, accelerometer, PPG, block times (CSV)
- URL flag
?layers=bands,spectrogram,ppg,motionfixes which layers are shown (instructors can control a week's view);?sim=autostarts Practice mode on load
- Disconnects: the app detects Bluetooth drops and silent stalls, reconnects automatically where the browser allows, keeps your recording, and marks missing time (
gaps.csv). See docs/connection-help.md. - Local only: all acquisition, behavioral tasks, recording and analysis run in your browser. There is no backend, no database, no analytics, and nothing is uploaded. The app contains no network calls beyond loading its own files.
- Autosave: recordings are checkpointed to the browser's IndexedDB (about every 5 s) so an accidental refresh can be recovered. Browser storage is not permanent — always download your data.
npm install
npm run dev # http://localhost:5173 (Node 20.19+ or 22.12+)
npm run build # static site in dist/Web Bluetooth needs HTTPS or localhost. Deploy dist/ to any static host.
Teaching and demos. It is not a research data-collection tool: browser tabs can throttle or drop data on sleep, timestamps are packet-arrival times, and there is no LSL/trigger synchronization.
Built on nouscope (Bob Dougherty / Soundtrip LLC) and
muse-js (Uri Shaked; Soundtrip fork), with signal-quality methods from
the Brain Dynamics Lab's muse-lsl app. Full notices and references: THIRD_PARTY_NOTICES.md.
Muse™ is a trademark of Interaxon Inc.; this project is not affiliated with Interaxon.
MIT © 2026 Manish Saggar, Brain Dynamics Lab.