diff --git a/Modules/Parser/Sources/HTMLParser/HTMLMetadataParser.swift b/Modules/Parser/Sources/HTMLParser/HTMLMetadataParser.swift
new file mode 100644
index 000000000..4ffa7d732
--- /dev/null
+++ b/Modules/Parser/Sources/HTMLParser/HTMLMetadataParser.swift
@@ -0,0 +1,41 @@
+//
+// HTMLMetadataParser.swift
+//
+//
+// Created by Brent Simmons on 9/22/24.
+//
+
+import Foundation
+import SAX
+
+public final class HTMLMetadataParser {
+
+ private let parserData: ParserData
+ private var tags = [HTMLTag]()
+ private var htmlMetadata: HTMLMetadata? = nil
+
+ public static func metadata(with parserData: ParserData) -> HTMLMetadata {
+
+ let parser = HTMLMetadataParser(parserData)
+ parser.parse()
+ return parser.htmlMetadata
+ }
+
+ init(_ parserData: ParserData) {
+
+ self.parserData = parserData
+ }
+}
+
+private extension HTMLMetadataParser {
+
+ func parse() {
+
+ self.tags = [HTMLTag]()
+
+ let htmlParser = SAXHTMLParser(delegate: self, data: parserData.data)
+ htmlParser.parse()
+
+ self.htmlMetadata = HTMLMetadata(parserData.url, tags)
+ }
+}