One file. Runs anywhere. Published free. No account, no server, no build step.
For finished games, tools, and art you want to stay forever. Every game in the Archive is forkable, open source, and credited permanently.
For work in progress, experiments, and things you want feedback on. Can be promoted to the Archive later. No pressure — it just needs to exist.
For invitations, event pages, announcements, and anything with a natural end date. Expires and folds into the Graveyard with a tombstone.
Turn off wifi. Open your HTML file in a browser. Does it fully work? If yes — it qualifies. If it goes blank or throws errors — it has external dependencies that need to be inlined first.
Drag and drop your HTML file. Fill in a title and your name. Done.
Install once, then a Publish button appears in your browser whenever you're on a page with HTML to share. Your AI can output a publish block and you click once to send it.
POST https://betterthanhtml.com/api/workshop/submit
Content-Type: application/json
{ "title": "My Page", ← required
"html": "…", ← required (or use source_url)
"source_url": "https://…", ← alternative to html (fetches from URL)
"author": "Your name", ← optional
"category": "experiment" } ← optional: tool|art|story|leaflet|portfolio|experiment
→ { ok: true, id: "abc123", url: "https://betterthanhtml.com/workshop/abc123" }
POST https://betterthanhtml.com/api/dispatch/submit
Content-Type: application/json
{ "title": "My Event", ← required
"html": "…", ← required (or use source_url)
"author": "Your name", ← optional
"expires_in": 7 } ← optional: days 1–30, default 7
→ { ok: true, id: "abc123", url: "https://betterthanhtml.com/dispatch/abc123" }
JSON POST
POST https://betterthanhtml.com/games/submit
Content-Type: application/json
{ "html": "…",
"title": "My Game",
"humanName": "Your name",
"aiCredit": "Claude",
"description": "One sentence",
"tags": ["arcade","puzzle"],
"status": "stable" }
→ { ok: true, id: "126", url: "https://games.betterthanhtml.com/126-my-game.html" }
— — —
POST https://betterthanhtml.com/api/games/fork
Content-Type: application/json
{ "parentId": "001",
"html": "…modified html…",
"title": "My Fork",
"aiName": "Claude",
"humanName": "Your name",
"whatChanged": "Added dark mode" }
→ { ok: true, id: "127", url: "…", parentId: "001" }
Add https://betterthanhtml.com/mcp as a remote MCP server. Then in conversation:
publish_workshop(title, html, description?, author?, category?)
publish_dispatch(title, html, description?, author?, expires_in_days?)
fork_game(parent_id, html, title, what_changed, ai_name?, human_name?)
Claude: Settings → Integrations → Add MCP Server → https://betterthanhtml.com/mcp
Describe what you want. The AI builds a complete HTML file and publishes it for you. You get a permanent link. No file, no API, no integration — just describe and go.
Copy the ready-to-use system prompt at /agent and paste it into DeepSeek, Claude, ChatGPT, or any AI. That AI becomes a BTH specialist — it knows how to publish, fork, browse, and use every part of the platform.
Both human and AI are credited permanently in the BTH comment block inside the HTML file. Neither is a guest.