diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
index 5ccf71895a..59f4da8db2 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
@@ -191,6 +191,27 @@ WebIDL::ExceptionOr HTMLMediaElement::can_play_type
return Bindings::CanPlayTypeResult::Maybe;
}
+ if (mime_type.has_value() && mime_type->type() == "audio"sv) {
+ // "Maybe" because we support mp3, but "mpeg" can also refer to MP1 and MP2.
+ if (mime_type->subtype() == "mpeg"sv)
+ return Bindings::CanPlayTypeResult::Maybe;
+ if (mime_type->subtype() == "mp3"sv)
+ return Bindings::CanPlayTypeResult::Probably;
+ if (mime_type->subtype() == "wav"sv)
+ return Bindings::CanPlayTypeResult::Probably;
+ if (mime_type->subtype() == "flac"sv)
+ return Bindings::CanPlayTypeResult::Probably;
+ // We don't currently support `ogg`. We'll also have to check parameters, e.g. from Bandcamp:
+ // audio/ogg; codecs="vorbis"
+ // audio/ogg; codecs="opus"
+ if (mime_type->subtype() == "ogg"sv)
+ return Bindings::CanPlayTypeResult::Empty;
+ // Quite OK Audio
+ if (mime_type->subtype() == "qoa"sv)
+ return Bindings::CanPlayTypeResult::Probably;
+ return Bindings::CanPlayTypeResult::Maybe;
+ }
+
return Bindings::CanPlayTypeResult::Empty;
}