When Canvas marks your work “Missing”
Canvas marks an assignment Missing on its own only when four things are true: the due date has passed, you have not submitted, it has not been graded, and it is meant to be turned in online. Excused work is never marked Missing. So work done on paper, or through an outside tool, is never marked Missing automatically, with one exception: New Quizzes. And once an instructor grades the assignment, it stops counting as missing unless they mark it Missing themselves. An instructor can also set the Missing status by hand, and that overrides the rest.
What you see
Two things confuse students, and they are opposite cases.
You did a lab worksheet on paper and never turned it in. Canvas does not call it Missing. Nothing in Canvas suggests it is due, and nothing says you are behind.
Or: a quiz you know you took shows as Missing, or shows no submission. Or an assignment you missed stops showing as Missing the day your instructor enters a zero. In each case the label is following Canvas's rule, which is narrower than "you owe this".
Why it happens
Canvas decides whether a submission is missing with a short list of checks, in this order:
- Excused? Then it is not missing.
- A custom status? Schools can define statuses of their own. If one is set, it is not missing.
- Graded, with no status set? Then it is not missing. A grade, zero included, takes it out of the Missing count.
- A status your instructor set? Then that decides it: Missing if they chose Missing, not missing otherwise. A status set by hand wins over everything below.
- Submitted? Then it is not missing. Late, perhaps, but not missing.
- Not past due yet? Then it is not missing. An assignment with no due date is never past due, so it is never missing (see assignments with no due date).
- Otherwise it is missing only if it is a New Quiz, or if the assignment expects a submission in Canvas.
The last check is the one that surprises people. An assignment "expects a submission" when it has a submission type and that type is not on paper, not an external tool, not "no submission", not "not graded" and not a page. Work set up as on paper or in an outside tool is never automatically missing, because Canvas has no way to see whether it arrived. New Quizzes run as an external tool but count as an exception and can be marked missing.
There is a small allowance for quizzes: for Classic Quizzes and New Quizzes, Canvas takes 60 seconds off the submission time before comparing it with the due date.
What you can check
- Look at the assignment's submission type, on the assignment page. If it is on paper or an outside tool, Canvas will not mark it Missing on its own, so the lack of a label tells you nothing.
- Do not read "not Missing" as "done". Graded work, excused work and undated work are all "not Missing" too.
- If a quiz you took shows Missing, check the quiz's own page for your attempt and when it was submitted, then ask your instructor.
- If the label looks wrong, ask your instructor. A status set by hand overrides the automatic rule in both directions, and only the instructor can set it.
What an instructor or admin can do
- Set the Missing status by hand for paper and outside-tool work you know did not arrive. Canvas will not set it for you.
- Know that grading clears it. Entering a score, zero included, takes an assignment out of the automatic Missing count unless you also set the status.
- Excuse instead of zeroing when the work is not owed. Excused work is never missing.
- Give online work a due date. Without one, Canvas never marks it missing.
Evidence
canvas-lms, app/models/submission.rb:2825-2834 (master at 1c9f0bb, retrieved 2026-11-01), the rule:
def missing?
return false if excused?
return false if custom_grade_status_id
return false if grader_id && late_policy_status.nil?
return late_policy_status == "missing" if late_policy_status.present?
return false if submitted_at.present?
return false unless past_due?
for_new_quiz? || assignment.expects_submission?
end
canvas-lms, app/models/submission.rb:2837-2839, the New Quizzes exception: for_new_quiz? is true when the submission or its assignment is marked as a quiz run through the New Quizzes tool (cached_quiz_lti?, quiz_lti?).
canvas-lms, app/models/abstract_assignment.rb:3646-3654. expects_submission? requires a submission type that is not an external submission and is not none, not_graded or wiki_page; the external ones are:
def expects_external_submission?
%w[on_paper external_tool].include?(submission_types)
end
canvas-lms, app/models/submission.rb:2854-2863. Lateness is measured against your own due date (cached_due_date); with none, it is zero. For an online quiz or a New Quiz, the time of submission has 60 seconds taken off:
return 0 if cached_due_date.nil? || time_of_submission <= cached_due_date
time -= 60.seconds if submission_type == "online_quiz" || cached_quiz_lti?
canvas-lms, app/models/submission.rb:276-306, the database version of the same rule (scope :missing), which the missing-submissions API uses (app/controllers/users_controller.rb:1189). It agrees on each check above: excused and custom-status work is excluded, a status of missing set by hand wins, graded work with no status is excluded, a due date is required, and on-paper, external-tool, no-submission, not-graded and page assignments are excluded unless they are New Quizzes (cached_quiz_lti). Its comment on that last check reads "we expect a digital submission". At the edges the two differ: the database version also excludes two internal submission types, and it applies its one-minute grace only to Classic Quizzes, where the Ruby check (:2863) also covers New Quizzes.