Wynglet

Wynglet

The dynamic companion for your static site: a self-hosted toolkit that brings dynamic capabilities to static websites without depending on paid third-party services.

Static site generators are great at producing fast, secure, cheap-to-host websites. But they have one inherent limitation: they’re static. Features like social preview images, QR codes, and rating widgets traditionally each require a separate paid SaaS subscription: each with its own account, pricing model, and data silo.

Wynglet bundles all of these into a single containerized open-source binary:

One instance serves many sites. A single Wynglet deployment can power all your static sites simultaneously. Every tool is gated by a domain allowlist: only explicitly authorized domains can embed or use your instance, preventing unauthorized use.

Self-hosted. Your data stays on your own infrastructure. You can host Wynglet on a cheap VPS from any provider (here’s $200 in credits with a DigitalOcean referral code). No vendor lock-in, no per-request billing, no privacy trade-offs.

Open source. Apache 2.0 licensed, free forever.

Wynglet is a quick way to auto-generate OpenGraph link preview images in bulk for all your sites, without the use of a separate template editor or API integration at no cost. The source of truth for the image data & design remains within your primary website, so you can use tools you are already familiar with & assets that

To prevent abuse and to conserve resources, Wynglet blocks all domains by default, until you explicitly authorize each domain you care about.

Use the Default Template

Just one step: Paste the Wynglet <meta> tag into the original page, and you’re done!

<meta property="og:image" content="https://wynglet.your-server.com/link-previews/v1?url=your-site.com/some/page">

Use your Own Templates

  1. Create a new hidden element inside your existing Web page, using whatever framework or template engine you use today. E.g.

    <div id="link-preview" style="display: none; width: 1200px;">
      <h1>Wynglet</h1>
      <p>Self-hosted OpenGraph / social link preview image generation tool. Fully customizable, yet works out of the box with zero configuration.</p>
    </div>
    
  2. Use Wynglet to craft a URL, and paste the <meta> tag into the original page.

    <meta property="og:image" content="https://wynglet.your-server.com/link-previews/v1?url=your-site.com/some/page">
    

    If you can’t use the default selector (#link-preview) for any reason, you can provide an alternate one using the &sel= parameter.

  3. There is no step 3.

How it’s rendered

Example

Test your Wynglet installation by posting your original page URL to any social platform.

How it works

Wynglet fetches the URL you provide to it, using a Chrome Headless instance, runs JavaScript to un-hide the hidden element, takes a screenshot of it, and serves it (while also caching & compressing it).

Wynglet works well with static sites (using any static site generator) as well as dynamically-generated sites (using any CMS or platform).

Can I use…

Why limit yourself to the customization possible in a random WYSIWYG editor, when you have the entire Web platform available to you!

Anything you can design for the Web, you can use to create a link preview image. The infinite is possible at Zombocom. The unattainable is unknown at Zombocom.

QR Codes

Wynglet generates QR Codes for your authorized URLs that you can embed on your site wherever appropriate.

Use this URL format:

<img src="https://wynglet.your-server.com/qrcode/v1?url=your-site.com/some/page">

Rating Widget

Wynglet includes an embeddable rating widget that your visitors can use to rate any page on your site. Ratings are not public, but are visible on your Wynglet Dashboard. It provides a lightweight mechanism to monitor the quality of content, e.g. for Help Articles. It supports two UI styles:

Embed the widget on your page using an <iframe>:

<iframe
  src="https://wynglet.your-server.com/rating/v1?ui=thumbs&url=https://your-site.com/some/page"
  style="border:none; width:200px; height:50px;">
</iframe>

Ratings are validated against the authorized domains allowlist. To prevent abuse, a single IP is limited to submitting one rating for a URL per 24 hours, and 10 ratings across all URLs per hour).

Use the Dashboard’s Ratings section to view collected ratings and generate the correct <iframe> embed code for any authorized URL.

CLI Utilities

Wynglet ships with a couple of built-in command-line helpers:

Install & Deploy

Sample compose.yml (for Docker and Podman)

services:
  wynglet:
    container_name: wynglet
    image: ghcr.io/chimbori/wynglet:latest
    volumes:
      - $PWD/wynglet-data:/data
    restart: unless-stopped
    depends_on:
      - wynglet-db

  wynglet-db:
    container_name: wynglet-db
    image: postgres:18-alpine
    environment:
      POSTGRES_DB: wynglet
      POSTGRES_USER: chimbori
      POSTGRES_PASSWORD: chimbori
    volumes:
      - $PWD/wynglet-db-data:/var/lib/postgresql
    restart: unless-stopped

volumes:
  wynglet-data:
  wynglet-db-data:

If you prefer to install using the Go binary on raw metal, use go install

go install wynglet.chimbori.dev@latest

Sample wynglet.yml

Wynglet requires basic configuration to be provided via a config file.

Sample Caddyfile

wynglet.your-server.com {
  reverse_proxy wynglet:9999
  encode zstd gzip
}

Dashboard UI

You can manage Wynglet from the Dashboard UI at https://wynglet.your-server.com/dashboard. The Dashboard is available as an installable PWA (Progressive Web Application) that can be “installed” locally using any modern browser.

The Dashboard includes the following sections:

License

This project is licensed under the Apache License 2.0.

Comparison with Alternatives

There are a lot of paid SaaS tools in this space.

They all work roughly the same way: you design a template using their custom tools, then provide them your data (title, description, etc.), and pay them per-request (or per-render) to create & serve those images for you.

This model works great if you do not have access to the source of the page, or have no influence over the developers who build your website.

But now,

Wynglet is none of those things. All you need is the ability to write some HTML/CSS (no JavaScript necessary!) to design your preview image. And it’s free in perpetuity.