\

Show HN: Turn raw HTML into production-ready images for free

152 points - 12/24/2025

Source
  • me_bx

    12/24/2025

    Congrats on launching, beautiful design.

    I'm not sure of what "production ready" is supposed to mean here, but the demo image is not optimized, `optipng` command decreases its size by 53.21%.

      • threecheese

        12/24/2025

        IME it’s a term that’s been popularized by generative AI solutions, a meme at this point, and doesn’t speak to real production readiness quantifiably (professionally). It’s something that I’ve seen models frequently claim during coding and planning sessions, and it can also be found around Reddit/Twitter/Github vibe coding spaces.

        Seeing this term in marketing materials signals that the target audience is non-professionals (and I don’t mean this derisively, only that we need to apply a different lens).

        • kristopolous

          12/24/2025

          also don't ignore webp and avif ... those can really do wonders.

          • derefr

            12/24/2025

            > I'm not sure of what "production ready" is supposed to mean here

            Given this text at the bottom:

            > The high-performance HTML to PNG engine. Built for developers, agents, and automation. Completely free to use. All generated assets are public and ephemeral.

            ...I assume the implications are that:

            1. this service will scale to meet request load without QoS degradation (i.e. it's probably running on FaaS infra), rather than being a fixed-size slowly-elastic cluster that would get choked out if your downstream service got popular and flooded it with thousands of concurrent requests

            2. you can directly take the URLs the service spits out, and serve them to your downstream service's clients, without worrying much about deliverability, because there's an object store + edge CDN involved.

            In other words, it's not just a single headless-chromium instance running on a box somewhere; you could actually use this thing as an upstream dependency and rely on it.

            > the demo image is not optimized, `optipng` command decreases its size by 53.21%

            Given that the author's imagined use-case is giving non-multimodal LLMs a way to emit visuals (the prompt at the bottom of the page starts "When asked to create visuals, charts, or mockups"), I think their idea is that the resulting rendered images would more-likely-than-not only be requested once, immediately, to display the result to the same user who caused the prompt to be evaluated.

            Where, in that case, the metric of concern isn't "time+bytes cost for each marginal fetch of the resulting image from the CDN"; but rather "end-to-end wall-clock time required to load the HTML in the headless browser, bake the image, push it to the object store, and serve it once to the requesting user."

            OptiPNG would slightly lower that last "serve it once" cost, but massively inflate the "bake the image" time, making it not worth it.

            (I suppose they could add image optimization as something you could turn on — but "image optimization at the edge" is already a commodity product you can get from numerous vendors, e.g. Cloudflare.)

            • spiderfarmer

              12/24/2025

              The bots using these images apply their own compression anyway.

              • alvinunreal

                12/24/2025

                Thank you. Can add png compression too right.

                • the_arun

                  12/24/2025

                  Curious - How did you find the image is not optimized? Is there a tool to find it?

                    • me_bx

                      12/25/2025

                      I ran the command 'optipng' on the generated image, which recompresses the image optimally, keeping quality and decreasing file size.

              • xnx

                12/24/2025

                Sharing in case anyone isn't familiar with this built-in capability:

                google-chrome --headless --screenshot=my_screenshot.png https://www.example.com

                  • Lord_Zero

                    12/24/2025

                    It looks like this app has helpful functions for size, format, and transparency that you can't do with the built in chrome command all at once without probably piping it through inagemagik or something. And even then maybe this site renders the html responsively before rasterizing.

                      • fuzzy2

                        12/25/2025

                        Actually Chrome does everything. Not via command-line switches however, you need to use the DevTools protocol. For example using Playwright. You get PDFs and PNGs of any size and resolution (PPI).

                        And I guess this is exactly what this service does under the hood.

                          • Lord_Zero

                            01/06/2026

                            This is interesting. If I have DevTools open, is there JS I can run to execute the PNG generation?

                    • stronglikedan

                      12/24/2025

                      This is for the dozen or so people that don't have Chrome installed.

                        • nabeards

                          12/24/2025

                          I personally haven't had Chrome installed anywhere in years. I think there are more than a dozen of us!

                            • DemocracyFTW2

                              12/24/2025

                              (checks list) --Mh, yah so, you've got a point there (scribbles, smiles, extends hand) --Welcome dear Sir or Madam, or, as we will call you, Number Thirteen!

                          • thekevan

                            12/24/2025

                            I have this PC for over 2 years and did not realize I didn't have Chrome installed until Google's Antigravity prompted me to do so for its agent.

                            So it's installed now but still un-personalized like it was installed 5 minutes ago. I don't use it except with Antigravity.

                        • remify

                          12/24/2025

                          At work we are using this feature. A lot of time we need to do some kind of pdf reporting. We built them as html pages and print them as pdf.

                          Works fine.

                          • threecheese

                            12/24/2025

                            But is this “production-ready”?

                        • Retr0id

                          12/24/2025

                          What differentiates production-ready images from regular images?

                            • RadiozRadioz

                              12/24/2025

                              They're bedazzled by a little bit of marketing flair.

                              Generally I find production-ready images have more synergy and tend to be web-scale. Often they're built from the ground up for AI & are blazing fast, at scale, and empower your team whilst unlocking new possibilities. As my sibling comment suggests, being cloud-native is a crucial factor too.

                                • ludicrousdispla

                                  12/24/2025

                                  If I need more flair can I embed the image in a new html page and then create another image from that?

                                    • 12/24/2025

                                  • threecheese

                                    12/24/2025

                                    All you had to drop was “web scale”, so much meaning compressed into that :)

                                    • estebarb

                                      12/24/2025

                                      I'm confused. It was sarcasm?

                                        • lima

                                          12/24/2025

                                          Hard to say these days!

                                      • 4ndrewl

                                        12/24/2025

                                        Downvoted for not starting with "Great question!" /s

                                    • apeters

                                      12/24/2025

                                      They are cloud-native, of course.

                                        • KellyCriterion

                                          12/24/2025

                                          Do they support also DeFi or Blockchain then?

                                            • aembleton

                                              12/24/2025

                                              Yes, and AI

                                                • KellyCriterion

                                                  12/24/2025

                                                  ++1 :-))

                                                  good one!!!

                                          • yeasku

                                            12/24/2025

                                            Is this post a joke?

                                        • back2reddit

                                          12/24/2025

                                          It's not an image—it's an image on the edge.

                                          No cruft. No legacy formats.

                                          Just buttery smooth production readiness.

                                            • b0ner_t0ner

                                              12/24/2025

                                              > buttery smooth

                                              But buttery bloated if the images don't run OptiPNG before exporting.

                                              • andrecarini

                                                12/24/2025

                                                Thanks ChatGPT

                                                • xgulfie

                                                  12/24/2025

                                                  But are they Blazing Fast (rocket ship emoji)? Are they vibe ready?

                                                  • fainpul

                                                    12/24/2025

                                                    [flagged]

                                                • _ea1k

                                                  12/24/2025

                                                  It probably means that the text was generated by an AI.

                                                  Claude Code loves to say that everything is production ready, even if it doesn't quite compile or pass automated tests yet.

                                                  • vbezhenar

                                                    12/24/2025

                                                    Production-ready image can be scaled effortlessly both in vertical and horizontal direction.

                                                • oefrha

                                                  12/24/2025

                                                  I’m afraid out of all the waiting strategies available in Puppeteer/Playwright, waiting a fixed period is the worst possible. Maybe consider exposing the proper waiting strategies, load/domcontentloaded/networkidle, maybe even the more fine-grained ones https://playwright.dev/docs/actionability

                                                    • Retr0id

                                                      12/24/2025

                                                      I did some tests and it didn't seem like a fixed wait, when I kept making network requests the render timed out entirely.

                                                        • oefrha

                                                          12/24/2025

                                                          I made the comment based on the delay parameter (“Wait time in ms.”) in the API. I didn’t test so don’t know what the default behavior is.

                                                  • rognjen

                                                    12/24/2025

                                                    It's nice looking for sure but much more complex than using `wkhtmltox` with `pngquant`, `optipng` and/or ImageMagick `convert` locally - esp. since the learning curve seems to be about equivalent.

                                                      • krick

                                                        12/24/2025

                                                        Yeah, I thought that as well. So I was wondering if that's some kind of a joke, or maybe modern html is so fucked up that all usual solutions became obsolete since the last time I did that.

                                                        • mewpmewp2

                                                          12/24/2025

                                                          Won't you need to install extra libraries for these?

                                                      • reassess_blind

                                                        12/24/2025

                                                        I thought this was satire. Usually you want to go from image to HTML, not the other way around. I suppose it does have its uses, though.

                                                          • devmor

                                                            12/24/2025

                                                            It certainly does, that's why it's been a common dev tool for a bit over 20 years. I'm not really sure what the point of OP making it a web app is, though.

                                                            • spiderfarmer

                                                              12/24/2025

                                                              So why comment?

                                                          • thatgerhard

                                                            12/24/2025

                                                            This must be the hardest way to create an image online ever invented.

                                                              • stronglikedan

                                                                12/24/2025

                                                                but it's "high-performance"!

                                                            • randoments

                                                              12/24/2025

                                                              What is the use case for requiring this?

                                                                • mattrighetti

                                                                  12/24/2025

                                                                  Dynamic og:image generator could be a use case.

                                                                  Think of the GitHub thumbnails where the PR number changes constantly and has to be reflected on the image preview

                                                              • albert_e

                                                                12/24/2025

                                                                This looks interesting though niche -- am yet to think of a compelling use case.

                                                                I am sure @simonw has some ideas :) -- he recently blogged about HTML tools which is also one or my favorite use cases for LLMs.

                                                                Maybe similar to SVG generation, this could be a more powerful / flexible way to generate complex images / screen mockups and the like on-the-fly.

                                                                PS: How do the economics work -- how is this free to use?

                                                                PS2: The live HTML editor seems buggy. Cursor is off by one position and messes up editing. (chrome on windows)

                                                                • geooff_

                                                                  12/24/2025

                                                                  Very cool. Is there an option to self-host? This seems like it could be a cool agent skill.

                                                                    • threeducks

                                                                      12/24/2025

                                                                      HTML to PNG:

                                                                          chromium --headless --disable-gpu --screenshot=output.png --window-size=1920,1080 --hide-scrollbars index.html
                                                                      
                                                                      Also works great for HTML to PDF:

                                                                          chromium --headless --disable-gpu --no-pdf-header-footer --run-all-compositor-stages-before-draw --print-to-pdf=output.pdf index.html

                                                                  • jihchi

                                                                    12/24/2025

                                                                    This is cool! One use case is generating a Mermaid diagram as an image. For example, you can use the following HTML[^1]:

                                                                      <!doctype html>
                                                                      <html lang="en">
                                                                        <body>
                                                                          <pre class="mermaid">
                                                                        graph LR
                                                                            A --- B
                                                                            B-->C[fa:fa-ban forbidden]
                                                                            B-->D(fa:fa-spinner);
                                                                          </pre>
                                                                          <script type="module">
                                                                            import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
                                                                          </script>
                                                                        </body>
                                                                      </html>
                                                                    
                                                                    Then html2png.dev will serve you:

                                                                      https://html2png.dev/api/blob/oTVGhhCc6rDZYQFDIE3EGkcKs-KO6J9-_DHs-jO2OJc-d23fb4f2.png
                                                                    
                                                                    [^1]: https://mermaid.js.org/config/usage.html#simple-full-example

                                                                      • JimDabell

                                                                        12/24/2025

                                                                        Why wouldn’t you just use Mermaid to generate the PNG directly?

                                                                          • Garlef

                                                                            12/24/2025

                                                                            One reason I could think of: Fewer dependencies that need integration

                                                                              • JimDabell

                                                                                12/24/2025

                                                                                By introducing a dependency on a third-party service with no SLA? This seems to make the dependency situation worse.

                                                                                  • mcny

                                                                                    12/24/2025

                                                                                    Ah haha. I love this conversation of trying to find a product market fit in public.

                                                                                    What if the input to the JavaScript (mermaid in this case) is not trusted to run on the end client machines but by running untrusted input on a sandbox (this service, or self hosted idk) is somehow acceptable and the output a blob of an image is acceptable to display on the actual client machines.

                                                                                    Takes the planets to align just right and need us to squint just enough but I think we can find something if we look hard enough.

                                                                                    But then mermaid can simply output PNG so you could run it as a worker... Thinking...

                                                                    • tbrownaw

                                                                      12/24/2025

                                                                      Playwright behind a web server?

                                                                        • franze

                                                                          12/24/2025

                                                                          well, you can create an image that reports the internal, this is what i got:

                                                                            - IP: 104.28.157.29
                                                                            - Org: Cloudflare (AS13335)
                                                                            - Location: Narita, Chiba, Japan
                                                                            - Browser: Chrome 126.0.0.0 headless
                                                                            - Automation: Puppeteer/Playwright
                                                                            - navigator.webdriver: true
                                                                            - Platform: Linux x86_64
                                                                            - CPU cores: 4
                                                                            - WebGL: ANGLE + Vulkan 1.3.0 + SwiftShader
                                                                            - GPU: SwiftShader (software rendering)
                                                                            - Screen: 1024x768 virtual
                                                                            - DevicePixelRatio: 2
                                                                            - Color depth: 16 bit
                                                                            - Window: 500x88 outer (headless)
                                                                            - Languages: en-US
                                                                            - Plugins: 5
                                                                            - Frontend: Nuxt.js
                                                                            - Storage: ephemeral blob

                                                                          • 12/24/2025

                                                                        • agentifysh

                                                                          12/24/2025

                                                                          that "Not MCP" is so refreshing it makes me laugh out loud

                                                                          it's literally waht i've been saying all along when I came across mcp "why can't i just give agent a prompt and it will run the rest api calls for me"

                                                                          there's still some MCPs which makes sense but we have it for literally everything when just a prompt will do the job!

                                                                          now on the topic of html2png i do wonder is this like the self-hostable version on github https://github.com/maranemil/HTML2Png where they use canvas? or is this something else ?

                                                                          • Yash16

                                                                            12/24/2025

                                                                            What’s the purpose of creating this?

                                                                            • donohoe

                                                                              12/24/2025

                                                                              “Free”?

                                                                              What’s the catch, or how I can I be sure it will still be around in 3 months?

                                                                              No snark, genuinely curious as I would use this if I could count on it.

                                                                                • leptons

                                                                                  12/24/2025

                                                                                  The only tech you can trust to be around is the tech you control. And even then it's still a bit iffy if you didn't write all the code yourself and you host it on someone else's servers.

                                                                              • dom96

                                                                                12/24/2025

                                                                                Why HTML? Why not SVG?

                                                                                I created an svg to png API to generate open graph images a while back. It works pretty well and can be hosted on Cloudflare Workers for free.

                                                                                https://github.com/dom96/svg-renderer

                                                                                • eastoeast

                                                                                  12/24/2025

                                                                                  This is a great idea. I can’t believe I didn’t think of this, given I generate and screenshot so many “poster images” in html just like this. Haven’t played around a ton but seems intuitive. Nice work!

                                                                                  • WilcoKruijer

                                                                                    12/24/2025

                                                                                    I’ve been doing this manually by having a static development-only route on my website and taking a “node screenshot” using the Chrome developer tools. This is definitely a better way, well done!

                                                                                    • novoreorx

                                                                                      12/25/2025

                                                                                      microlink's cards [1] I discovered years ago has similar functionality, and microlink itself [2] is much more sophisticated on leveraging a headless chrome.

                                                                                      [1]: https://github.com/microlinkhq/cards

                                                                                      [2]: https://microlink.io/

                                                                                      • 12/24/2025

                                                                                        • 12/24/2025

                                                                                          • onion2k

                                                                                            12/24/2025

                                                                                            Alternatively, open devtools, press ctrl+shift+p (or cmd+shift+p on a mac) to open the command palette, search for 'screenshot' and choose 'Capture full size screenshot' to do the same thing on your browser. There's 'area screenshot' for selecting an area, 'screenshot' for the viewport', and even 'node screenshot' for capturing the selected DOM node.

                                                                                              • spiderfarmer

                                                                                                12/24/2025

                                                                                                Yeah and you can also take a picture with your phone. Or draw with pencil and paper.

                                                                                                  • alvinunreal

                                                                                                    12/24/2025

                                                                                                    I just take pictures with my instant polaroid

                                                                                            • RyanShook

                                                                                              12/24/2025

                                                                                              Nice! It definitely makes you wonder when is MCP actually needed vs just giving the LLM API calls to work with.

                                                                                              • xiaohanyu

                                                                                                12/24/2025

                                                                                                Maybe webp is a better target than png?

                                                                                                  • benatkin

                                                                                                    12/24/2025

                                                                                                    No, because their domain is png /s

                                                                                                    I thought webp would be better for this and checked again just to be sure, and yes, it would be better for this. WebP is quite well supported, albeit not as well supported as png, and it can have significantly smaller file sizes for the same lossless image as png.

                                                                                                    • dtagames

                                                                                                      12/24/2025

                                                                                                      It's not. JPG, I could live with but please not webp.

                                                                                                        • Mogzol

                                                                                                          12/24/2025

                                                                                                          Why? I assume the intention is to show these images on a webpage somewhere. WebP is well-supported by browsers and can store lossless images at better compression ratios than PNG, so why not use it? I don't think using a lossy format like JPEG makes much sense. JPEG is a fine format for photos, but for HTML content rendered as an image I assume most people would want a lossless format so you don't get artifacts.

                                                                                                            • dtagames

                                                                                                              12/24/2025

                                                                                                              Because it's impossible to use in other tools. Only browsers get it. But I agree about lossy images for text.

                                                                                                              • kaizenb

                                                                                                                12/24/2025

                                                                                                                Definitely should be WebP.

                                                                                                    • scosman

                                                                                                      12/24/2025

                                                                                                      Looks great for opengraph images.

                                                                                                      • jumploops

                                                                                                        12/24/2025

                                                                                                        Love the simplicity and “Not MCP” callout (:

                                                                                                        Not that it matters, but curious what percentage of this service was “vibe-coded”?

                                                                                                        • _august

                                                                                                          12/25/2025

                                                                                                          this is very handy, thanks!

                                                                                                          • chevman

                                                                                                            12/24/2025

                                                                                                            Any similar AI based services/agents that can take images/creative assets (eg Figma, Sketch, Adobe PS, etc files) and create production-ready emails and landing pages in HTML?