diff --git a/crates/typst-library/src/html/mod.rs b/crates/typst-library/src/html/mod.rs
deleted file mode 100644
index 301c160ba..000000000
--- a/crates/typst-library/src/html/mod.rs
+++ /dev/null
@@ -1,87 +0,0 @@
-//! HTML output.
-
-mod dom;
-mod typed;
-
-pub use self::dom::*;
-
-use ecow::EcoString;
-
-use crate::foundations::{elem, Content, Module, Scope};
-use crate::introspection::Locatable;
-
-/// Create a module with all HTML definitions.
-pub fn module() -> Module {
- let mut html = Scope::deduplicating();
- html.start_category(crate::Category::Html);
- html.define_elem::();
- html.define_elem::();
- self::typed::define(&mut html);
- Module::new("html", html)
-}
-
-/// An HTML element that can contain Typst content.
-///
-/// Typst's HTML export automatically generates the appropriate tags for most
-/// elements. However, sometimes, it is desirable to retain more control. For
-/// example, when using Typst to generate your blog, you could use this function
-/// to wrap each article in an `` tag.
-///
-/// Typst is aware of what is valid HTML. A tag and its attributes must form
-/// syntactically valid HTML. Some tags, like `meta` do not accept content.
-/// Hence, you must not provide a body for them. We may add more checks in the
-/// future, so be sure that you are generating valid HTML when using this
-/// function.
-///
-/// Normally, Typst will generate `html`, `head`, and `body` tags for you. If
-/// you instead create them with this function, Typst will omit its own tags.
-///
-/// ```typ
-/// #html.elem("div", attrs: (style: "background: aqua"))[
-/// A div with _Typst content_ inside!
-/// ]
-/// ```
-#[elem(name = "elem", Locatable)]
-pub struct HtmlElem {
- /// The element's tag.
- #[required]
- pub tag: HtmlTag,
-
- /// The element's HTML attributes.
- pub attrs: HtmlAttrs,
-
- /// The contents of the HTML element.
- ///
- /// The body can be arbitrary Typst content.
- #[positional]
- pub body: Option,
-}
-
-impl HtmlElem {
- /// Add an attribute to the element.
- pub fn with_attr(mut self, attr: HtmlAttr, value: impl Into) -> Self {
- self.attrs
- .as_option_mut()
- .get_or_insert_with(Default::default)
- .push(attr, value);
- self
- }
-}
-
-/// An element that lays out its content as an inline SVG.
-///
-/// Sometimes, converting Typst content to HTML is not desirable. This can be
-/// the case for plots and other content that relies on positioning and styling
-/// to convey its message.
-///
-/// This function allows you to use the Typst layout engine that would also be
-/// used for PDF, SVG, and PNG export to render a part of your document exactly
-/// how it would appear when exported in one of these formats. It embeds the
-/// content as an inline SVG.
-#[elem]
-pub struct FrameElem {
- /// The content that shall be laid out.
- #[positional]
- #[required]
- pub body: Content,
-}