Blog

Excalidraw desktop app: PWA, Pake app, and moving your drawings

Popular sites · · 7 min read

None of Excalidraw's own pages list a desktop app, so the options are a browser tab, an installed PWA or a Pake app. A Pake app gives Excalidraw its own icon and window, with one catch that surprises people: it has its own storage, so a drawing you made in the browser does not appear in it. Save the drawing as a .excalidraw file and open that file in the app.

What Excalidraw itself offers

The Excalidraw README describes the hosted app at excalidraw.com, an npm package for embedding it, and a VS Code extension under integrations. It lists "PWA support (works offline)" for the hosted app. The documentation covers installing the package as a React component, and the Excalidraw+ page describes a cloud workspace. None of the three mentions a desktop app, so the sensible reading is that there is no official one.

That leaves three ways to get Excalidraw in a window of its own:

  • A browser tab. Nothing to install, and it is where the drawing already lives.
  • The PWA. Excalidraw's web manifest sets display to standalone, so a Chromium browser can install it as an app window. It also registers .excalidraw as a file type it can open. Browsers differ in how they install and what they share with the page, which PWA or desktop app covers.
  • A Pake app. A native window around the system web view that loads excalidraw.com, with Pake's window options on top.

If the PWA install works for you, it is a good answer and needs no extra tool. A Pake app is for the cases where it does not: a browser that cannot install it, a Linux desktop, or an app you want to configure, for example Always on top over a document while you copy a diagram.

Where your drawing is stored

This is the part that decides how you move between the browser and an app. The excalidraw.com source writes the current scene into the page's localStorage under the keys excalidraw (the elements) and excalidraw-state (view settings), saving a fraction of a second after each change. Images you paste in go to the page's IndexedDB, and so does your shape library. Excalidraw says so on its start screen: "Your drawings are saved in your browser's storage. Browser storage can be cleared unexpectedly. Save your work to a file regularly to avoid losing it."

Browser storage belongs to one browser profile and one site. Chrome's copy of excalidraw.com is separate from Safari's, and a web view inside another app is separate again. A Pake app is built on the system web view, WKWebView on Mac and Microsoft Edge WebView2 on Windows, with a store that is its own, so it starts with an empty canvas even if you have been drawing at excalidraw.com for a year. The same separation is why a site you are signed in to in Safari does not sign the app in, as Notion on the desktop explains.

Nothing is lost. The drawing is still in the browser, just not visible from the app. The bridge between the two is a file, because Excalidraw's file format is an open JSON format with the .excalidraw extension, which both sides can read and write.

In Pake, open the Create tab and type Excalidraw into Paste a web address or search the apps below to start, or open Work and click the Excalidraw tile. If the tile is missing, paste https://excalidraw.com/. The gallery entry carries only the address, name and icon, and its description is "Sketch diagrams in a hand-drawn style". Leave Incognito off, because Incognito keeps no site data and your drawing would be gone each time you close the app. Click Create App.

The Pake CLI does the same job from the command line, and it is the route on Linux other than Arch:

pake https://excalidraw.com --name Excalidraw

Pake's Gallery page explains how the tiles and their settings work.

Move a drawing from the browser into the app

Do this in the browser where the drawing lives, before you rely on the app.

  1. Open excalidraw.com and open the main menu.
  2. Choose Save to.... The dialog is titled Save to disk and describes itself as exporting the scene data to a file you can import later. Click Save to file. The browser writes a .excalidraw file named after the drawing.
  3. Open your Pake Excalidraw app and choose Open in its menu, or press Cmd O (Ctrl O on Windows and Linux). Pick the .excalidraw file.

If the canvas in the app already has content, Open from the menu asks first. The Load from file dialog says loading "will replace your existing content" and offers ways to back up first. Cmd O skips that question and replaces the canvas straight away, so check which side you are loading into. The same steps reverse the direction: Save to... in the app, Open in the browser.

In a Pake app, the saved file may arrive as a download rather than through a save dialog. Pake apps save downloads to the system Downloads folder, and the Pake CLI can pick another folder with --download-dir, as its options reference describes. Check where the first file landed, then move it where you keep your drawings.

Your shape library is separate again. It lives in IndexedDB and exports as an .excalidrawlib file, which you can import into the other side's library.

Keep drawings as files, not as browser state

Once you have two places that each hold their own copy, the file is the only thing that stays the same, so treat it as the master. A habit that works: name the drawing, save it with Cmd S into a folder you back up, and keep working from that file. After the first Save to file, Excalidraw can show a Save to current file entry that writes back to the same file, but only when the page holds a writable file handle for the file. When it does not, save again with Save to... and replace the old copy yourself.

To share a drawing outside Excalidraw, Export image... (Cmd Shift E) has an Embed scene option. A PNG or SVG exported with it still contains the scene data, so you can open the image again later. Without it, the image is only a picture and Excalidraw cannot restore the scene from it.

Excalidraw+ and the free app

Excalidraw+ is the paid, cloud-based side. Its pricing page lists Free as the full editor with one infinite scene, and Plus at $6 a month per user with unlimited scenes and folders, cloud saving, sharing with edit or view rights, PDF and PPTX export, and a 14-day trial. The pages do not mention a desktop app or offline use for Plus.

If your drawings need to follow you across devices, cloud saving is the feature that solves it, and no wrapper can substitute: a Pake app opens the same website, with the same plan limits. If a folder of .excalidraw files in your own backup is enough, the free app plus files covers it.

When something goes wrong

  • The canvas is empty in the app. Expected, see above. Open the browser copy, save it as a file, and open that file in the app.
  • Drawings vanish between launches. Check Incognito first: click Edit, turn it off and click Save Changes. If it was already off, a storage warning means the quota was hit: Excalidraw shows "Browser storage quota exceeded. Changes will not be saved." Save to a file now.
  • Open does nothing or the file is rejected. Excalidraw refuses files that are not Excalidraw JSON, and it cannot restore a scene from a PNG or SVG exported without Embed scene.

Test once with a throwaway drawing before moving anything important: draw a rectangle in the browser, save it, open it in the app, and close and reopen the app to confirm the canvas comes back.

FAQ

Is there an official Excalidraw desktop app?

Excalidraw's README, documentation and Excalidraw+ pages do not list one. It publishes the hosted app, which is a PWA, and an npm package, and its README lists a community VS Code extension under integrations. An early Electron wrapper, excalidraw/excalidraw-desktop, is archived on GitHub and marked deprecated.

Can I open .excalidraw files by double-clicking?

The installed Excalidraw PWA declares .excalidraw as a file type it can open in Chromium browsers. In a Pake app, open the file from inside the app with Open.

Does a Pake app work offline?

Pake loads the website, and the app has no offline copy of its own. Excalidraw's PWA support is what enables offline use, so use the PWA if offline drawing matters.