Blog

Webwrap: turn any website into a native Mac app

A small macOS CLI that wraps any website into a standalone .app — a lightweight, no-Electron, no-subscription alternative to Unite and WebCatalog.

The problem

Some web apps deserve to be apps. Outlook, ChatGPT, a calendar — things you keep coming back to, that get lost among forty browser tabs. The usual fixes are either heavy (an Electron build per site, each shipping its own copy of Chromium) or paywalled (tools like Unite and WebCatalog want a subscription for what is, fundamentally, a window pointed at a URL).

I wanted something smaller. Webwrap is a macOS command-line tool that wraps any website into a real, standalone .app.

How it works

One command builds an app:

webwrap create --url https://outlook.office.com --name "Outlook"

That writes Outlook.app into /Applications. It has its own icon (pulled automatically from the site), its own Dock entry, its own window that remembers its size and position, and a proper Mac menu bar. Under the hood it’s a WKWebView — the same engine Safari uses — so there’s no bundled browser and the memory footprint is tiny.

Prefer to be walked through it? Run webwrap create with no flags and it asks you step by step, with sensible defaults filled in.

The nice touches

Because it’s built on the system WebKit, it gets to feel native:

  • Separate logins per app — wrap your work and personal Microsoft 365 accounts as two apps and they keep independent sessions.
  • Copy current URL with ⌘⇧C, since there’s no address bar.
  • A clean, branded offline page with a “Try Again” button instead of the raw WebKit error.
  • Code signing and notarization support, so you can build an app on one Mac and run it on another without Gatekeeper complaints.

There’s also webwrap list to see everything you’ve wrapped, and webwrap update to refresh an app without losing its login.

Small by design

Webwrap is a single Swift binary — around 3,000 lines, with one dependency (Apple’s argument parser). Everything else, from icon resolution to bundle scaffolding to signing, is built in. No Electron, no runtime, no subscription.

Install it with Homebrew:

brew install yepzdk/tools/webwrap

Take it for a spin

The source, releases, and docs are on GitHub: github.com/yepzdk/webwrap. If your Dock is really just a browser in disguise, this might be for you.