Showing results for 
Show  only  | Search instead for 
Did you mean: 
Community Member

How to add Time Stamp for download/upload for a take-home exam

I would like to give my graduate students (both resident and distance) a time-limited take-home exam.  I would like to post the exam (PDF file) as an assignment (so that I can use SpeedGrader to grade their uploaded PDF responses) but I would like to limit their time to complete the exam to a 24 hour period during a week -- each student gets 24 hours to complete the exam starting from the time they download the exam PDF file until they must submit their responses, but each student can download the file and start the exam at any time during the week.  Is there a way to track the time between when a student downloaded a file and when they submit their answers?  It was pretty easy to track this kind of thing when I used ANGEL, but I cannot figure out to set up things in Canvas so I can track the elapsed time between when a student first downloads a file from an assignment and the time when they submit their answers.  Is this possible?

Tags (2)
7 Replies

I don't think you could get a reliable time stamp of when the student downloaded the file through the UI. I don't think  "Teacher" permissions would allow you to get it from the other data sources either. Though I am curious of one possibility;  @James ‌, do you know if your‌ would provide data that could show conclusively when a student downloaded the attached file from an assignment?

Community Champion

The access report shows the first access and last access, but not the time that it was downloaded unless there is only one access and the student happened to download it.

In Summer 2015, I did something similar with a Finite Mathematics course I was teaching online. I generated an exam for each student using some PERL code that generated a LaTeX version of the exam. I then wrote an LTI that the student clicked on when they were ready to download the exam. That LTI searched the LaTeX code for a certain string, like %timecode% (I don't remember exactly) and replaced it with the time that the exam was due, which was in 2 hours. I could have put the current time, but I thought it would be better if the student saw when it was due, not when it was started. It then delivered the PDF to them and they had to have the ability to print, complete, and either scan or use CamScanner or similar program to get it back to me. I had them email it to me to avoid the extra hassle of uploading it into Canvas within the 2 hour time period, but if they had 24 hours to do it, you could make them submit it through Canvas. I had them run a trial version before the first exam to make sure they had everything they needed and were comfortable with the process or they had to come to campus and sit in our testing center to complete the exam.

Community Champion


You always come up with such great tools for workarounds to usability needs.  I just want to thank you as we use some of your work.

Community Team
Community Team

Hi  @dar119  - It's been about two weeks since we last heard from you. Did the response from  @James  resolve your issue/concern? For now, I will mark this question as "Assumed Answered"; that will not prevent you or others from responding. If there is a workable solution posted here, please mark that answer as "Correct"--and if you arrived at a different solution, please take a moment to update the thread. Thanks!

Community Member

 @KristinL ‌, sorry for the delay -- I was away on Spring break last week . . .  the reply from James Jones would be a workaround -- but what I really wanted was a way to obtain a time stamp within Canvas without having to use external methods.  I don't really have time to write PERL code to generate a unique LaTeX exam copy for each of my 45 students, and I don't want to have students email me their individual PDF files for me to grade offline and return to them. I wanted students to be able to submit their exams to Canvas so that I could grade them using the Canvas SpeedGrader app.  What I really wanted was a way within Canvas (as I used to be able to for ANGEL) to see the time that a student accessed a file that I had posted to Canvas.    I guess what I would really like is a button (or entry field) within Canvas that I could select if I wanted to see the time stamp when a student accessed a particular assignment. I will check to see if awilliams‌'s suggestion of looking at the Access Report for the entire course provides that kind of information. Or, perhaps as James suggests, I can just use the time for the "first access" and warn students beforehand that the clock starts ticking as soon as they access the exam assignment, so they shouldn't access the exam assignment until they are ready to download and begin working on the exam.

New Member

It seems that when a student downloads a file from a file folder, a time stamp is created in the student access report.  This might provide the time stamp that you need.  Recent downloads are only indicated by a number of hours, but after 2 days the time stamp is specific to the minute.

0 Kudos
Community Champion

Since COVID hit and everything went online, I have stopped using the approach I described above. I still use the PERL code to generate a bunch of random versions of the exam. This is completely optional, but good for keeping students from cheating, even though I make them sign an honor statement.

I upload all of the versions of the exams to Canvas as files and then change the folder to be one so that you cannot access it without a link.

Then I create a quiz (legacy quizzes) with a question group that is set to deliver 1 question. I then make a question within that group for each of the versions of the exam that I uploaded. 

The student sees a link to download the PDF when they take the test and if anyone hovers over the link, they can see what version of the exam they were given.


I could be more coy about the name of the file, but it quickly allows me to identify which version they got. I'm finding out that many of my students do not print out the exams, which would have the identifier on it.

I set the timer on the quiz to be the available time so students can use it as a countdown to how much time they have left. I make the quiz worth 0 points or I put it into an assignment group worth 0% of the grade. There is a separate assignment for submission so that I can use SpeedGrader to grade it. I have a rubric set up for each question, so it makes grading go a lot faster and the student can see the breakdown rather than just an overall score.

The start time is a little tricky to determine, but there are a couple of ways I can figure it out without having to dig into the Canvas API and make requests for the detailed second when they started the quiz.

In SpeedGrader itself, I may be able to tell from the top left corner of the screen.

This student took the entire 90 minutes allowed and it was submitted at 10:53 pm, so they started 90 minutes earlier at 9:23 pm.


From the separate assignment for submitting the scanned PDF of the file, I can see that they submitted the exam at 10:53 pm, so they made it within their allowed 90 minutes.


Here is another student that took 78 minutes and didn't run out the clock. They submitted the quiz (basically ending the timer) at 3:59 pm, so they started it at 2:41 pm.


From SpeedGrader, the student didn't submit the exam until 4:43 pm. That is 2:01 after they started it. That would normally be a violation of the 90 minute time limit, but this student had a 1.5 time accommodation and was actually given 2:15 to complete, so it's okay.


If you don't like doing the math yourself but you have Quiz Auditing turned on, then you can click on the View Log link for the quiz. At the top is exactly when they started the quiz.


You can then compare that to the timestamp when they uploaded the file.


None of this puts a timestamp on the actual PDF. Like I said, I'm finding more and more students who just write their answers on a separate sheet of paper instead of printing out the exam and writing on it so it wouldn't be helpful. Pre-COVID, I made them print it or come to school to take it if they didn't have a printer. None of them think to put the version of the exam on what they write, so being able to quickly tell which version the student took from the download quiz is essential. That's where my tooltip comes in.

Of course, you could use the Canvas API to gather all of this information programmatically and then put it into a nice table. So far I haven't had to do that. I've only had 2 students who "lost track of time" by unreasonable amounts. The one time I thought a student took too long, it was an arithmetic error on my part. My instructions warn them to tell Alexa to set an alarm for 85 minutes for a 90 minute exam. Every time I play the video where I demonstrate that, Alexa hears her name and sets another alarm.

The other thing is that I make sure they know how to scan and submit assignments before they begin the exam. They regularly submit written work for homework, so this is just a timed version, but the mechanics are the same.


The Access Report that @alwaterhouse mentioned is good if you can wait the two days for version with the date and time, but most people probably want to grade sooner.


The granularity of to the second is available, it's just rounded to the nearest minute by Canvas. One option would be to use the script I wrote that downloads the access report for the entire course and then extract the information from there for everyone at once. That would save the difficulty of having to do it for each student individually.


0 Kudos