Blog

Turn a website into a desktop app: which approach fits?

Build an app · · 6 min read

To turn a website into a desktop app on Mac, Windows or Linux, try the browser's built-in web app feature first, because it takes a minute and costs nothing. Move to the Pake desktop app when you want settings you can edit, reuse and export, and to Pake CLI when the build has to be repeatable, run on Linux, or package local files.

What every approach has in common

A website turned into a desktop app is still the website. The app is a native window that loads the same address and draws it with a web engine the operating system already provides: Safari's WebKit (WKWebView) on macOS, Microsoft Edge WebView2 on Windows, and WebKitGTK on Linux. Tauri, the framework under Pake, uses exactly these engines, which is why a Pake app is small and why a page can look slightly different between platforms (Tauri webview versions).

Three consequences follow from that. The app needs a connection unless the site itself works offline. The site's features, limits and login rules come along unchanged. And the engine is updated by the system, not by the app: through macOS updates on a Mac, and through the self-updating WebView2 Runtime on Windows (Microsoft's distribution notes).

What differs between the approaches is who owns the window, where the settings live, and how much you can change afterwards.

Option 1: the browser you already have

Safari on macOS Sonoma 14 or later has File › Add to Dock, and Apple states that the resulting web app shares no history, cookies, website data or settings with Safari (Apple's guide). Edge can install a site from Settings and more › More tools › Apps › Install this site as an app, and Chrome has Install page as app... (Microsoft, Google). The step-by-step versions are in the Mac guide and the Windows guide.

This is the right answer more often than people expect. You get a separate window, a Dock or taskbar icon, and nothing new to install. What you give up is control. You cannot set the starting window size, hide the title bar, add your own CSS, or move the setup to another computer as a file. An app installed from Edge also stays tied to Edge: Microsoft says it uses Edge's engine, settings and extensions, and stops working if Edge is removed (Microsoft).

Option 2: the Pake desktop app

The Pake desktop app for Mac and Windows turns the same task into a form. You paste an address or pick a site from the gallery, check the name and icon, choose a window size and click Create App. No Node.js, Rust, Xcode or Visual Studio is involved (install requirements). Afterwards the app sits in My Apps, where Edit and Save Changes reinstall it in place with the same sign-ins (Manage your apps).

The options that matter most are the ones a browser app does not offer: window size, Hide title bar on Mac, Always on top, Hide on close, Incognito, and your own CSS and JavaScript under Advanced. Each is described in Create an app, so this guide does not repeat the table. Two follow-on tasks are covered separately: running two accounts of one site with Add Another Account (multiple accounts) and recreating your setup elsewhere with a .pake file (moving your apps).

Each app you create counts against a free allowance or a license, while opening, updating and removing apps does not, and the apps keep running without Pake. The license page has the rules.

Option 3: Pake CLI

Pake CLI is free and open source, runs on macOS, Windows and Linux, and needs Node.js 20.9 or later, Rust 1.85 or later and each platform's build tools (getting started). One command does the job:

pnpm install -g pake-cli
pake https://excalidraw.com --name Excalidraw

The installer lands in the current folder: a .dmg on macOS, an .msi on Windows, and .deb plus AppImage on Debian and Ubuntu. The first build downloads and compiles dependencies, so expect several minutes. The CLI is also the only route for local HTML or a built static site, and for scripted builds through a --config file or --json output. If you do not want a local toolchain at all, a GitHub Actions build compiles it on a hosted runner.

Choosing quickly

Your situationStart here
One site, default window is fineSafari Add to Dock, or install from Edge or Chrome
Several sites, and you want to adjust size, icon or behaviorPake desktop app
A second account on the same sitePake desktop app, Add Another Account
LinuxPake CLI
A static project or a repeatable, scripted buildPake CLI
A Windows or Mac build without installing a toolchainGitHub Actions

How to tell whether it worked

Test the page you use, not the marketing homepage. Create the app, sign in, click a link that leaves the site, download a file if the site offers downloads, then quit and reopen it. Apps built with Pake CLI reopen on the last page you were on by default, with the packaged address kept as the home page (CLI reference).

What goes wrong

Sign-in is the most common failure. Google and some other providers block sign-in inside embedded web views, and no wrapper changes that; the sign-in guide explains what still works. If a site shows "browser not supported", the user agent guide covers the setting. A site that depends on a browser extension will not have it in a wrapper. And a site with a cramped desktop layout stays cramped, because a wrapper does not redesign the page.

When none of this matters, prefer the simpler tool. A browser web app that does the job needs no other software.

FAQ

Does a desktop app work offline?

Only if the website does. The app loads the site over the network each time, so a site without offline support shows an error when disconnected. Local files packaged with the CLI do not need the network for the page itself, but any remote scripts or data they fetch still do.

Is a wrapped app the same as the official desktop app?

No. A wrapper shows the web version. If a vendor ships a native app, it may have notifications, offline storage or system integration that the website lacks, so check what the vendor offers before wrapping.

Which engine renders my app?

The system's: WebKit on macOS, WebView2 on Windows, WebKitGTK on Linux. That is why one page can behave a little differently on each.

Can I remove the app later?

Yes. Browser web apps are removed from the browser or, for Safari, by dragging the app from the Applications folder in your home folder to the Trash. Pake apps are removed from My Apps, or on Windows also from Settings › Apps; see Manage your apps for what happens to sign-ins.