# 6. Web Build Pitfalls
Part of [[Web and WebGL Builds]]. Prev: [[5. Worked Example itch HTML5 Slice]].
## Opening `index.html` as `file://`
WASM and loaders often fail. Serve over HTTP.
## Brotli/Gzip without headers or Decompression Fallback
The tab never starts. Official fix when you do not control `Content-Encoding`: **Decompression Fallback**.
## Maximum Memory Size at 4096 "to be safe"
Official recommended maximum is **2048 MB**, with known Firefox/Chrome bugs above that. Start at official defaults (32 / Geometric / 2048).
## Texture format set only in Build Settings, lost on another machine
Official: that value lives in `Library`, not version control. Document it or set it in a scripted Build Profile step.
## itch project still "Downloadable"
Official: HTML5 playable-in-browser requires project kind **HTML** and an Edit-game tag after the first push. A zip on a downloadable page is not an embed.
## `windows` channel clobbered with a Web folder
Two platforms, two channels ([[6. Publishing Pitfalls]]).
## Legacy `.jslib` plus `WebAssembly.Table`
Official: Table is not compatible with old `dynCall` plugins. Disable Table only if you must keep those plugins; prefer to drop them.
## Multithreading flipped on without the official prerequisites
`SharedArrayBuffer` and hosting headers are documented on the official multithreading page. Do not invent them. Leave the option off for this assignment.
## Exception mode "Full With Stacktrace" in a public release
Official debug option; costs performance and memory.
## HTTP catalogs and `Allow downloads over HTTP`
Prefer HTTPS. Do not "Always Allow" as a shortcut ([[Modding with Addressables]]).
## "It works in the Editor"
The assignment is the **browser tab**, then the **itch embed**.
## IAP on the Web slice
Out of scope.
## Sources
- https://docs.unity3d.com/6000.5/Documentation/Manual/class-PlayerSettingsWebGL.html
- https://itch.io/docs/butler/pushing.html