Solution: Ask Siri to read your unread messages. Siri will read the ones you can't find by scrolling through your conversation list in the app and you can watch the badge count drop with each message read to you.
Thanks to this discussion on Apple's Community.
For months, and across multiple iOS versions, my Messages app was showing 4 unread messages every time I went through and made sure all visibly unread messages were read. Even selecting to filter on unread message only, the app would show that I had no unread messages, but the badge remained.
I tried:
- Scrolling through my entire conversation history until I couldn't scroll anymore.
- Disable the app, power off the phone, reboot, enable the app
- Disabling and re-enabling notifications
I didn't try a System Reset.
I can't express enough thanks to "Jorph" on the Apple Community for telling me the simple fix to ask Siri to "read my unread messages"! It was interesting to hear which ones were still counted as unread, and I still don't understand why they were counted in some way as unread, but not showing as such in the app.
If you find yourself in the same boat, try out that workaround and see if it works for you! If you discovered the reason for the discrepancy, please comment and let us all know what happened. I hope this helps someone else.