| Where the project runs | the viewer’s machine | a datacenter GPU |
| What the viewer needs | a current Chrome or Edge on Windows with WebGPU; a capable GPU | anything that plays video |
| Browsers (Epic’s 5.9 support matrix) | Chrome/Edge on Windows supported; Chrome on Linux with flags; Chrome on macOS not verified; Firefox slower, reduced renderer; Safari on macOS and iOS not supported | every current browser, including Safari and iOS |
| Phones and tablets | warned off by default; no touch input | supported, touch included |
| Before the first frame | the whole build is downloaded on the first visit (cached after) | 5–10 seconds, no download |
| Build size that works | hundreds of MB; multi-GB builds mean minutes of waiting | the same build you package for Windows, whatever its size |
| Memory | one browser heap, 4 GB by default | the server’s RAM and VRAM |
| Renderer | two tiers chosen per viewer by a GPU check: a forward renderer for most machines, a deferred renderer for fast discrete GPUs. No Nanite, no ray tracing; Lumen off; hair off | whatever the project uses — Lumen, Nanite, ray tracing, hair |
| Same picture for everyone | no — depends on the viewer’s GPU and browser | yes — same GPU every time |
| Your assets | downloaded to every viewer’s disk | never leave the server |
| Access control | static files; gating is the host’s problem | password, SSO, allowed domains, per-session tickets |
| Updates | every viewer re-downloads what changed | swap the build; viewers never notice |
| Analytics | none built in | sessions, concurrency, duration, device mix, per-session logs |
| Multiplayer, voice, plugins | browsers have no UDP; each plugin must be ported to WebAssembly | runs as on Windows |
| Cost model | hosting is close to free; the viewer’s hardware does the work | per concurrent viewer |
| Build pipeline | Unreal source build on Windows, a fixed emscripten toolchain, a long, memory-hungry link | package for Windows, upload |