Research-Grade Keystroke Analysis

Detect Motor Changes Early

A non-invasive screening tool for Parkinson's disease
using your natural typing rhythm

Tremora analyses how you type — hold times, flight times, and inter-key intervals — to detect the subtle motor irregularities associated with early Parkinson's disease. Interpretable by design. Clinically informed.

Download for Windows See How It Works
84% Model AUC
80% Sensitivity
80% Specificity
526 Features Extracted
0ms Data Leaves Device
Tremora is a research screening tool only. It is not a medical device and does not provide clinical diagnosis. Always consult a qualified neurologist for medical evaluation.
Process

From keystroke
to clinical insight

A four-step pipeline — from raw OS-level timing data to an interpretable screening result — runs entirely on your device.

01
Kernel-Level Capture
uiohook-napi hooks directly into the OS at hardware interrupt level — capturing sub-millisecond keystroke timestamps with no browser jitter or delay.
02
Signal Extraction
526 features extracted per session — hold time, flight time, IKI, DFA alpha, permutation entropy, bigram timing, tremor FFT, and motor fatigue slope.
03
Distilled Inference
A lightweight Neural Additive Model — distilled from a Bi-LSTM teacher — produces a risk score as a transparent sum of 30 independent feature contributions.
04
Interpretable Report
Shape function plots, feature contribution rankings, and a plain-English verdict. Every prediction is explainable — no black-box outputs.
Capabilities

Built for precision.
Designed for trust.

Signal Quality
Motor-Clean Filtering
Typo corrections inject cognitive noise into timing signals. Tremora detects correction events and removes contaminated windows before analysis — ensuring only pure motor data enters the model.
Personalisation
Personal Baseline Normalisation
The model was trained on adults aged 55–70. Instead of comparing you to a research cohort 35 years older, Tremora establishes your personal baseline after 3 sessions and tracks changes relative to your own motor rhythm — the clinically correct approach for longitudinal screening.
Hardware
Polling-Aware Dampening
Detects your keyboard's USB polling rate. At 125Hz, timing-sensitive features like DFA alpha and permutation entropy are automatically downweighted so quantisation noise is not mistaken for motor tremor.
Transparency
Glass-Box Model
Every prediction is a mathematical sum of 30 independent feature contributions. No hidden layers, no black-box decisions. Any score can be manually verified from the feature values.
Privacy
100% On-Device
All processing runs locally. Keystroke content is never recorded — only timing metadata. No data is transmitted to any external server. Ever.
Age Correction
Cohort-Aware Score Recalibration
The Tappy research dataset was collected on adults with a mean age of 58. Tremora applies age-group corrections to shift the healthy baseline to match your age — preventing healthy young users from receiving inflated risk scores due to faster, more fluid motor patterns.
Reliability
Out-of-Distribution Detection
Uses the training scaler's statistics to measure how far your session sits from the training population — flagging unreliable predictions before they reach you.

Every score
explained.

Tremora uses a Neural Additive Model — an interpretable-by-design architecture that exposes exactly which features drove the prediction and by how much. No post-hoc explanations. No SHAP approximations. The model's internals are the explanation.

Feature contribution rankings
Each of 30 feature subnets outputs a scalar value showing its contribution to the risk score.
Shape function plots
Visual curves showing exactly how each feature value maps to its contribution to the prediction.
Plain-English verdict
Deterministic natural language summary of what the score means for this specific session.
PDF diagnostic report
Export a full interpretability report with all charts and scores for sharing with a clinician.
Diagnostic Signatures
Max FT IQR
28.0%
Mean BG5 Range
17.8%
Max HT Mean
11.7%
Max FT Mean
10.1%
Mean HT Max
8.6%
STABLE
Your motor timing today is consistent with your personal baseline. No meaningful change has been detected across your last 4 sessions.
Model Performance

Validated on
research-grade data.

0.84 AUC-ROC
80% Sensitivity
80% Specificity
526 Features
30 Interpretable Rules

Evaluated on the Tappy Keystroke Dataset. Results may vary on data collected outside the training distribution.

Scientific Basis

Grounded in
clinical research.

Tremora is built on peer-reviewed research into digital biomarkers for Parkinson's disease detection.

Keystroke Dynamics as a Biomarker
PD patients show measurable differences in hold time, flight time, and inter-key intervals due to bradykinesia and motor tremor — detectable before clinical symptoms become apparent.
Tripathi, Arroyo-Gallego & Giancardo (2023)
Knowledge Distillation
A high-capacity Bi-LSTM teacher model is distilled into a lightweight Neural Additive Model student — preserving predictive power while achieving full intrinsic interpretability.
Moslemi et al. (2024)
The Tappy Dataset
Tremora is trained on the Tappy Keystroke Dataset — a research-grade collection of natural typing sessions from PD patients and healthy controls, collected by the University of Warwick.
Warwick University, Tappy Project

Download Tremora

Free to use. Runs entirely on your device. No account required to get started — create a local profile and begin your first session in under a minute.

Windows 10 / 11 64-bit only ~85 MB download No internet required after install
Windows
  • Windows 10 or later (64-bit)
  • 4GB RAM minimum, 8GB recommended
  • 200 MB free disk space
  • USB or Bluetooth keyboard
  • Internet connection not required
macOS (coming soon)
  • macOS 12 Monterey or later
  • Accessibility permission required
  • Apple Silicon or Intel
  • 4GB RAM minimum
  • 200 MB free disk space
Linux (coming soon)
  • Ubuntu 20.04+ / Debian 11+
  • User must be in 'input' group
  • X11 or Wayland (X11 preferred)
  • 4GB RAM minimum
  • AppImage format
FAQ

Common questions.

No. Tremora is a research screening tool and is not a medical device. It has not been clinically validated and does not provide a diagnosis. A positive or elevated screening result should be discussed with a qualified neurologist, not acted upon independently. The tool is intended to raise awareness of possible motor changes over time, not to replace clinical evaluation.
No. Tremora only records timing metadata — how long each key is held, the time between keypresses, and which hand typed each key (left or right). The actual characters you type are never stored, never transmitted, and cannot be reconstructed from the data. All processing runs locally on your device.
No. The model was trained on research participants with a mean age of around 58. Younger users typically have faster, more fluid motor patterns that can appear statistically "abnormal" to a model calibrated on older adults. Tremora applies age correction to account for this, and the personal baseline system (active after 3 sessions) removes this bias entirely by comparing you only to yourself. A single session result without a personal baseline has very limited clinical meaning.
A minimum of 150 keystrokes is required, which takes approximately 2–3 minutes of natural typing at a comfortable pace. Longer sessions of 300+ keystrokes produce more reliable results. The app shows a live progress indicator so you always know when you have typed enough to trigger analysis.
Yes, but result quality depends on your keyboard's USB polling rate. Standard keyboards poll at 125Hz (±8ms timing resolution). Gaming keyboards at 1000Hz (±1ms) produce more precise timing data. Tremora automatically detects your keyboard's polling rate and applies dampening to timing-sensitive features when resolution is limited. The app displays your keyboard's polling rate before each session.
After your first 3 sessions, Tremora uses your average scores as your personal healthy baseline. All future sessions are shown as a deviation from your own baseline — not as an absolute risk score against a research population. This is clinically more meaningful: Parkinson's motor changes are progressive and only detectable by tracking an individual over time, not by comparing them to a different population at a single point in time.