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 is what you download from a quiz's export button when you choose "JSON (to import back)". It weighs 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 do not 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 is inside, write one by hand or have another tool generate them.
The top level
The file is a JSON object. The only essentials are the list of questions and the settings object, even if it is empty.
questionslistrequired- The questions, in the order they appear. At least one. Each one is described below.
settingsobjectrequired- How the quiz plays: shuffling, pass mark, explanations. It must be present even when empty; 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: the link to the original quiz and a one-line note. Both are 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 is never shown, but it cannot 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, short_answer or code_recall. They are 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 is 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 marked.
single_choiceone correct- One correct option among several. correct_answer is a text that has to match one of the options.
multiple_choiceseveral correct- 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- No options. It is answered in writing and marked by AI against correct_answer, the model answer. That marking needs an account.
short_answershort answer- No options. It is answered with a word or a short phrase and marked on the device itself, ignoring case, accents, punctuation and a leading article. correct_answer can be a list of accepted answers.
code_recallcode exercise- CanQuiz's programming exercises. They carry a drill field with a long format of its own that the app generates; it is not meant to be written by hand and is not covered here.
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 pass mark as a percentage, from 0 to 100.
show_explanationtrue or false- Shows the explanation when each question is marked.
show_progresstrue or false- Shows how many questions are done and how many are left.
time_limitnumber- A limit in seconds, above 0. It is accepted and kept, but CanQuiz does not apply it today: there is no countdown.
ai_strictness_levelnumber- From 1 to 10: how strict AI marking of open questions is.
A complete example
Four questions of four different types, with their settings, all marked 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 will not open
When opening a file, CanQuiz does not 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 does not work in a file: it has to be the option's text, written the same way.
Missing settings
Even if you do not want to change anything, the settings object has to be there. Empty is fine.
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 cannot have options. If it has options, it is a question you choose from.
A misspelled type
multiple-choice with a hyphen or MultipleChoice are not types: they are 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 cannot be imported into one.
If what you have is an AI chat's answer
To open an answer from ChatGPT or another AI, it does not have to follow all of this. "Paste text" at app.canquiz.com/abrir is far more forgiving: it finds the quiz inside whatever you paste, understands a correct answer given as a letter, fixes curly quotes and opens whatever arrived whole from a reply that got cut off. The prompt to ask for 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 marking and explanations. An account is only needed to save it, review it later or edit it: once signed in, import it again from My quizzes, because what you open without an account is not saved on its own. The quiz then becomes yours and whoever sent it can no longer change it.
Is the file uploaded to a server?
Not while you stay signed out. The browser reads the file on your device and the quiz runs there. If you choose to save it, then it is stored in your CanQuiz account.
How do I export one of my quizzes as JSON?
Open the quiz in the app, press the export button and choose "JSON (to import back)". The same menu also gives you CSV, for a spreadsheet, and a text file to import into Anki.
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 will not open, first check that every correct_answer is written exactly like its option.
Can another AI or my own program generate it?
Yes, it is ordinary JSON. If a program generates it, follow the fields on this page and the file opens like an exported one. If an AI chat writes it, it is easier to paste its answer into "Paste text", which forgives the usual slips.
Does it open Quizlet, Kahoot or CSV files?
No. CanQuiz only imports its own JSON. It exports to JSON, CSV and Anki, but it does not import from those tools and does not 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 is 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.