HTML is a native image format, hear me out

(hmml.eddocu.com)

27 points | by yeargun 3 hours ago ago

52 comments

  • apt-apt-apt-apt 2 hours ago

    There's so much text but nothing that clearly says what it is.

    Is it HTML and its contents (e.g. images) in a binary format?

    • yeargun 2 hours ago

      yes exactly.

      you can go devtools at https://hmml.eddocu.com

      it downloads single binary that contains media assets (svg, image, video, ..) and html/css blueprint, even js (security concerns!)

    • roywiggins 2 hours ago

      Common side-effect of letting Claude write your landing page.

      Apparently it's mostly this:

          // ENCODE — pack(html) → one .hmml (a Uint8Array you store or send)
          //   · lifts every data: image out of the HTML into raw bytes (no base64)
          //   · gzips the HTML/CSS/JS and frames it all as one binary blob
  • ricardobeat an hour ago

    A vibe-coded, binary mashup of SMIL and web components. Interesting.

    If the goal is self-contained documents, is there anything here that can’t be achieved with SVG alone, using SMIL [1] and embedded HTML via <foreignObject>? Or an existing engine like Rive?

    [1] https://developer.mozilla.org/en-US/docs/Web/SVG/Guides/SVG_...

    • yeargun an hour ago

      happy that it interested you

  • etiquette an hour ago

    > A real food-delivery page - markup, images & an SVG animation in one .hmml, 30% smaller than the same page as base64

    Why the comparison with Base64 when Base64 itself has approximately 33% size overhead?

    • yeargun an hour ago

      A: I want to serve html with images all in single pack

      You have 2 options.

      - Embed images into html (base64, size overhead)

      - embed html/css/js into media binaries

      .hmml is the packing strategy for option two. 2kb js for encode/decode. And extra rantings around what a 'digital image' is

      • sltkr 27 minutes ago

        If you compress the HTML, which you want to do anyway for HTML/CSS if you care about file sizes, then most of the base64 overhead goes away:

            $ head -c 1000000 /dev/urandom | base64 -w0 | gzip | wc -c
            1009042
        
            $ head -c 1000000 /dev/urandom | base64 -w0 | zstd | wc -c
            1000300
        
        So gzipped base64 can add less than 1% overhead. Of course a binary format can be even more efficient (also when decoding, I imagine) but the question is if the difference is big enough to introduce an entirely new format when base64 data URIs are already widely supported.

        Then the other question is why this proposed packed format is better than the dozen already existing formats like Web Archive, CHM, MAFF, MHTML, etc.

  • AbuAssar an hour ago

    this page failed to convey what exactly is the main pitch, is it a new image format? using html as image? rendering with canvas?

    I got lost

  • blixt an hour ago

    If this shows itself to be highly useful as a concept, then I would perhaps avoid reinventing the wheel on the file format side of things, and just standardize what we already have:

    - Come up with a file extension (.hmml)

    - Decide on an entrypoint filename and format (index.html)

    - Use an existing standard for combining resources into one file (tar + zstd)

    Now you have something that is usable only using pre-existing tools.

    • yeargun an hour ago

      Yeah I agree

      in fact this is both a packing strategy or a POV of thinking. Next browser versions could support it.

      <img src="html-underdog.hmml" />

      or

      when tomorrow's genai models mix declarative images with rasters, then they would like something like this

      or

      OS -> html-underdog.html double clicks -> browser opens it.

      • assimpleaspossi an hour ago

        Note: the <img> tag does not use and does not need a closing slash and never has in any HTML specification.

        • yeargun an hour ago

          Same HTML specification does not support .hmml

          Until they support .hmml imma close my image tags. But thanks for highlighting

          (its a joke)

          • assimpleaspossi an hour ago

            Closing an <img> tag with a slash has no meaning. It does nothing. And browsers ignore it. So it's pointless cause <img> is self-closing by itself.

            • malicka an hour ago

              Unless you’re the type who wants their HTML to be valid XHTML! :^)

  • wewewedxfgdf an hour ago

    This is the sort of weird thing I would come up with - a solution without a problem perhaps, but a magnificent testament to some technical itch that had to be scratched.

    • yeargun an hour ago

      I mean,

      https://eddocu.com It's the worlds most performant pdf / pptx editor on web.

      I have a page that I list documents, each with their thumbnails. I serve medium quality rasters(.webp) for them.

      I could rather do it via hmml to save up network space for instance. I convert pdf/pptx/docx into completely editable with html at Eddocu.

      So I already have everything in html, css, svg, image.

      For the ones that can get represented with .hmml i could serve hmml link maybe.

      Its an overengineering maybe.

      But thats how I made https://eddocu.com world's most performant pdf/pptx editor. (alpha release, has bugs.)

  • chrismorgan an hour ago

    I’ll engage with the editorialised title (which will probably be changed soon), “HTML is a native image format, hear me out”:

      data:image/svg+xml,
      <svg xmlns="http://www.w3.org/2000/svg">
        <foreignObject width="100%25" height="100%25">
          <div xmlns="http://www.w3.org/1999/xhtml">
            Behold!
          </div>
        </foreignObject>
      </svg>
  • unleaded an hour ago
  • warpech an hour ago

    What wrong with inlining base64 in regular .html if you want it all in one file?

    Plus zipping that one file is you insist on a smaller file size

    • yeargun an hour ago

      Same zip also helps serving .hmml from cdns smaller (gzip/brotli)

      Even then base64 is worse in size though

      Also I wouldn't prefer serving a zip and load and render it within my web app (extra overheads).

  • G_o_D 42 minutes ago

    Isnt MHTML : THE HTML+CSS WITH BINARY Images embedded.A perfect Snapshot of site.

    All we need is browsers to render Served MHTML

    And JS Support in MHTML

  • c048 2 hours ago

    You can also paint by squashing flies against a wall. Doesn't mean it's a good, or efficient, idea.

  • an hour ago
    [deleted]
  • mpeg an hour ago

    I don't understand the advantage of this vs an html file with embedded images, except the latter would work with no runtime.

    • yeargun an hour ago

      If you plan to serve your image with a self contained, single pack.

      Then with html + rasterized images (.jpeg/.png, ..) you would have to pay extra size overhead caused by base64.

      With hmml, you dont

      • mpeg an hour ago

        I get that, but the drawbacks outweigh the benefits imho and the b64 overhead is not solved, just deferred.

        Say I want to distribute an hmml file as a single file, I'd have to create an html with the embedded js runtime, and then embed the hmml file... as b64, therefore negating any benefits.

  • TazeTSchnitzel 2 hours ago

    I would rather see native browser support for the familiar MHTML (https://bugzilla.mozilla.org/show_bug.cgi?id=40873) than creating a brand new format that does the same thing.

    The AI slop homepage is really offputting too.

    • xnx 2 hours ago

      Chrome started supporting this at some point (though I wish they would've added in motw support). Lack of support for mhtml is one of the things keeping me away from Firefox on mobile.

    • Tade0 an hour ago

      > Opened 26 years ago Updated 27 days ago

      That's a particularly long discussion.

    • bjt12345 2 hours ago

      This cute homepage provides me with nostalgic memories of Geocities spinning skull GIFs.

    • yeargun 2 hours ago

      Completely agree with that. But look whats the situation with MHTML.

      """ Open Bug 40873 Opened 26 years ago Updated 27 days ago """

      So if you need some such feature in your web app, and if you are okay with 2kb encode/decode js. Its all good.

      At least the posts are pretty much not AI slop I guess.. But I'll take your feedback. Thanks!

  • nobrains an hour ago

    That "view page source" took some loong time to load.

  • t1234s 43 minutes ago

    Looks like reinventing macromedia flash

    • 40 minutes ago
      [deleted]
  • Semaphor 39 minutes ago

    Opened. Had some typing animation make the page jump around because the text would switch between one and two lines. Closed the slop.

    The frequency of these things certainly rose with AI.

  • webdevnotlame 2 hours ago

    that sounds interesting but can't find clear use cases

    • yeargun 2 hours ago

      In fact it has lots of use cases,

      1- For design tools, they can combine multipe images, texts, svgs and serve them with single pack/abstraction

      2- When you need editable/composable images.

      3- Future genai models for generating visuals/html/js/svg would have more feature rich abstraction/toolset

      4- When you want to prevent base64 size overhead

  • beardyw 2 hours ago

    Isn't this making HTML in some ways more like a PDF? Or am I missing the point?

    • yeargun 2 hours ago

      Nope

      PDF is an irreversible format in terms of editability. (btw I build the world's most performant pdf/pptx editor at https://eddocu.com , I would enjoy if you have any feedback)

      Regardless, I cant find the relation in between.

      It's like an abstraction that might help future genai models, or a packing strategy, or ..

  • TZubiri an hour ago

    Not the first time I saw this Hero header with text that's being written in real time, which is very cute but actually causes the layout to change every second.

    I guess it happens when people vibecode and the llm generates code, and it cannot verify that the interface actually works well. Even with agents that use drivers either directly or through playwright/selenium, they might only see a single screenshot, so no video.

    Anyways, immediately stopped reading, as the new adage goes, why should I read something you weren't bothered to write?

    • yeargun 41 minutes ago

      sorry for the bad experience

      Some parts are llm written, yes but first parts of the webpage, I thought conveyed the general idea.

      I know I lost some trust you have to me by partially vibecoded landing page here is a reddit post that I 've written (im human)

      https://www.reddit.com/r/Design/s/mgDApes3hY

  • an hour ago
    [deleted]
  • yeargun 3 hours ago

    ## What's an image

    We consider rasters as image (.jpeg, .webp, ..)

    We also invented svgs, its a vector. SVG is a declarative language, has its own format and has own renderer

    HTML, CSS is no different. `<div style="background:black">html is underdog</div>`

    Having this perspective on our mind, even considering any imperative code as a native image makes complete sense. `canvas.drawCircle();`

    So, .html/.hmml/.js is as image as .webp

    ====

    ## How can we/future's genAI models could leverage the world's most popular and feature rich image format (HTML, CSS, JS, SVG, IMAGE altogether). And how can we leverage it to build editable/composable images?

    This so to 'popular' image format we call .html has a caveat. It's UTF-8, and whenever you need to embed any resource, you either need to base64 encode it(it has extra size overhead) or link the resource as a seperate thing. So.. as you decide to serve single pack of data for a single image, a binary packing strategy makes sense.(Image can be anything as we discussed earlier)

    To match these concerns, we created/proposing you a new format, HMML (HyperMedia Markup Language).

    HMML (HyperMedia Markup Language) is a declarative+imperative markup+ language for images/videos/media.. *HMML is HTML, CSS, JS, SVG, image, but not UTF-8.*

    https://hmml.eddocu.com

    and we have a npm library that does encode/decode of this binary format, and mounts the so to image into dom. (2kb js for encode/decode each. For comparison React is 90kb js. )

    `npm i @eddocu/hmml`

    # image-leftdog-rightcat.html

    ``` <div style="display:flex"> <img src="base64" alt="i am dog image" /> <img src="base64" alt="i am cat image" /> </div> ```

    Apart from doing this, hmml does embed the html, css, js blueprint into media binaries

    # image-leftdog-rightcat.hmml

    `binary stuff`

    People already do similar things. But this format or POV of thinking accepts html/css/js as a native image format. Excited to see if future operating systems/browsers also accepts this format. <hmml /> or <img src="maybe.hmml" />

    ===

    ``` <Technical-Appendix> The word "green apple" is an image, that has no format and no renderer.

    `const vectorMultiDimensional_768 = get_word_embeddings("green apple")` Now the word green apple has a format, its: "embedded by Embedding Model X" If you had a renderer as such Embedding_Model_X.render()

    Now you could call entire english sentences/paragraphs are images. </Technical-Appendix> ```

    bs or not. what you think?

  • plating1 2 hours ago

    wait this is actually kinda brilliant in a weird way

    like when you think about it we're already doing this with svg and nobody bats an eye. svg is literally xml markup that renders as an image and everyone just accepts it as normal

    also the composability angle is interesting. being able to edit an "image" by just opening it in text editor instead of photoshop has some appeal

  • ultracakebakery an hour ago

    [flagged]