Go to Settings > Storage and see what the phone says is using the space.
The high level storage usage is accurate, but the per-app reporting is often inaccurate. For example, when I had Google Music store streamed music on external SD, it would still count all the app's storage usage as internal. This is somewhat easy to see, at least.
In other cases, notably WeChat, the counters would not report the hundreds of MB of space that the app data had accumulated. So on the device itself, it can be somewhat difficult to figure out where all the storage has gone.
Also in my experience, Android 6.0 would complain that it was low on storage with about 0.5 GB free. It seems like it keeps a storage buffer so that apps don't start failing when they cannot write data. All in all, this was a crappy experience because I have a minimal number of apps and still was unable to update system or 3rd party apps.
Regrettably I have an 8 GB phone that I'm not ready to replace, so I finally switched over to adoptable storage despite reading many warnings against. So far it's working fine, despite a few issues:
- Supposedly Android always warns that the SD card is slow. In reality the Samsung card I have is decent and performs fine in real-world use.
- Evernote is not happy and although the app does run, it constantly experiences a low-level exception.
- When copying my photo library back into /DCIM/Camera, MTP does not preserve timestamps. This is okay for photos because they have timestamps in EXIF data. Not okay for video files, which do not.