File format
The CanQuiz JSON quiz format, field by field
A CanQuiz quiz exports as a .json file: text holding the questions, the options and the answers. Here is its format field by field, with an example that opens in the browser without an account.
It opens at app.canquiz.com/abrir. The file is read in your browser.
What it is and where it comes from
It's what you download from Library: in a quiz's More menu, choose Download and then “CanQuiz file (to send to someone)”. It takes up a few kilobytes, travels over WhatsApp or email like any attachment and never expires, which is why quizzes get passed around this way.
If someone sent you one, you don't need any of what follows: drop it on app.canquiz.com/abrir and take the quiz. This page is for anyone who wants to know what's inside, write one by hand or have another tool generate them.
The top level
The file is a JSON object. The only required part is the list of questions: if the settings object is missing, CanQuiz fills in the default values.
questionslistrequired- The questions, in the order they appear. At least one. Each one is described below.
settingsobject- How the quiz is taken: shuffling, passing score, explanations. It can be missing, and then CanQuiz uses the default settings; all its fields are optional.
metadataobject- Data about the quiz. The field CanQuiz reads when opening it is title_suggestion, the title offered when the file brings no other, up to 120 characters. Everything else is kept as it is.
_canquiz_urltext- Added on export along with _canquiz and _canquiz_titulo: the quiz's link, only if it was shared by link, a one-line note and the title it was downloaded with. They're stripped when the file is opened, so you can delete them or leave them.
The same content also opens wrapped in another object with two fields, title and content: title becomes the quiz title and content holds questions, settings and metadata.
Each question
The same fields for every type. Answers are matched as exact text, so whatever goes in correct_answer must be written exactly as it is in options.
idtextrequired- A short identifier such as q1, q2, q3. It's never shown, but it can't repeat within a quiz: importing into an account rejects duplicates.
typetextrequired- The question type, exactly as written: single_choice, multiple_choice, true_false, question_answer or short_answer. They're explained in the next section.
questiontextrequired- The question text, up to 2000 characters. Text only: the format carries no images.
optionslist- The answer options, each up to 1000 characters. Required for questions you choose from; open questions leave this field out.
correct_answertext or listrequired- The exact text of the correct option, or a list of texts for multiple_choice. For open questions, the expected answer. Up to 2000 characters.
explanationtext- Why it's correct, up to 20000 characters. Shown after answering when the quiz has explanations turned on.
Question types
The value of type decides which fields are needed and how an answer is graded.
single_choiceone answer- One correct option among several. correct_answer is a text that has to match one of the options.
multiple_choiceseveral answers- At least two options, with one or more correct. correct_answer is a list with the text of each correct option.
true_falsetrue or false- Exactly two options, in any language (True and False, Verdadero and Falso). correct_answer is one of the two.
question_answeropen question- No options. It's answered in writing and graded by the AI against correct_answer, the expected answer. That grading needs an account.
short_answershort answer- No options. It's answered with a word or a short phrase and compared with the expected answer, ignoring case, accents, punctuation and a leading article; if it doesn't match, the AI checks whether it means the same. correct_answer can be a list of accepted answers.
Settings
All optional. A missing one counts as switched off, or as the usual value.
shuffle_questionstrue or false- Shuffles the order of the questions every time the quiz is taken.
shuffle_optionstrue or false- Shuffles the order of the options inside each question.
passing_scorenumber- The passing score as a percentage, from 0 to 100. It's accepted and kept, but CanQuiz doesn't apply it today: the result doesn't say whether you passed.
show_explanationtrue or false- Shows the explanation once each question is checked.
show_progresstrue or false- Shows how many questions are done and how many are left.
time_limitnumber- A limit in seconds, above 0. It's accepted and kept, but CanQuiz doesn't apply it today: a single quiz has no countdown.
ai_strictness_levelnumber- From 1 to 10: how strictly the AI grades open questions.
A complete example
Four questions of four different types, with their settings, all graded without an account. Copy or download it and open it at app.canquiz.com/abrir to see how it looks.
{
"metadata": {
"title_suggestion": "Water (example)"
},
"settings": {
"shuffle_questions": false,
"shuffle_options": true,
"passing_score": 70,
"show_explanation": true,
"show_progress": true
},
"questions": [
{
"id": "q1",
"type": "single_choice",
"question": "At what temperature does pure water boil at sea level?",
"options": [
"90 °C",
"100 °C",
"110 °C",
"120 °C"
],
"correct_answer": "100 °C",
"explanation": "At one atmosphere of pressure, pure water boils at 100 °C (212 °F)."
},
{
"id": "q2",
"type": "multiple_choice",
"question": "Which elements make up a water molecule?",
"options": [
"Hydrogen",
"Oxygen",
"Carbon",
"Nitrogen"
],
"correct_answer": [
"Hydrogen",
"Oxygen"
],
"explanation": "H₂O: two hydrogen atoms and one oxygen atom."
},
{
"id": "q3",
"type": "true_false",
"question": "Ice floats on liquid water because it is less dense.",
"options": [
"True",
"False"
],
"correct_answer": "True",
"explanation": "Water expands as it freezes, and its density drops to about 0.92 g/cm³."
},
{
"id": "q4",
"type": "short_answer",
"question": "What is water turning from liquid into gas below its boiling point called?",
"correct_answer": "Evaporation",
"explanation": "It happens at the surface at any temperature, which is why laundry dries on the line without reaching 100 °C."
}
]
}If you edit it, save it as plain text with the .json extension. A code editor will flag a stray comma or a missing quote.
Why a file won't open
When opening a file, CanQuiz doesn't guess: the file either follows the format or you get a warning. These are the usual mistakes.
The correct answer as a letter
“B” or “2” in correct_answer doesn't work in a file: it has to be the option's text, written the same way.
No questions
questions has to be there with at least one question. settings, on the other hand, can be missing: CanQuiz fills in the default settings.
A true or false with more than two options
true_false takes exactly two. For three or more, use single_choice.
An open question with options
question_answer can't have options. If it has options, it's a question you choose from.
A misspelled type
multiple-choice with a hyphen or MultipleChoice aren't types: they're lowercase with underscores.
A text that is too long
Each field has a character cap, there to stop absurd files: a question text over two thousand characters no longer opens.
Repeated ids
Two questions with the same id can still be taken without an account, but they can't be imported into one.
If you want an AI to make it
You don't need to write the JSON. With the CanQuiz plugin in ChatGPT you ask for the quiz and it's saved to your account, ready to take. How to do it is on the ChatGPT quiz maker page.
Frequently asked questions
Do I need an account to open a .json quiz?
No. At app.canquiz.com/abrir you drop or pick the file and take the whole quiz, with grading and explanations. An account is only needed to save it, review it later or edit it: press “Sign in and save it” and, once you're back, the quiz is in your account with what you had answered. The quiz then becomes yours and whoever sent it can no longer change it.
Is the file uploaded to a server?
While you stay signed out, the file isn't stored anywhere: the browser reads it on your device and the quiz runs there. Only when a short answer doesn't match the expected one do that question and what you wrote go to the AI to check whether it means the same, without being stored. If you choose to save the quiz, then it's stored in your CanQuiz account.
How do I export one of my quizzes as JSON?
In Library, open the quiz's More menu, press Download and choose “CanQuiz file (to send to someone)”. The same menu also offers “Spreadsheet (CSV)” and “Anki (tab-separated text)”.
Can I write a quiz by hand in this format?
Yes. Start from the example on this page, change the questions and answers in any text editor and save it with the .json extension. If it won't open, first check that every correct_answer is written exactly like its option.
Can another AI or my own program generate it?
Yes, it's ordinary JSON. If a program generates it, follow the fields on this page and the file opens like an exported one. If you want an AI chat to make it, the CanQuiz plugin in ChatGPT or connecting your account to Claude is easier: the quiz is saved directly, with no file.
Does it open Quizlet, Kahoot or CSV files?
No. CanQuiz only imports its own JSON. It exports to JSON, CSV and Anki, but it doesn't import from those tools and doesn't export to Quizlet or Kahoot. If your questions live somewhere else, you can paste them as text and let the AI build the quiz.
How many questions fit in one file?
When opening it, CanQuiz sets no maximum number of questions: what's capped is the text of each field, from two thousand characters for a question to twenty thousand for an explanation. A long quiz is still small, a few kilobytes of text.
Did someone send you a .json quiz?
Drop it on CanQuiz and take the quiz now, in your browser and without an account.