# Half-Life in a browser: choose WebXash or Pixelsuft

Canonical: https://playable.wtf/guides/half-life-browser-versions/

Written: 2026-10-17

WebXash offers the clearer owned-file and save workflow. Pixelsuft’s older launcher exposes separate data and filesystem choices for a more manual setup.

## Choose a Half-Life frontend

Choose [WebXash](https://playable.wtf/games/half-life-webxash/) when you have a legitimate Half-Life installation and want a browser frontend with folder selection and downloadable saves. [Pixelsuft’s em-xash](https://playable.wtf/games/half-life-pixelsuft/) exposes older data-loading and filesystem options; it is a more manual choice. Both are Xash-based projects for the original Half-Life generation, not Half-Life 2 or a promise that every GoldSrc mod works.

Choose the frontend you can prepare

| Project | Best reason to choose it | Prepare first |
| --- | --- | --- |
| [WebXash](https://playable.wtf/games/half-life-webxash/) | Owned files with a dedicated save manager | A root folder or ZIP containing `valve`; keyboard and mouse |
| [Pixelsuft em-xash](https://playable.wtf/games/half-life-pixelsuft/) | Explicit data-source and storage choices | A compatible local ZIP and a persistent filesystem choice |

For immediate Counter-Strike server browsing, use the separate [CSJS setup guide](https://playable.wtf/guides/counter-strike-16-browser-setup/). WebXash’s Counter-Strike option and CSJS’s curated server client share a lineage, but have different preparation and networking.

## Prepare the game and mod folders

In [WebXash](https://x8bitrain.github.io/webXash/), select **Open game folder** and choose the parent containing `valve`, then select the game directory. With **Open ZIP**, preserve `valve` at the archive root. For a supported expansion or mod, keep its directory beside `valve` and set the matching option, such as `-game bshift`, before loading.

Your files determine the content available. The engine and launcher do not supply a retail license or turn a demo into the full campaign. Check the [engine’s incompatible-mod list](https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/not-supported-mod-list-and-reasons-why.md) before preparing an expansion or total conversion: custom engine features, client libraries and missing source can prevent support.

## Keep WebXash saves recoverable

WebXash reads the selected installation; it does not write saves back into it. Its save manager keeps progress in IndexedDB, grouped by game/mod, and lets you download selected saves. ZIP-loaded games use the same mechanism. Export before clearing site data. The manager is disabled for Counter-Strike 1.6. These details are in the [WebXash save instructions](https://github.com/x8BitRain/webXash#save-manager).

Keep your original installation separately from exported saves. Reopen the same game/mod when continuing; the file selector remembering a folder is not a backup of either its contents or your progress. The [save and backup guide](https://playable.wtf/guides/browser-game-saves-backups/) explains this distinction.

## Pixelsuft: data and storage choices

Pixelsuft’s [detailed launcher](https://pixelsuft.github.io/hl/xash.html) separates **game data source** from **filesystem**. Choose **Local ZIP file** for a compatible archive you already have. For progress you want to retain, choose IndexedDB and follow the instruction to exit correctly; **None (in RAM)** makes the session temporary. LocalStorage is explicitly marked as potentially too small.

The server-package option can cache data, while the server-ZIP option is labelled uncached. Those choices concern loading, not a promise of persistent saves. This older frontend’s sparse [project documentation](https://github.com/Pixelsuft/hl) does not provide WebXash’s folder/import walkthrough. Choose WebXash if that preparation is the part you need help with; do not transfer its save-manager instructions to Pixelsuft.

## Controls, servers and native fallback

WebXash requires keyboard and mouse for proper play. Use fullscreen and check in-game bindings: the browser can intercept **Ctrl+W** and close a tab. The creator directs phone players toward native Xash ports. A working phone launcher alone is not a usable touch-control scheme.

For WebXash multiplayer, enter a compatible server’s WebSocket address before launch, then use **Multiplayer → LAN Game**, even over the internet. Automatic internet discovery is unavailable. Use the [client’s server instructions](https://github.com/x8BitRain/webXash#multiplayer) rather than a native server address alone.

If the browser client fails on your game or mod, retain the files and use the original native installation. [Valve’s Half-Life](https://store.steampowered.com/app/70/HalfLife/) is the original game product; browser-specific mod limitations should not be treated as a fault in that installation. Preserve exported progress separately, since selecting a different engine is not a guaranteed save conversion.

## Project reading

- [WebXash · files, mods, saves and servers](https://github.com/x8BitRain/webXash)
- [Pixelsuft · em-xash project](https://github.com/Pixelsuft/hl)
- [Pixelsuft · data and filesystem launcher](https://pixelsuft.github.io/hl/xash.html)
- [Xash3D FWGS · incompatible mods](https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/not-supported-mod-list-and-reasons-why.md)
- [Valve · Half-Life](https://store.steampowered.com/app/70/HalfLife/)
