v153 · iamf
The source ladder you would ship
Immersive audio has to degrade. The markup for that is old and boring — a list of <source> elements in preference order — and it works here without a single line of feature detection, because the browser does the choosing. This page shows which rung it would land on, decided by its own answers.
Which rung this browser takes
The rungs below the chosen one are marked unreached rather than unsupported: a media element stops at the first source it can play, so it never asks about the rest. That is worth remembering when reading a support matrix — the browser's answer for a later rung is unknown to the element, even though this page asked anyway.
The markup
No script. The type attribute is what lets the element skip a source without downloading a byte of it, which is the whole reason to write it out rather than relying on the file extension.
A real element, asked the same question
The ladder above is this page consulting the support APIs. Below is a real <audio> element built with the same sources, and the question it answers is not which one plays — no files exist behind those URLs — but which ones the browser fetched. A source rejected on its type is never requested at all, and resource timing records exactly that.
Measured rather than assumed, and the measurement corrected this page: currentSrc ends up on the last source the element tried, because every URL here 404s and the element keeps falling through. Which sources were fetched is the honest signal, and it comes from the resource timing entries rather than from the element's own account of itself.