DEV Community

Indexflow
Indexflow

Posted on • Originally published at websitetoapp.app

How I Turned a Website into a Windows .exe in 10 Minutes (No Electron)

Last month a client asked me for "the desktop version" of their internal dashboard. It's a web app. There is no desktop version. But they wanted an icon on the desktop, something that opens in its own window, shows up in the taskbar, and doesn't live in a browser tab that gets lost among fifty others.

The classic answer is Electron. I've shipped Electron apps before, and for this job it felt like bringing a container ship to deliver a pizza. Here's the whole decision tree I went through, and the ten-minute path I ended up using.

The four real options

1. Electron. You get full control: Node integration, native menus, auto-updates, the works. You also get a build toolchain, a 150-250 MB installer, dependency updates forever, and code signing headaches. If you're building a product with deep OS integration, it's still the right tool. For wrapping an existing website, it's overkill.

2. Tauri. Much smaller binaries (it uses the OS webview instead of bundling Chromium) and a nicer security story. But it's a Rust toolchain, and "wrap this URL" still means a project setup, config, icons, building on a Windows machine or CI, and maintaining it. Great for developers; not something you hand to a non-technical client.

3. Nativefier. The old npm favorite for "website to desktop app" — one CLI command, Electron under the hood. It's now archived and unmaintained, which matters the day Chromium ships a security patch your wrapper never gets.

4. No-code converters. Services where you paste a URL and download an installer. This is what I used, because the requirements were literally "URL, icon, window, installer."

The ten-minute path

I used WebsiteToApp's website-to-EXE converter. The flow:

  1. Paste the site URL.
  2. Upload an icon (512x512 PNG works best; it generates the .ico).
  3. Set the window defaults — size, whether it's resizable, single-instance behavior, system-tray minimize.
  4. Build. A few minutes later you download a Windows installer (.exe) that installs like any normal desktop program: Start menu entry, desktop shortcut, uninstaller in Settings.

The wrapper loads the live site, so deploys to the web app show up in the desktop "app" immediately — no rebuilds, no update distribution problem. That's the killer property for internal tools: you keep shipping to one place.

Things I checked before handing it over

  • Offline behavior: the wrapper shows a proper error page instead of a white screen when the network drops (test this — some wrappers don't).
  • External links: links to other domains should open in the default browser, not inside the app window.
  • File downloads: CSV exports from the dashboard download to the normal Downloads folder.
  • Auth: sessions persist between launches (cookies live in the wrapper's own profile, so IT can't blame the user's browser extensions).
  • SmartScreen: an unsigned installer gets the blue "Windows protected your PC" interstitial on first run. For internal distribution that's a one-time "More info → Run anyway"; for public distribution you'd want a code-signing cert regardless of which tool you use.

When NOT to do this

If your "desktop app" needs the filesystem, native notifications with actions, global shortcuts, hardware access, or offline-first data, a wrapper is the wrong shape — that's Electron/Tauri territory, and the extra engineering is justified. A wrapper is for when the web app is already the product and the desktop shell is just ergonomics.

Cost comparison, honestly

  • Electron/Tauri: free tooling, but you pay in engineering hours (setup, builds, updates, signing) — for me that's never under a day all-in.
  • Nativefier: free, unmaintained — fine for personal use, hard to justify for clients.
  • The converter I used: one-time fee (about the cost of an hour of freelance time), watermark-free output, rebuilds included.

The client got their installer the same afternoon. Nobody has emailed me about it since, which for internal tooling is the highest praise there is.

If you try the converter route: websitetoapp.app also does Android APK/AAB from the same URL, which is how the same dashboard ended up on the field team's phones a week later.

Top comments (0)