Cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Sleep timeline June 24 changed the next day (and sleep stage values seem incorrect from then on)

Replies are disabled for this topic. Start a new one or visit our Help Center.

Hello, on June 24, the Sleep Timeline on my Fitbit app showed a low value for Deep Sleep. Surprisingly, on June 25, the Sleep Timeline Deep Sleep for June 24 was changed to 1h 32m (and the corresponding graph also changed). In fact, the Deep Sleep in the Timeline for June 25 was uncharacteristically high (2h 14m). I have lost confidence in the sleep data since June 24.

On June 25, I found the sleep.json file, which contains the data for June 24: It sill shows the >original< June 24 data for Deep Sleep. However, the UserSleepStages csv file shows the >new< June 24 data (1h 32m) for Deep Sleep. 

On June 27, I called the 1-800 number and was directed to change the Sleep Tracking to Sensitive; however, the UserSleepStages CSV data for Jun 28 still is different from the Sleep JSON data. It looks like the two files are using different algorithms to determine the sleep stages.

Also, as mentioned below, starting on June 24, the overal score in the sleep_score.csv file in the exported data also diverges from the Sleep score in the Fitbit app; prior to that their values are identical.

More info:

The UserSleepStages.csv file data up to June 23 matches the data in the Sleep.json file; however, starting on June 24, you see discrepancies such as:
"dateTime" : "02:46:00.000",
"level" : "deep",
"seconds" : 870 ← This is 14 minutes and 30 seconds, i.e., a Deep Sleep instance occured between 2:46:00 AM and 3:00:30 AM (compare with json below).

"dateTime" : "07:40:30.000",
"level" : "deep",
"seconds" : 510 ← This is 8 minutes and 30 seconds, i.e., Deep Sleep between 7:40:30 AM and 7:49:00 AM.

"dateTime" : "08:31:00.000",
"level" : "deep",
"seconds" : 30

for Sleep.json 
versus 

sleep_stage_typesleep_stage_startsleep_stage_end
DEEP 01:25:00+0000 01:25:30+0000
DEEP            01:26:00+0000 01:55:30+0000
DEEP 02:28:30+0000 03:01:30+0000
DEEP 04:14:00+0000 04:22:00+0000
DEEP 05:44:00+0000 05:48:30+0000

for UserSleepStages.csv

Using Python to show the first set of data (i.e., UserSleepStages csv file = Graph under Fitbit app), we get the graph below. Notice the sleep stages:

Sleep Stages June 24_finer.png

Now, below notice the sleep stages for the second set of data (i.e., the Sleep.json file):

Sleep_June24_JSON.png

Notice, for instance, that time intervals for Deep Sleep are different! It appears that your monthly sleep profile uses the data in the second set rather than one displayed in the Fitbit app (the first set, namely, the first graph above).

Please help!

Best Answer
30 REPLIES 30

Change started on June 24th although I don't see a change of build/binary/firmware around that time. In fact, device was updated with the latest firmware (APP63.20001.214.24) about two months prior to onset of issue.

As someone who has worked on smartphone issues for a different OEM, the level of effort I have invested into this issue (and elucidating things) is such that I should be compensated for it. It's not proper to expect the customer to hand in in a silver plate as much insight as possible.

Best Answer

Incidentally, since June 26, they are providing these additional CSV files (and associated README txt files) under \Fitbit\Health Fitness Data_GoogleData: 
UserSleep<date>.csv
UserSleepScores<date>.csv
UserSleepStages<date>.csv

The UserSleepStages.csv file data up to June 23 matches the data in the Sleep.json file; however, starting on June 24, you see discrepancies such as:
"dateTime" : "02:46:00.000",
"level" : "deep",
"seconds" : 870 <-- This is 14 minutes and 30 seconds, i.e., Deep Sleep was between 2:46:00 AM and 3:00:30 AM (compare with json below).

"dateTime" : "07:40:30.000",
"level" : "deep",
"seconds" : 510 <-- This is 8 minutes and 30 seconds, i.e., Deep Sleep was between 7:40:30 AM and 7:49:00 AM.

"dateTime" : "08:31:00.000",
"level" : "deep",
"seconds" : 30

for Sleep.json 
versus 

sleep_stage_typesleep_stage_startsleep_stage_end
DEEP 01:25:00+0000 01:25:30+0000
DEEP            01:26:00+0000 01:55:30+0000
DEEP 02:28:30+0000 03:01:30+0000
DEEP 04:14:00+0000 04:22:00+0000
DEEP 05:44:00+0000 05:48:30+0000

for UserSleepStages.csv

Best Answer
0 Votes
I called tech support this morning and they said it could not and would not be changed back. Implied that something had changed in my sleep pattern which is bs because I’ve had a Fitbit for 8 years and sleep pattern has been similar. If I were truly only sleeping 3-5 hours per night, I’d be wasted!!! Sorry just had to vent…
Sent from my iPhone
Best Answer

I am not sure they would roll back a whole firmware version, but definitely they can fix the problem via a future firmware version.

Best Answer
0 Votes

 

Using Python to show the first set of data (i.e., UserSleepStages csv file = Graph under Fitbit app), we get the graph below. Notice the sleep stages:

Sleep Stages June 24_finer.png

 

Now, below notice the sleep stages for the second set of data (i.e., the Sleep.json file):

Sleep_June24_JSON.png

 

Notice, for instance, that time intervals for Deep Sleep are different! It appears that your monthly sleep profile uses the data in the second set rather than one displayed in the Fitbit app (the first set, namely, the first graph above).

Best Answer
0 Votes

Regarding sleep last night (which ended this moring), the graph for the first set of data (i.e., UserSleepStages csv file = Graph under Fitbit app) is as follows. Notice the sleep stages.Aug6_Algo1_slim.png

Notice (above) the long AWAKE red segment starting at around 350 minutes: I woke up at that time but stayed in bed without much moving; I stayed still inhaling, holding, exhaling, holding (in 5.5 second cycles or around 11 brpm). Also notice the two instances of DEEP sleep in the first 100 minutes.

Now, below is the graph for the for the second set of data (i.e., the Sleep.json file). As you can see, there are no instances of DEEP sleep in the first 100 minutes. Then, after 350 minutes, there are instances of LIGHT sleep and REM sleep when I am actually awake (it is hard to say if I am fully awake because all I was doing is thinking). On other days, I have had instances of DEEP sleep after I woke up (but I stayed still in bed doing the 11-brpm breathing hoping to fall asleep again). The problem is that these second set of data (Sleep.json file) is used to generate the monthly sleep profile. Notice that the REM sleep instances are different for the two graphs (although sometimes they overlap). Which set of data is right?! Neither? One is right for one sleep stage, the other is right for another sleep stage?

Aug6_Algo2_slim.png

@StephanieFitbit 

Best Answer

Below is the Sleep timeline in the Fitbit app for today August 7. I woke out of vivid dream at around 5:25 am and didn't fall asleep after that. However, this graph shows period of REM sleep and Light sleep. I cannot avow for REM sleep as I was in a sleepy pensive mode similar to the final minutes of one's night before fully getting out bed. I finally got up from bed at 7:50 am.

Screenshot_20250807_091810_edit.jpg

I used the data in the UserSleepStages csv file to produce the same graph (as above) below. Notice that time is counted in minutes since going to bed (at 12:00 am).

Aug7_Algo1_edit.png

Compare that graph, with the one below, obtained from Sleep.json file. This data in the Sleep.json file appears to be the data used to come up with "Your sleep profile" (Bear, Dophin, etc., along with montly averages for Deep Sleep, percentage for REM sleep, restorative sleep, etc.). Notice for the graph below that after I woke up at 5:25 am, there are periods of REM sleep and Deep Sleep (while I stayed in bed). Also, in general, notice that the Deep Sleep periods are different compared with the graphs above (although they sometimes overlap). When they do overlap, they seem to be shorter in the graph below. I have added another updated graph further down Another important difference is that the graph below does not have those with the sharp brief notches of "detected movement" that are presumably used to measure restleness. Incidentally, this "detected movement" is not necessarily observed every time a step is counted. I see it is detected via the Oxymeter (when you move a bit during a minute, the Oxymeter cannot properly provide a reliable measurement for that minute, and Fitbit appears to use this Oxymeter failure as "detected movement").

Aug7_Algo2_edit.png

Aug7_Algo2_corrected.png

@StephanieFitbit 

Best Answer

The changes on or about 24 June 2025 certainly caused a lot of issues in relation to sleep - I also made a post Inaccurate sleep on Charge 6 that outlined my issues.  Although I did read on 9to5Google that "Fitbit update makes sleep tracking more accurate, might raise awake time" which is basically based on @StephanieFitbit community post but possibly not on any reality.  The "might raise awake time" in an understatement if I ever heard one, as mine has gone up about 25%.  

Best Answer

Hello Copland. I get an error when attempting to access Inaccurate sleep on Charge 6 .

Best Answer
0 Votes

So did I, but if you search in the community for Inaccurate sleep on charge 6 a link should come up in the results.   

Best Answer
0 Votes

Hello All and @StephanieFitbit ,

As you understood from my previous posts, there are two different sets (and algorithms) for Sleep Stage data produced by the device.

Below is the Sleep Timeline for this past Sunday, August 8. I got up from bed sometime between 6:00 and 6:15 am and then went back to bed at around 6:55 am after getting some food and spending some time seated on a sofa. In fact, between 6:22 and 6:40 am, I have the timestamps of the social media videos I watched seated on my sofa; starting at 6:42 am, I watched a video on YouTube. However, between 6:31 and 6:43 am, it is marked as REM sleep in the Sleep Timeline. I mean, seated on a sofa, watching videos on social media and YouTube was interpreted as REM sleep:

Screenshot_20250810_191536_crop.jpg

 

 I have the same graph plotted via Python using the UserSleepstage csv file:

Aug10_Algo1.png

Now, compare this with the graph plotted via Python using the Sleep JSON file (this graph is not available in the Fitbit app but its data seems to be used for the monthly profile). Notice that that particular REM instance (correctly) is not there. However, the first two instances of Deep Sleep (seen in the previous graph) are not seen below. Which data set/algorithm is correct? My experience is that the first set (which is shown in the Fitbit app) generally overestimates the total durations for Deep Sleep and for REM (this overestimation phenomenon started on June 24); the second algorithm either underestimates these two stages (or it is just stricter, more accurate?), but its values oftentimes seem to be low when I feel I actually had a good sleep (e.g., maybe the two deep sleep instances above, at the beginning of the night, should also be below). Incidentally, for August 7, the Sleep Timeline showed 53 minutes for Deep Sleep, while the Sleep JSON file, on the contrary, now showed a higher value, at 70 minutes.

Aug11_algo2.png

In my view, the long and the short of it is that you maybe one cannot expect to properly/perfectly calculate the sleep stages indirectly by leveraging the HR/HRV/Mobility rather than measuring them directly using electrodes/sensors connected to your head. However, perhaps you can use the values obtained one night as a benchmark, that is a reference, to determine the relative quality on other nights.

Best Answer