Repository: yt-dlp
Issue: [youtube] `--mark-watched` seems to be partially marking some videos as watched
Labels: account-needed,site-bug,triage,site:youtube

### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

- [X] I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field

### Checklist

- [X] I'm reporting that yt-dlp is broken on a **supported** site
- [X] I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required

### Region

United States

### Provide a description that is worded well enough to be understood

Recently yt-dlp `--mark-watched` hasn't been working consistently on my token, it only happens on some videos, while the others get fully marked as watched. Repeating the command multiple times results in the same video progress level.
![](https://github.com/user-attachments/assets/536115ab-eae5-421b-a58a-600071b1aa7f)


### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [X] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
[debug] Command-line config: ['https://www.youtube.com/watch?v=Aof3f58xw9E', '-Uv']
[debug] Portable config "~\scoop\apps\yt-dlp-master\current\yt-dlp.conf": ['--cookies-from-browser', 'firefox:%APPDATA%/librewolf/Profiles/xxxxxxx.dev-edition-default', '--mark-watched', '--simulate']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version master@2024.11.12.233022 from yt-dlp/yt-dlp-master-builds [f2a4983df] (win_exe)
[debug] Python 3.10.11 (CPython AMD64 64bit) - Windows-10-10.0.19044-SP0 (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg N-117753-g9ec042c1aa-20241111 (setts), ffprobe N-117753-g9ec042c1aa-20241111
[debug] Optional libraries: Cryptodome-3.21.0, brotli-1.1.0, certifi-2024.08.30, curl_cffi-0.5.10, mutagen-1.47.0, requests-2.32.3, sqlite3-3.40.1, urllib3-2.2.3, websockets-13.1
[debug] Proxy map: {}
Extracting cookies from firefox
[debug] Extracting cookies from: "~\AppData\Roaming\librewolf\Profiles\xxxxxxx.dev-edition-default\cookies.sqlite"
Extracted 999 cookies from firefox
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Loaded 1838 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-master-builds/releases/latest
Latest version: master@2024.11.12.233022 from yt-dlp/yt-dlp-master-builds
yt-dlp is up to date (master@2024.11.12.233022 from yt-dlp/yt-dlp-master-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=Aof3f58xw9E
[youtube] Aof3f58xw9E: Downloading webpage
[debug] [youtube] Extracted SAPISID cookie
[youtube] Aof3f58xw9E: Downloading ios player API JSON
[youtube] Aof3f58xw9E: Downloading mweb player API JSON
[debug] Loading youtube-nsig.28f14d97 from cache
[debug] [youtube] Decrypted nsig gqLWROCUczLyTOS3 => l3yGrdwFXf8puw
[debug] Loading youtube-nsig.28f14d97 from cache
[debug] [youtube] Decrypted nsig gUeoonMlfDxUFgpx => p-XWlgArpR2A-g
[youtube] Aof3f58xw9E: Downloading m3u8 information
[youtube] Aof3f58xw9E: Marking watched
[youtube] Aof3f58xw9E: Marking fully watched
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec, channels, acodec, lang, proto, size, br, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] Aof3f58xw9E: Downloading 1 format(s): 401+251
```