Guide

How to make a quiz with ChatGPT that grades itself and sends you the scores

One prompt for a self-grading quiz, one link for the class, every score saved for you. With notes for Gemini Canvas, Claude and phones.

Updated 2026-11-07 · by Hostus Team

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?

  1. Click the copy icon on the code block.
  2. Paste it into a plain text editor and save it as quiz.html. On a Mac, switch TextEdit to plain text first.
  3. 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.

  1. Drag quiz.html onto 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.
  2. In the dashboard, switch the page to Public, so students open it with no account.
  3. 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.
  4. Open the link yourself while signed in. You will see the quiz and, under it, Class results.
  5. 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?

OptionBest forWhat students needWhere you see results
Hostus, a quiz page from ChatGPTPractice at each student's pace, on their own phone, at school or at homeA link, no accountData tab with CSV, plus Class results on the page
Kahoot!A live game on the class screenA game PIN, a link or a QR code, per its schools pageCheck 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.

Questions people ask

What is a good ChatGPT prompt for a quiz?

Give the grade, the topic, the number of questions and the format, and say what happens at the end. The prompt on this page asks for 10 multiple-choice questions, feedback after each answer, a score out of 10 and a saved record for the teacher.

Can ChatGPT make a quiz that grades itself?

Yes. Ask for the quiz as one HTML file with the right answers inside: the page checks each answer and shows the score. To get the scores back, host it on Hostus and have the page save each attempt with hostus.data.

Can ChatGPT make a Kahoot?

ChatGPT can write the questions and answers: ask for a numbered list with four answers each and the right one marked, then build the kahoot from it. Or skip the platform and send the quiz as one link.

Do my students need a ChatGPT account?

No. Once the quiz is on Hostus and set to Public, anyone with the link can take it in a browser. Only you need an account, to publish.

How do I see who took the quiz?

In the Data tab of the page in Hostus, one row per attempt with the name the student typed, the score and the time. Opening the quiz link while signed in also shows Class results under the quiz.

Your ChatGPT quiz, one link for the class

Free plan, no card, no clock. Drop the quiz file and send the link in a minute.