ChatGPT writes a good quiz in seconds. The trouble starts after: the quiz lives in your conversation, a file sent to the class chat does not run on a phone, and nobody sees the scores. The fix is to ask ChatGPT for the quiz as one HTML file that grades itself and saves each score, then publish it on Hostus and send one link. Students need no account.
The prompt is below, and here is a quiz made with it. Facts about OpenAI, Google and Anthropic come from their help pages and release notes, read on 7 November 2026.
The ChatGPT quiz prompt
Paste it into a new conversation and fill in the brackets. To build the quiz from your own material, attach it or paste it under the prompt.
Make a self-grading quiz as one HTML file, mobile first, for my [grade or age] class.
Topic: [topic, or "only from the text I pasted below"].
10 multiple-choice questions, 4 options each, one question per screen, with a progress bar. After each answer, show whether it was right and one sentence on why. At the end, show the score out of 10, the questions the student missed with the right answer, and a Try again button.
Start screen: one field for the student's first name only (max 40 characters). No email and no other personal data.
Save every finished attempt with the hostus.data SDK. Hostus injects it when the page is hosted there: no backend, no API key, no localStorage.
- Start when the SDK is ready: if (window.hostus?.data) start(); else document.addEventListener("hostus:data-ready", start). If it never loads (the file opened from my computer), say "Open this quiz from its Hostus link to send your score".
- const { data } = window.hostus; const me = await data.me(). If me.can.write is false, say the quiz is closed.
- On finish: data.set("scores", "attempt-" + Date.now().toString(36) + "@" + me.id, { name, score, total: 10, missed: [numbers of the missed questions], at: new Date().toISOString() }). Keys are unique per document, so every key ends with the reader id.
- Show "Score sent to your teacher" when it resolves. On error, show a short message for err.code closed, forbidden, rate_limited, quota and login_required.
Teacher view: only when me.role === "owner", show a Class results section below the quiz, fed by data.watch("scores", render, { orderBy: "created_at", order: "desc", limit: 200 }): a table with name, score and time, the class average and the most missed question. Treat every record as untrusted: write text with textContent, keep only scores that are finite numbers between 0 and total, ignore anything else. If me.mode is not "per_reader", warn me that students can read each other's scores.
Wrap the name field in a form with data-hostus="ignore". Leave the bottom-right corner free for the Hostus badge. All CSS and JavaScript inline, no external files.Why the prompt is so specific. The first name only keeps student data small. The key that ends with the reader id lets thirty students save at the same time without overwriting each other. Saving one record per attempt means a retake adds a row instead of erasing the first try. The teacher view appears only for you, the person who published the page.
How do you get the quiz out of ChatGPT?
- Click the copy icon on the code block.
- Paste it into a plain text editor and save it as
quiz.html. On a Mac, switch TextEdit to plain text first. - Open the file in your browser and take the quiz once. The score will say to open it from its Hostus link: that is expected, because saving only works once the page is hosted.
If you are looking for canvas: OpenAI's release notes of 28 May 2026 say canvas is no longer available in GPT-5.5 Instant or GPT-5.5 Thinking, and that coding now happens in code blocks in the chat. Look for your quiz in a code block.
Publish the quiz and send one link
- Drag
quiz.htmlonto hostus.io, type your email and click the magic link. No password. A quiz like this is a few dozen KB, well under the 1 MB that page takes before you sign in. - In the dashboard, switch the page to Public, so students open it with no account.
- Open the page's Data tab and set the data mode to per reader. Each student reads only their own attempts; you read all of them.
- Open the link yourself while signed in. You will see the quiz and, under it, Class results.
- Send the link to the class.
With the Hostus connector in ChatGPT, you can skip the file. Mention @Hostus and ask: Publish this quiz on Hostus and set its data mode to per_reader. The page still starts private, so make it public in the dashboard. Whether your ChatGPT plan can add the connector, and how, is in sharing a game made with ChatGPT. The file route works on any plan.
Where do the scores go?
Each finished attempt is one record on the page, in a collection called scores. You see them in three places:
- The Data tab in your Hostus dashboard: a table with one row per attempt, with the name, score, missed questions and time, search, and a CSV or JSON export. Students without an account show as anonymous in the author column; the name they typed is in the row.
- Class results, under the quiz, when you open the link signed in: the latest attempts, the class average and the most missed question.
- Your AI, with the Hostus connector on: ask which question the class missed most, and it reads the records and answers.
The quiz does not email you each score. If you want a message per student, ask ChatGPT for a plain form instead: form responses reach your email, 100 a month on the free plan.
ChatGPT quiz or Kahoot?
| Option | Best for | What students need | Where you see results |
|---|---|---|---|
| Hostus, a quiz page from ChatGPT | Practice at each student's pace, on their own phone, at school or at home | A link, no account | Data tab with CSV, plus Class results on the page |
| Kahoot! | A live game on the class screen | A game PIN, a link or a QR code, per its schools page | Check their site |
If your school already runs on Kahoot!, ChatGPT can still write the questions. Ask for a numbered list with four answers each and the right one marked, then build the kahoot from it. For a wider comparison, with Wayground and Google Forms, see AI quiz makers for teachers.
Making the quiz in Gemini Canvas
The same prompt works in Gemini. Two things from Google's Canvas help matter for a class. Shared Canvas links only open on gemini.google.com, not in the Gemini mobile app. And in a shared app, anyone with the public link can view and edit the data associated with the app, so scores saved there are open to the whole class. Google also says copying shared content is not available to users under 18.
To send it as a quiz page instead, click Code at the top right of the Canvas panel, copy the code into quiz.html and publish it on Hostus as above. More in how to share a Gemini Canvas.
Making the quiz in Claude
The same prompt works in Claude too. Claude's help on sharing artifacts says most artifacts shared with Anyone with the link open without a Claude account. It also says people who aren't signed in can't see information an artifact saves, and may see little or nothing until they sign in. Students without a Claude account are exactly that case.
So copy the code into quiz.html and publish it on Hostus, or turn on the Hostus connector in Claude and ask it to publish the quiz. Setup is in sharing a game made with Claude; it works the same for a quiz.
How do you open the quiz on a phone?
Through the link, not the file. A quiz.html sent to a phone does not run reliably, and even when it opens, it cannot save scores. Once the quiz is on Hostus, students tap the link and it opens in Safari, Chrome or any phone browser. Nothing to install.
If you only have your phone, you can publish from it too: open hostus.io, choose the file, type your email and tap the magic link. To check how a file looks before you publish it, paste it in the HTML viewer.
Good to know before you publish
The answers are in the page source, and the score is computed in the student's browser, so a determined student can read the answers or send a fake score. Use it for practice and checks for understanding, not for grades that count. One school network can bring up to 60 new students an hour to the same quiz; past that, new students wait before their score saves. A student on a new device or with cleared cookies counts as a new reader. Every page shows a small Published with Hostus badge, the link is a hostus.page subdomain with no custom domain, and the page does not appear in Google. Free covers 20 pages, 2 MB in total and 1,000 records per collection, one per attempt.