Skip to content

About AirwayLab

PAP machines collect detailed breath-by-breath data every night — but most of it stays locked on an SD card, invisible to patients and ignored by clinicians who only check AHI. Millions of people are “treated” with AHI under 5 but still wake up exhausted because flow limitation, effort-related patterns, and breathing pattern instability go undetected.

We believe your breathing data belongs to you. AirwayLab makes that data visible, understandable, and actionable — with an open-source analysis engine you can audit, analysis that runs entirely in your browser, and a free tier that will always include the complete toolkit.

Four research-grade analysis engines process your ResMed SD card data client-side via Web Workers. No tracking, no cookies — just the insights your machine already collected but never showed you.

Private by default · Open-source engine · You control your data

Our Approach

Free Tier — Complete Analysis

AirwayLab's core analysis — Glasgow Index, WAT, NED, oximetry, insights, exports — is free and always will be. We believe everyone on PAP therapy deserves access to research-grade analysis, regardless of their budget or technical skill.

Open-Source Engine — Verifiable Trust

The analysis engine is open source (GPL-3.0). Your sleep data is health data — we think you should be able to verify exactly how it is analysed. That's why we publish the engine and run the analysis in your browser by default.

Premium — Sustaining Development

Building and maintaining a tool like this takes time. Premium features like AI-powered therapy insights help fund continued development. They're genuinely useful additions — not features we removed from the free tier to charge for.

Our Vision

Your data, visible

Now

PAP machines collect rich breath-by-breath flow data every night, but most of it stays invisible — locked on an SD card, inaccessible to the people it belongs to. AirwayLab makes that data visible and understandable. Four research-grade engines analyse flow limitation, effort-related patterns, and breathing patterns that standard AHI metrics miss. Everything runs in your browser, so your data stays yours.

Shared insights, collective intelligence

Next

Individual analysis is powerful, but the real potential is collective. With your consent, anonymised breathing data can be contributed to a growing research dataset. Patterns hidden in thousands of real-world therapy nights that no single sleep lab has the scale to find. This data powers better analysis algorithms for everyone.

Learn more about our research programme

Smarter therapy for everyone

Future

Aggregated insights from thousands of real-world nights could help researchers, clinicians, and device manufacturers understand real-world therapy patterns at scale — beyond AHI. Better data means better algorithms. Better algorithms mean better therapy. Better therapy means better sleep for millions of people.

Methodology

AirwayLab uses four independent analysis engines, each targeting a different aspect of sleep-disordered breathing. All algorithms are deterministic and reproducible — the same input always produces the same output.

New to flow limitation? Start here

How every metric is computed

Glasgow Index

Flow Limitation Scoring

A 9-component scoring system that evaluates each breath for flow limitation characteristics. Originally developed by DaveSkvn as an open-source analyzer (GPL-3.0), ported and validated for AirwayLab.

How it works

  1. 01Each inspiration is segmented from the raw flow signal using zero-crossing detection with minimum window filtering.
  2. 02Nine shape descriptors are computed per breath: Skew, Spike, Flat Top, Top Heavy, Multi-Peak, No Pause, Inspiratory Rate, Multi-Breath, and Variable Amplitude.
  3. 03Each component is scored 0–1 based on statistical thresholds derived from the breath population.
  4. 04The overall Glasgow Index is the sum of all 9 components, yielding a 0–9 scale where lower is better.

Based on Glasgow Sleep Centre flow limitation analysis methodology.

Deep dive

WAT (Wobble Analysis Tool)

Ventilation Pattern Analysis

Three complementary metrics that assess flow limitation severity, breathing regularity, and periodic breathing patterns from the flow signal.

How it works

  1. 01FL Score: For each breath, computes the variance of the flow samples above 50% of peak; a flatter top (lower variance) scores higher. An uncalibrated relative index currently under review — compare within your own nights rather than the absolute value.
  2. 02Regularity Score: Uses Sample Entropy (SampEn) on minute ventilation to quantify breathing pattern regularity. Higher values indicate more stable, regular breathing.
  3. 03Periodicity Index: Applies FFT spectral analysis to minute ventilation, looking for power concentration in the 0.01–0.03 Hz band characteristic of periodic breathing (30–100 second cycles).

Sample Entropy method per Richman & Moorman (2000). FFT periodicity per established sleep medicine practice.

NED Analysis

Negative Effort Dependence

Breath-by-breath analysis of flow limitation using the ratio of peak inspiratory flow to mid-inspiratory flow, with automated progressive effort-pattern analysis.

How it works

  1. 01NED = (Qpeak − Qmid) / Qpeak, where Qpeak is peak inspiratory flow and Qmid is flow at 50% of inspiratory time. Higher NED indicates more flow limitation.
  2. 02Flatness Index (FI) measures how flat the inspiratory flow plateau is. FI ≥ 0.85 indicates significant flow limitation.
  3. 03M-shape detection identifies breaths with a characteristic mid-inspiratory dip showing oscillation in the flow waveform.
  4. 04Progressive NED run detection: sequences of ≥3 breaths with progressively rising NED slope, terminated by a recovery breath with sudden NED drop. Reported as events per hour.

NED concept from Tamisier et al. Progressive effort-pattern detection adapted from respiratory scoring criteria.

Oximetry Pipeline

17-Metric SpO₂ & Heart Rate Framework

Comprehensive pulse oximetry analysis for Viatom/Checkme O2 Max data, computing desaturation indices, heart rate surge patterns, and coupled cardio-respiratory events.

How it works

  1. 01ODI-3% and ODI-4%: Oxygen Desaturation Index at 3% and 4% thresholds, computed as events per hour of recording.
  2. 02Time below threshold: Percentage of recording time with SpO₂ < 90% and < 94%.
  3. 03HR surge detection: Clinical surges (>8, >10, >12, and >15 bpm above 30-second baseline) and rolling mean surges (>10 and >15 bpm above 5-minute rolling mean).
  4. 04Coupled events: Simultaneous SpO₂ desaturation + HR surge within a time window, suggesting respiratory arousal.
  5. 05First-half vs second-half night comparison to detect positional or REM-related patterns.

ODI methodology per AASM scoring manual. Double-tracking artifact correction applied.

Deep dive

Frequently Asked Questions

AirwayLab supports ResMed AirSense 10 and 11, AirCurve 10 and 11, and BMC Luna 2 / RESmart G2 and G3 machines, and the list is growing.

If your device is not supported yet, the upload screen lets you tell us so we can prioritise it.

Remove the SD card from your ResMed machine and insert it into your computer (you may need an SD card reader). When uploading to AirwayLab, select the DATALOGfolder — this contains the EDF files with your flow waveform data. AirwayLab automatically finds and groups the relevant files by night.
Yes. All core analysis runs entirely in your browser using Web Workers — your sleep data stays on your device by default. No cookies are used. We use PostHog for privacy-safe, cookie-free product analytics that are anonymous by default and GDPR-compliant; only if you opt in to analytics is your usage linked to your account. Optional features like AI-powered insights, cloud storage, or data contribution require your explicit consent before any data is sent to a server, and raw waveform data leaves your device only through those explicit choices — cloud storage, sharing, or research contribution. The source code for the analysis engine is open for inspection.
AirwayLab supports CSV exports from the Viatom/Checkme O2 Maxwrist pulse oximeter. The CSV should contain SpO₂ and heart rate columns with timestamps. Oximetry data is optional — all four analysis engines work with SD card data alone, and the oximetry pipeline activates only when oximetry CSVs are provided.
The Glasgow Index scores each breath on 9 flow limitation characteristics, producing an overall score from 0 to 8 (lower is better). Generally: below 2.0 is in the lower range, 2.0–3.0 suggests moderate flow limitation scores, and above 3.0 suggests elevated flow limitation scores. Your clinician can help interpret these findings in context.
These are three independent methods of detecting flow limitation, each with different strengths. Glasgow scores breath shapes holistically (9 descriptors). WAT analyzes population-level patterns (regularity, periodicity). NED measures the specific ratio of peak-to-mid flow that indicates airway narrowing, plus automated progressive effort-pattern analysis. Using all three together gives a more complete picture than any single metric.

This is one of the most common questions, and it makes sense once you understand that each metric detects flow limitation using a different method:

  • Glasgow Index scores 9 breath-shape characteristics (skew, spikes, flat tops, multi-peaks, etc.). It catches a wide range of waveform abnormalities, not just classic flow limitation.
  • FL Score(WAT engine) takes the flow samples above 50% of peak for each inspiration and computes their variance — low variance (a flat top) maps to a higher score, averaged across all breaths. It’s an uncalibrated relative index currently under review, not a percentage of flow-limited breaths.
  • NED Mean measures the per-breath ratio of peak flow to mid-inspiratory flow. It specifically targets the pattern where the airway narrows during inhalation, causing mid-flow to drop below peak flow.

A high FL Score with low Glasgowcan happen when breaths are moderately flat-topped (the WAT flatness detector picks this up) but don’t show the specific shape distortions Glasgow targets (abnormal skew, spikes, multi-peaks). The breathing is restricted but uniformly so.

A low NED with high Glasgowcan occur when breath shapes are abnormal in ways that don’t affect the peak-to-mid flow ratio — for example, variable amplitude or unusual timing patterns. These are real abnormalities, just not the specific “negative effort” pattern NED looks for.

The Estimated Arousal Index (EAI) estimates how many times per hour your brain briefly wakes up during sleep, based on breathing pattern changes. True arousals can only be measured with EEG (brain wave monitoring), but respiratory pattern changes correlate well with cortical arousals.

AirwayLab detects arousals by looking for sudden spikes in respiratory rate(>20% above a 120-second rolling baseline) or tidal volume(>30% above baseline). Each spike suggests a micro-awakening — your brain briefly wakes up, takes a few deeper or faster breaths, then returns to sleep. A 15-second refractory period prevents double-counting closely spaced events.

An EAI below 10/hr is in the lower range. An EAI above 15/hr is elevated -- your clinician can help interpret this pattern in context, even if your AHI appears low.

The FL Score is computed by the WAT (Wobble Analysis Tool) engine. For each inspiration, it takes the samples above 50% of peak flow and computes the variance of that normalized top region.

In normal breathing, airflow ramps up and rounds off naturally near the peak, so the top of the breath still varies. In flow-limited breathing, the airflow plateaus because the airway is partially narrowed, so the top of the breath flattens and its variance drops.

Low variance maps to a higher score, and the night’s FL Score is the average across all breaths. This is an uncalibrated relative index currently under review: scores cluster between roughly 50 and 65 even for unobstructed breathing, and the value is not a percentage of flow-limited breaths. Compare trends within your own nights rather than reading the absolute number. Full formulas and thresholds for every metric are on the methodology page.

Yes. Use the export buttons in the dashboard to download your results as CSV (for spreadsheets), JSON (raw data), or open a print-ready PDF report you can save and share. You can also copy a forum-formatted summary for posting on ApneaBoard or Reddit. The PDF report is formatted so you can share it directly with your doctor.
AirwayLab computes flow limitation analysis (Glasgow Index, WAT, NED) automatically on every night, charts the trend, and opens the waveform behind any flag in the browser — no installation, and your data stays on your device by default. OSCAR is an excellent desktop viewer for session-by-session browsing; it does not compute those metrics.

Contributing

The AirwayLab analysis engine is open source under the GPL-3.0 license. Contributions are welcome — whether that's code, bug reports, feature requests, or documentation improvements.

Privacy

Privacy by default

  • All core analysis runs in your browser via Web Workers — your sleep data stays on your device by default.
  • No cookies, no fingerprinting. Privacy-safe analytics (PostHog, GDPR-compliant, cookie-free) are anonymous by default — only if you opt in does AirwayLab link usage to your account.
  • Optional server features (AI insights, cloud storage, data contribution) require your explicit consent. Raw waveform data leaves your device only when you explicitly enable cloud storage, sharing, or research contribution.
  • Engine source code is open for inspection — verify the privacy claims yourself.

Medical Disclaimer

AirwayLab is not a medical device and is not FDA-cleared or CE-marked. It is provided for educational and informational purposes only. The analysis results should not be used as a substitute for professional medical advice, diagnosis, or treatment. Always consult qualified healthcare providers regarding your sleep therapy and any changes to PAP settings.

AirwayLab is licensed under the GNU General Public License v3.0. Glasgow Index engine based on GPL-3.0 code by DaveSkvn.