diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
index b567b151c9..c483bab47c 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
@@ -208,6 +208,13 @@ void HTMLMediaElement::set_current_time(double current_time)
}
}
+// https://html.spec.whatwg.org/multipage/media.html#dom-media-fastseek
+void HTMLMediaElement::fast_seek(double time)
+{
+ // The fastSeek(time) method must seek to the time given by time, with the approximate-for-speed flag set.
+ seek_element(time, MediaSeekMode::ApproximateForSpeed);
+}
+
// https://html.spec.whatwg.org/multipage/media.html#playing-the-media-resource:current-playback-position-13
void HTMLMediaElement::set_current_playback_position(double playback_position)
{
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h
index 66017a8f9f..4c262f6c68 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h
+++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h
@@ -66,6 +66,7 @@ public:
double current_time() const;
void set_current_time(double);
+ void fast_seek(double);
double current_playback_position() const { return m_current_playback_position; }
void set_current_playback_position(double);
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl
index d2cf8e8350..9c65ac5a7e 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl
+++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl
@@ -40,6 +40,7 @@ interface HTMLMediaElement : HTMLElement {
// playback state
attribute double currentTime;
+ undefined fastSeek(double time);
readonly attribute unrestricted double duration;
readonly attribute boolean paused;
readonly attribute boolean ended;