Browser vs Desktop¶
The same codebase runs in both. What differs is how it reaches the outside world: files, processes, and GPUs.
| Browser | Desktop | |
|---|---|---|
| Install | None — app.sleap.ai | ~100–220 MB depending on platform, installer |
Open / save .slp |
File System Access API | Native file dialogs, writes in place |
| Drag-and-drop | ✅ | ✅ |
| Labeling, tracks, view, analyze | ✅ | ✅ |
| Video playback (WebCodecs) | ✅ | ✅ |
| Transcode legacy codecs | ❌ convert externally | ✅ native ffmpeg sidecar, cached |
| Local training / inference | ❌ | ✅ via Environment |
| Remote training / inference | ✅ | ✅ |
| Crash-recovery drafts | ✅ OPFS | ✅ app data directory |
| Reveal file in file manager | ❌ | ✅ |
| Open Preferences Directory / Clear Video Transcode Cache | ❌ | ✅ |
| Local scrub proxies for network videos | ❌ | ✅ |
| NWB export | ❌ | ✅ |
| ONNX / TensorRT model export | ❌ | ✅ |
| Model-output overlays | ❌ | ✅ |
| DeepLabCut import | Chromium browsers only (Chrome, Edge) — needs the folder picker | ✅ |
| In-app updates | Reload the page | ✅ per channel |
| Offline | ❌ needs a connection to load the page | ✅ |
Which should I use?¶
Browser if you are labeling, reviewing predictions, or checking someone else's project — there is nothing to install and nothing to keep up to date. It is also the right choice on a machine you don't administer, and it can still train and predict through a remote worker.
Desktop if you want native file handling on large projects, a local GPU, or legacy-codec videos handled for you.
Projects are the same .slp files either way, so moving between them costs
nothing.
Saving differences worth knowing¶
In the browser, opening a file through the picker gives the page a writable handle and Save writes back to that same file. Opening by drag-and-drop yields no handle, so Save falls back to a Save-As prompt. On the desktop, Save always writes to the project's path.
See Saving & Recovery.
Under the hood¶
The desktop app is Tauri v2 — it uses the operating
system's own WebView rather than bundling a browser engine. It does bundle its
own ffmpeg/ffprobe for converting legacy-codec videos. Platform-specific
behavior is isolated behind a small abstraction layer, so features arrive in
both runtimes at once unless they fundamentally cannot.