Claude for Teachers: give students a link, not a sign-in screen

A quiz or study page made in Claude is easy to build and harder to hand out. Copy the page out as HTML and share it as a plain link that opens in any browser.

A Claude for Teachers account is a free Claude for Teams plan, and student accounts are not part of it. On a Team plan, people without a Claude account cannot open a shared artifact, even with the link (as of October 2026).

So a quiz or study page you build with Claude will not open for your students from Claude's own share link. Copy the page out as HTML instead, and send it as a plain link that opens in any browser, with no account.

Some classroom guides say students never need a Claude account for artifacts. That holds for the Publish button on Free, Pro and Max plans. Claude for Teachers sits on a different plan, so check which one you are on.

Here is a page you can copy. It is a four-question quiz that scores itself in the browser. Try it.

Live exampletry it here, then copy the code
Share it as a link
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Fractions check-in</title>
<style>
  * { box-sizing: border-box; }
  body { margin: 0; padding: 16px; font-family: system-ui, sans-serif; background: #f4f6fa; color: #1d2330; }
  .wrap { max-width: 560px; margin: 0 auto; }
  h1 { font-size: 20px; margin: 0 0 4px; }
  .sub { margin: 0 0 14px; color: #5b6475; font-size: 14px; }
  .q { background: #fff; border: 1px solid #dfe3ea; border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; }
  .q.right { border-color: #5fb97a; background: #f3fbf5; }
  .q.wrong { border-color: #e08a6a; background: #fff6f2; }
  .q p { margin: 0 0 8px; font-weight: 600; }
  label { display: block; padding: 6px 8px; border-radius: 6px; cursor: pointer; }
  label:hover { background: #eef2f8; }
  .note { margin: 8px 0 0; font-size: 13px; }
  .row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 12px; }
  button { font: inherit; font-weight: 600; padding: 10px 16px; border: 0; border-radius: 8px; cursor: pointer; background: #2457d6; color: #fff; }
  button.alt { background: #e4e8f0; color: #1d2330; }
  #score { font-weight: 700; }
</style>
</head>
<body>
<div class="wrap">
  <h1>Fractions check-in</h1>
  <p class="sub">Pick one answer for each question, then press Check answers.</p>
  <form id="quiz"></form>
  <div class="row">
    <button type="button" id="check">Check answers</button>
    <button type="button" id="reset" class="alt">Start again</button>
    <span id="score" aria-live="polite"></span>
  </div>
</div>

<script>
  // Edit this list: question text, options, and the index of the right option.
  const questions = [
    { q: 'What is 1/2 + 1/4?', options: ['2/6', '3/4', '2/4'], answer: 1 },
    { q: 'Which fraction is the largest?', options: ['3/8', '1/2', '2/5'], answer: 1 },
    { q: 'What is 2/3 of 12?', options: ['6', '8', '9'], answer: 1 },
    { q: 'What is 6/8 in simplest form?', options: ['2/3', '3/4', '6/8'], answer: 1 }
  ];

  const form = document.getElementById('quiz');
  const score = document.getElementById('score');

  function build() {
    form.innerHTML = '';
    score.textContent = '';
    questions.forEach((item, i) => {
      const box = document.createElement('div');
      box.className = 'q';
      let html = '<p>' + (i + 1) + '. ' + item.q + '</p>';
      item.options.forEach((opt, j) => {
        html += '<label><input type="radio" name="q' + i + '" value="' + j + '"> ' + opt + '</label>';
      });
      html += '<div class="note"></div>';
      box.innerHTML = html;
      form.appendChild(box);
    });
  }

  document.getElementById('check').addEventListener('click', () => {
    let right = 0;
    questions.forEach((item, i) => {
      const box = form.children[i];
      const picked = form.querySelector('input[name="q' + i + '"]:checked');
      const note = box.querySelector('.note');
      const ok = picked && Number(picked.value) === item.answer;
      if (ok) right++;
      box.className = 'q ' + (ok ? 'right' : 'wrong');
      note.textContent = ok ? 'Correct.' : (picked ? 'Not quite. ' : 'No answer. ') + 'The answer is ' + item.options[item.answer] + '.';
    });
    score.textContent = 'Score: ' + right + ' of ' + questions.length;
  });

  document.getElementById('reset').addEventListener('click', build);
  build();
</script>
</body>
</html>
A self-marking quiz in one file. Edit the questions list and the page reruns.

The whole page is one HTML file, with the questions in a short list near the bottom. Change the topic, the wording and the right answers there. Nothing a student picks is saved or sent to you, which matters later in this guide.

Make it with AI

You do not have to write the code. Paste this into Claude, ChatGPT or Gemini, and fill in the brackets.

Make a [6]-question multiple-choice quiz on [topic] for [grade level].
Give me one complete HTML file in a single code block: doctype, head
with charset, viewport and title, all CSS in a style tag, all JavaScript
in a script tag. No external images, fonts or libraries. Show a score
and the right answer for each question when I press Check answers.
Make it work on a phone. Use made-up names only.

Then check the result before you send it anywhere:

  • The answers. Read every question and the marked answer yourself. A page that looks finished can still have a wrong key.
  • One complete file. It should start with the doctype line and end with the closing html tag. A fragment shows as plain text elsewhere.
  • Nothing from outside. No image links, and no libraries from sites other than the common ones. Ask for inline SVG instead of pictures.
  • Phone width. Open it narrow and make sure nothing runs off the edge.

The same approach works for study pages. This one flips vocabulary cards.

Live exampletry it here, then copy the code
Share it as a link
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Water cycle vocabulary</title>
<style>
  * { box-sizing: border-box; }
  body { margin: 0; padding: 16px; font-family: system-ui, sans-serif; background: #eef6f4; color: #1d2330; }
  .wrap { max-width: 440px; margin: 0 auto; text-align: center; }
  h1 { font-size: 20px; margin: 0 0 4px; }
  .sub { margin: 0 0 14px; color: #4b5f5a; font-size: 14px; }
  .card { min-height: 170px; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 18px; background: #fff; border: 2px solid #9fcfc3; border-radius: 14px; cursor: pointer; font-size: 22px; font-weight: 700; user-select: none; }
  .card.back { background: #e6f6f1; font-size: 17px; font-weight: 500; }
  .hint { font-size: 12px; font-weight: 400; color: #5b6e69; margin-top: 10px; }
  .row { display: flex; gap: 8px; justify-content: center; margin-top: 12px; flex-wrap: wrap; }
  button { font: inherit; font-weight: 600; padding: 10px 16px; border: 0; border-radius: 8px; cursor: pointer; background: #1f7a68; color: #fff; }
  button.alt { background: #e0e8e6; color: #1d2330; }
  .count { margin-top: 12px; font-size: 14px; color: #34524c; }
</style>
</head>
<body>
<div class="wrap">
  <h1>Water cycle vocabulary</h1>
  <p class="sub">Tap the card to flip it. Then say whether you knew it.</p>
  <div class="card" id="card" role="button" tabindex="0"></div>
  <div class="row">
    <button type="button" class="alt" id="again">Again</button>
    <button type="button" id="gotit">Got it</button>
  </div>
  <p class="count" id="count"></p>
</div>

<script>
  // Edit this list: the word on the front, the meaning on the back.
  const cards = [
    ['Evaporation', 'Liquid water turns into water vapor, usually because the sun warms it.'],
    ['Condensation', 'Water vapor cools and turns back into tiny drops of liquid water.'],
    ['Precipitation', 'Water falls from clouds as rain, snow, sleet or hail.'],
    ['Runoff', 'Water that flows over the ground into streams, rivers and lakes.'],
    ['Groundwater', 'Water that soaks into the soil and is stored underground.']
  ];

  const card = document.getElementById('card');
  const count = document.getElementById('count');
  let order = cards.slice();
  let index = 0, known = 0, flipped = false;

  function show() {
    if (index >= order.length) {
      card.className = 'card';
      card.innerHTML = 'Round done';
      count.textContent = 'You knew ' + known + ' of ' + cards.length + ' cards.';
      return;
    }
    const c = order[index];
    card.className = 'card' + (flipped ? ' back' : '');
    card.innerHTML = flipped ? c[1] : c[0] + '<span class="hint">Tap to flip</span>';
    count.textContent = 'Card ' + (index + 1) + ' of ' + order.length + ' · knew ' + known;
  }

  function flip() { if (index < order.length) { flipped = !flipped; show(); } }
  function next(wasKnown) {
    if (index >= order.length) { order = cards.slice(); index = 0; known = 0; }
    else { if (wasKnown) known++; index++; }
    flipped = false;
    show();
  }

  card.addEventListener('click', flip);
  card.addEventListener('keydown', (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); flip(); } });
  document.getElementById('gotit').addEventListener('click', () => next(true));
  document.getElementById('again').addEventListener('click', () => next(false));
  show();
</script>
</body>
</html>
A flip-card page. Tap a card, then Got it or Again. Edit the cards list to change the words.

Copy the HTML from Claude's reply. If you built the page as an artifact, Claude's help page says legacy artifacts have controls at the top of the panel to view the code, copy it or download it.

Paste it into a NOS document and choose Create share link. HTML to link walks through it. The page renders as written and its scripts run.

From a Claude reply to a link students can open.
From a Claude reply to a link students can open.

Whoever has the link opens the page in a browser, a phone included, with no account. They cannot edit it. If you change the code later, the same link shows the new version.

What a student sees after tapping the link on a phone.
What a student sees after tapping the link on a phone.

For Google Classroom, Google's help page says teachers can attach links to an assignment, so the address can go there (as of October 2026). It works anywhere else you can paste text, such as an email or a class website.

For the Claude side of this, see sharing Claude artifacts, two ways and sharing HTML from Claude.

Claude's help page describes two buttons. Free, Pro and Max plans have Publish, which makes a public link anyone can open without an account. Team and Enterprise plans have Share instead.

On those plans, artifacts stay inside your organization by default, and an owner decides whether people can share outside it. Even when an owner allows "Anyone with the link", viewers still need a Claude account.

The same quiz behind a Claude sign-in, and as a plain link.
The same quiz behind a Claude sign-in, and as a plain link.

The help page adds a warning for teachers. When you share an artifact made in a chat, viewers also get access to the attachments and files in that chat. If you uploaded a class list to build the page, keep that in mind.

Ways to share compared

Claude Share (Team plan) Claude Publish (Free, Pro, Max) NOS share link
Student needs a Claude account Yes No No
Listed on Claude for Teachers plan Yes, as a Team plan Listed under other plans Not tied to any plan
Files from the chat Viewers can also see them Not stated Only the page you pasted
Change it, keep the same link Not stated Not stated Yes

The first row decides the most. If your students will never have Claude accounts, only the right-hand column reaches all of them.

Keep student information off the page

Anyone who has the link can open the page. There is no password in NOS, so treat the link like a flyer on a notice board. Do not put student names, grades or contact details in the page.

The reverse also holds. What a student taps on the page is not saved, and sending a form to a server is blocked, so the page cannot collect answers for you. You also cannot see who opened it.

That makes it a good fit for practice quizzes, vocabulary cards and review pages. For graded work, Google's help page describes attaching materials such as a Google Forms survey to a Classroom assignment.

When it does not work

What you see Cause Fix
A student sees a Claude sign-in screen The link is a Share link from a Team plan Copy the HTML out and send a NOS share link
The page works for you, not for students You are signed in to Claude and they are not Test the link in a browser where you are not signed in to Claude
The page is blank or half styled The code was a fragment, or loads from a blocked site Ask Claude for one complete file with nothing external
Pictures are missing Outside images are blocked Ask for inline SVG or CSS shapes
Answers vanish after a refresh A visitor's changes are not saved Treat it as practice, not a record
A form does nothing when sent Sending a form to a server is blocked Keep the form inside the page, or use a Google Form
You spot a typo after sending The page needs a fix Edit the code in NOS. The same link updates

Questions people ask

Can students open a Claude artifact without an account?

It depends on the plan. Claude's help page says a published artifact on Free, Pro and Max plans opens without a Claude account. On Team and Enterprise plans, people without an account cannot open a shared artifact, even with the link. A Claude for Teachers account is a free Claude for Teams plan. This is as of October 2026.

Can I give my students Claude for Teachers accounts?

No. Anthropic says Claude for Teachers is for educators only and that student accounts are not part of it. Students would not be on your plan, so sharing inside Claude does not reach them.

Does any artifact on a Team plan open without an account?

The help page names one exception, a legacy artifact published from a chat. For anything you build today, plan on students needing an account, and send a plain link instead.

Can I see which students opened the page or what they answered?

No. A NOS share link has no tracking of who opened it, and what a visitor does on the page is not saved or sent to you. Use the page for practice. For graded work, attach a tool made for collecting answers, such as a Google Form in Classroom.

What if I find a mistake after I sent the link?

Fix the code in your NOS document. The share link stays the same, so students who already have it see the corrected page.

Keep reading