LOCAL
Camera processing stays on this device.

Frames and facial landmarks stay in browser memory and are never uploaded.

Privacy details →
A PRIVATE FOCUS EXPERIMENT · v0.9

Stop borrowing someone else’s study schedule.

LearnFit estimates changes in focus during a screen-based study task by comparing three eye signals with your personal baseline. For task-aware tracking across tabs, use the Chrome extension.

Studying across Chrome tabs? Get the extension →

~ 30 sec to make a baseline

◇Camera processing stays on this device. LearnFit automatically adds each completed session to identifier-free usage totals. Detailed research data is sent only if you select the testing option. LearnFit never uploads video, eye measurements, page addresses, or titles.

A SCREEN-BASED FOCUS ESTIMATE

Know when your focus changes.

LearnFit compares blink frequency, completed blink duration, and eye openness with your own 30-second baseline. Normal blinking is expected and measured.

Web limitation: the session clock continues when you change tabs or windows, but the browser may slow or stop camera processing in the background. That time becomes No signal and is excluded from the focus estimate. This website cannot know whether another tab is study or entertainment; use the Chrome extension for verified study pages.

CHROME EXTENSION · v1.3.4

Take LearnFit to your study tabs.

Choose the Chrome webpages, online lessons, and PDFs that belong to your task. The extension runs camera tracking independently of this website while Chrome stays open. It pauses scoring on unconfirmed pages. Independent desktop apps are not recognized.

Download Chrome extension · ZIP ↓

Manual installation: this build is not a Chrome Web Store listing. Downloading does not install it automatically. Use desktop Chrome; managed school browsers may restrict installation.

  1. Download and unzip the package. Keep the extracted folder on your computer.
  2. Type chrome://extensions in Chrome’s address bar and turn on Developer mode.
  3. Choose Load unpacked. Inside the extracted package, select extension/chrome—the folder containing manifest.json.
  4. Pin LearnFit from Chrome’s Extensions menu. Open your study material, click LearnFit, then choose Verify this page & start. Allow the camera when prompted.

Already installed from a different folder? Keep using that installation until your session ends. To update it, replace its files with this version and click Reload on its Chrome extensions card.

Camera frames and page addresses stay on your device. Read the privacy details. Open How to use inside the extension for the four-step guide.

A NOTE FROM THE MAKER

Your study rhythm belongs to you.

Hi, I’m Xiyue, the creator of LearnFit. Fixed study timers can be helpful, but I don’t think one schedule fits everyone. I started this project to explore how we might notice changes in our focus, reflect on them, and find a way of studying that feels right for us.

One thing user feedback has made clear: leaving this page does not mean you stopped learning. You might be reading a textbook in another tab or checking your notes. A browser event cannot tell me what you are thinking, and a missing camera signal should never become a judgment about your effort.

I see the website as a quick, no-install place to try a personal baseline, explore your signal, and reflect on a session. The Chrome extension is for studying across chosen browser tabs. Confirming a page provides task context; it does not prove that someone is concentrating.

What works today: the web session clock continues across tab and window changes. Browsers may interrupt camera processing in the background, so unobserved time becomes No signal and is excluded from the focus estimate. The website cannot verify what happens in another tab; the extension can verify selected Chrome study pages.

LearnFit’s Focus Estimate is an experimental estimate based on eye signals, not a validated measurement of everything happening in your mind. My goal is to help you ask better questions about your own study habits—not give you another number to feel anxious about. Your feedback helps me find where the tool gets that wrong.

— Xiyue, creator of LearnFit · September 26, 2026

FROM A FIXED TIMER TO A PERSONAL RHYTHM

Build log

Open each chapter to see what I noticed, what I changed, and what the work taught me.

SEP 25 · LEARNING FROM FEEDBACK

Leaving a tab is not leaving a task.

I added a four-step English tutorial to the website and extension, with Skip and a permanent How to use entry. It explains camera setup, page confirmation, missing signals, and report coverage.

I also reconsidered the web timer: reading in another tab must not be mistaken for disengagement. The next planned update will separate session time from valid observation time and keep the session timer running across tab switches. The current web version still pauses when its tab or window loses focus.

MAR–JUN 2026 · THE QUESTION

Why should one timer fit everyone?

Pomodoro timers helped me, but my own limit changed by task and by day. I began asking whether a tool could help learners discover a rhythm instead of prescribing one.

JUL 05 · FIRST PROTOTYPE

I turned eye landmarks into a live signal.

The Python version connected MediaPipe, EAR, blink detection, a score, WebSocket, and a dashboard. It worked—and immediately exposed camera, threshold, and missing-data problems.

JUL 12 · DEBUGGING

A blink needed a beginning and an end.

I rebuilt blink counting as a state machine, separated quick blinks from long closures, added a 30-second baseline, and stopped trusting one noisy frame.

AUG 07 · BROWSER REBUILD

I removed the Python setup barrier.

I moved MediaPipe and the scoring engine into browser JavaScript, separated the core modules, and made the first Chrome extension while keeping camera processing on-device.

SEP 18 · HONESTER SCORE

The score became a clue, not a verdict.

I kept the 50/30/20 structure but compared it with each learner’s baseline, showed tracking gaps honestly, removed pupil-millimeter claims, and redesigned the interface.

SEP 19–20 · REAL USE

I built for life outside the demo tab.

An offscreen Chrome extension can continue a user-started session across ordinary tabs. I also added consent-based testing, a research dashboard, and the public Pages deployment.

SEP 25 · TASK-AWARE FOCUS

I stopped treating every open tab as study.

The extension now scores only pages the learner verifies, separates off-task and no-signal time, and withholds a final focus estimate when tracking coverage is below 60%.

REAL-USER TEST · ABOUT 2 MINUTES

Help me make LearnFit more useful.

Your honest answer helps document real testing and improve LearnFit. Responses are anonymous. Please do not include your name, email, school, or other identifying details.

LearnFit was easy to use.
The focus estimate helped me understand my concentration.
I understood what the score could and could not tell me.
During the last five minutes, I was focused on my intended task.

HOW THE ESTIMATE WORKS

Why eye signals?

LearnFit uses eye behavior because it can be observed continuously with an ordinary webcam and compared with the same learner’s personal baseline. It is useful as a change signal, but it is not a direct reading of thought or attention.

01

Blink frequency

Blink rate can change with visual demand, fatigue, dryness, and cognitive load. LearnFit compares completed blinks per minute with your own baseline rather than a universal “normal” number.

02

Completed-blink duration

The engine measures a blink only after the eye reopens. Ordinary brief blinks remain valid tracking; longer closures can indicate that the current eye pattern has shifted.

03

Eye openness · EAR

Eye Aspect Ratio uses distances between selected MediaPipe eye landmarks. Because faces and camera angles differ, LearnFit interprets EAR relative to your 30-second baseline.

04

Time, not one frame

A state machine prevents one blink from being counted repeatedly, and time-based smoothing reduces single-frame noise. Sustained changes matter more than an instant movement.

50

Blink frequency
relative change from baseline

30

Blink duration
completed events only

20

Eye openness
normalized EAR change

How to read the result: green means measured signals stayed close to baseline, amber means some change, coral means a marked change, and a gap means no usable signal. Below 60% coverage, LearnFit does not produce a final score.

Scientific boundary: blinking also changes because of lighting, dry eyes, glasses, medication, tiredness, and task type. That is why LearnFit combines signals, calibrates per person, preserves missing data, and asks you to compare the estimate with task progress and self-reported focus.

EVIDENCE AND LIMITATIONS

Why blinking can be useful—but never definitive.

Blink timing and frequency can change with visual demand, cognitive load, and attentional control. They also change with dry eyes, fatigue, lighting, age, glasses, medication, and task type. LearnFit therefore compares several signals with your own baseline, smooths changes over time, preserves missing data, and asks you to compare the estimate with task progress and self-report.