Skip to content

[steps] Steps from imported fit file #568

Open

Description

@pilleuspulcher-blip

NOOP version

9.0.2-staging

Platform

Android

OS version

17

WHOOP strap model

WHOOP 4.0

Where the data is coming from

FIT / GPX / TCX import

Test Centre profile

Steps

What happens

I imported a fit file from Suunto (walking activity) with 2300 steps.

In Noop only half of the steps were imported, 1150 steps displayed.

These steps were not added to the daily steps captured on-device, but these were overwritten, so that on today's card I can see the 1150 twice and in the card steps the on-device steps of today with 881.

noop-strap-log-260718-1325.txt

Walking_2026-07-18T12_59_00.fit.txt

Image Image Image

What you expected instead

I expect a sum up of all steps (on-device + imported).

Steps to reproduce

  1. Check your steps.
  2. Import a fit file with steps.
  3. Check if the full amount of steps is imported and added to the existing steps.

Strap log

<details><summary>Strap log (last 40 lines, redacted)</summary>


13:26:11  [sleep] gate run=2 spanS=26153 KEPT gate=accepted spanMin=435 eff=0.94 restingHR=42 daytime=false
13:26:11  [sleep] gate run=3 spanS=5922 KEPT gate=accepted spanMin=98 eff=0.96 restingHR=40 daytime=false
13:26:11  [sleep] gate run=4 spanS=1058 DROPPED gate=minSleepMin spanMin=17 minSleepMin=60
13:26:11  [hrv] hrv nightSummary reported=26.59ms wholeNight=46.17ms deepOnly=26.59ms lastSWS=40.91ms nWin=108 nDeep=27
13:26:11  [sleep] rest composite=92.8 dur=1.0*wDur=0.5 eff=0.89*wEff=0.2 restor=1.0*wRestor=0.2 deepFactor=1.0 consist=0.5*wConsist=0.1 group=2 groupInBedMin=565
13:26:11  [sleep] sleep-motion day=2026-07-15 grav=122728 hr=124340 sparse=true stager=V2 family=whoop5
13:26:11  [display] frameSummary frames=60 mean=12.5ms p95=11.1ms hitches=2 worst=66.4ms threshold=33.0ms
13:26:11  hrv diag day=2026-07-15 rmssd=48ms sdnn=143ms meanNN=1260ms rr=24406/23252 rejected=5% coverage=0.89 dupBeats=34
13:26:11  rhr day=2026-07-15 floor=40 nightMean=48 inBedSamples=32075 (floor = WHOOP-style lowest-sustained = NOOP RHR; mean = sleeping-HR-app number)
13:26:12  [display] frameSummary frames=60 mean=13.3ms p95=11.1ms hitches=2 worst=88.6ms threshold=33.0ms
13:26:13  [display] frameSummary frames=60 mean=13.4ms p95=16.7ms hitches=1 worst=44.3ms threshold=33.0ms
13:26:14  [sleep] gate run=-1 spanS=0 DROPPED gate=sparseBridge sparse=true gapMin=90 runsBefore=6 runsAfter=6
13:26:14  [display] frameSummary frames=60 mean=18.2ms p95=16.6ms hitches=2 worst=66.3ms threshold=33.0ms
13:26:14  [sleep] gate run=0 spanS=18891 KEPT gate=accepted spanMin=314 eff=0.92 restingHR=55 daytime=false
13:26:14  [sleep] gate run=1 spanS=10270 KEPT gate=accepted spanMin=171 eff=0.95 restingHR=48 daytime=false
13:26:14  [sleep] gate run=2 spanS=962 DROPPED gate=minSleepMin spanMin=16 minSleepMin=60
13:26:14  [sleep] gate run=3 spanS=1203 DROPPED gate=minSleepMin spanMin=20 minSleepMin=60
13:26:14  [sleep] gate run=4 spanS=73891 DROPPED gate=maxMainSleepSpanS spanMin=1231 maxMainSleepSpanMin=960
13:26:14  [sleep] gate run=5 spanS=1080 DROPPED gate=minSleepMin spanMin=18 minSleepMin=60
13:26:14  [hrv] hrv nightSummary reported=nil wholeNight=nil deepOnly=nil lastSWS=nil nWin=0 nDeep=0
13:26:14  → TOGGLE_REALTIME_HR payload=01
13:26:14  → GET_BATTERY_LEVEL payload=00
13:26:15  [connection] frameTiming type=COMMAND_RESPONSE t=1784373975s
13:26:15  [battery] bank soc=97.7 t=1784373975s
13:26:15  [connection] frameTiming type=REALTIME_DATA t=1784373975s
13:26:15  [display] frameSummary frames=60 mean=19.4ms p95=26.5ms hitches=2 worst=99.4ms threshold=33.0ms
13:26:16  [display] frameSummary frames=60 mean=19.6ms p95=16.6ms hitches=2 worst=116.1ms threshold=33.0ms
=== Capture check ===
universal: present (dayOwner day=)
sleep: present (gate run=)
connection: MISSING (expected clockDrift )
workouts: MISSING (expected session event=)
display: present (dataVolume dbRows=)
import: MISSING (expected import parser=)
steps: present (stepsEst )
battery: present (battery series=)
recovery: MISSING (expected charge score=)
hrv: present (via hrv nightSummary)
INCOMPLETE: missing connection, workouts, import, recovery
bundle ok files=3 report=present meta=present screenshot=present crash=present leaks=0

</details>

Before you submit

  • I attached my exported NOOP .zip (not a screenshot of the Live screen). If my bug is a clearly reproducible UI issue I described exactly how to see it instead.
  • I attached or pasted a strap log above — or my bug is a clearly reproducible UI issue that doesn't need one (e.g. a typo, a button that does nothing) and I've described exactly how to see it.
  • I checked the Troubleshooting guide — especially "history syncs but no data" (most often the strap isn't banking history to flash; charge it to 100% and reconnect).
  • I checked the FAQ and — if I'm on a WHOOP 5.0 / MG — the 5.0/MG status page, and this isn't an already-known limit (e.g. SpO₂, or recovery/sleep on the 5/MG).
  • I've left out anything personal (strap serial, account email, raw export).

Activity

  1. ryanbr commented on Jul 18, 2026

    @ryanbr
    Owner

    Status + what would help pin the rest of this.

    The halving is fixed (the ×2 for foot sports — FIT records strides in the steps field, and 1 stride = 2 steps). That lands in an upcoming build. One thing to note: it applies to new imports, so you'll need to delete the imported walk and re-import it to see the corrected count — an already-imported activity keeps its old (halved) value.

    The daily-total part — imported steps standing in for / duplicating the day's total — is still open, and I want to make sure we chase the right thing. NOOP is supposed to only use an imported activity's steps to fill a day that has no other step count — it should never replace a day your strap already counted. So the fact that yours showed the imported value on a day with an on-device count (881) means something is bypassing that rule, and I'd like to narrow down where. A few specifics would help a lot:

    1. Exactly where does the imported number appear? The Today "Steps" tile, the Steps detail screen (tap the tile), the workout itself, somewhere else? And "twice" — which two places? A screenshot of each spot with the number visible is ideal.
    2. Did your strap count steps that day independently (i.e. was there an on-device number before you imported)? You mention 881 on the card — was that there first?
    3. If you delete the imported walk (Data Sources → the activity-file workout, or the workout list), does the imported number disappear from the day? That confirms it's coming from the import.
    4. Settings → Export CSV, then open the days file and find that day's row — what does its step value read there? That tells us what's actually stored vs. what's displayed.

    On a debug/strap log: it won't help here — a strap log is the live Bluetooth connection, but this is about stored, already-computed daily data, so it wouldn't show the step sourcing. The CSV export above + the screenshots are the useful artifacts.

    Thanks — with those I can trace exactly which read path is showing the import instead of the merged total.

  2. pilleuspulcher-blip commented on Jul 19, 2026

    @pilleuspulcher-blip
    Author

    @ryanbr

    To your point 1.

    In the version 9.0.1 there was key metrics and your cards on the page today. In both steps were shown. Therefore I wrote "twice" in my initial post.

    I will be back with a test of the step counting and imported fit files. Give me some time.

  3. pilleuspulcher-blip commented on Jul 19, 2026

    @pilleuspulcher-blip
    Author

    @ryanbr

    Imported steps are shown in today's page in steps on your card and steps on key metrics. Only the imported steps from a fit file. Steps shown before the import of the fit file disappear and are not added.

    My strap has counted steps on-device, showing up in your cards and key metrics and in opened card with steps.

    If I delete the imported workout, the steps out of this import don't disappear, the steps are showing up instantly.

    In exported CSV files there is no imported data of the fit file. It's not showing up and there are no steps at all in these files. And on the page where the fit file can be imported, there is always the state "0 workouts, nothing imported" (screenshot 4).

    And here the screenshots before the imported steps (1), after the import and removal of the imported workout (2) and the one of the unchanged steps card with on-device steps only (3).

    Image Image Image Image

    Walking_2026-07-19T09_06_00-1.fit.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions