# 5. Worked Example: itch HTML5 Slice
Part of [[Web and WebGL Builds]]. Prev: [[4. Publishing a Web Build]]. Next: [[6. Web Build Pitfalls]].
A vertical slice is enough (the same gray-box or gym you would ship as a Windows build). Version `0.1.0`. **No upload was performed** while writing this note.
## 5.1 Build
1. Web Build Profile, Release, product version `0.1.0`.
2. Publishing Settings: Brotli, **Decompression Fallback on**, Geometric heap, Initial 32 MB, Maximum 2048 MB, exceptions at default, Data caching optional, Debug Symbols Off or External, Show Diagnostics Overlay **on** for this first class push (you can turn it off later).
3. Build to `dist/web-0.1.0/`.
4. Serve that folder locally. Walk one happy path in the browser. Quit. If it only works in the Editor Game view, you are not ready.
## 5.2 itch
1. itch project kind: **HTML** (or switch it after the first push, official). Visibility: draft.
2. `butler push dist/web-0.1.0 yourname/classroom-arena:html5 --userversion 0.1.0 --hidden` — drop `--hidden` if the official restriction on existing channels applies (see [[2. itch.io Pages and butler]]).
3. Edit game: tag the channel **HTML5 / Playable in browser**, Save.
4. Incognito: the embed starts, one happy path works, diagnostics (if on) show a heap under 2048 MB.
## 5.3 Playtest checklist
- [ ] Local HTTP serve works before any push.
- [ ] The itch embed starts without the Editor.
- [ ] Project kind is HTML, not a downloadable zip of the Web folder mistaken for a desktop build.
- [ ] Decompression Fallback is on unless you proved headers.
- [ ] Version strings agree.
- [ ] No butler keys in Git.
- [ ] No IAP.
## 5.4 Exercise
Push `0.1.0`, then bump a visible string to `0.1.1`, rebuild, push again, and confirm the embed updates. Attach a screenshot of the running embed (and the diagnostics overlay if enabled).
## Sources
- https://itch.io/docs/butler/pushing.html
- [[5. Worked Example Ship a Classroom Build]]