Bulk Import Students into a Class
This article walks through bulk-importing students from a CSV file directly into an existing class. If you’d rather import students to your main student list (and optionally also assign them to a class), see Bulk Import Students instead.
Running the Import
From the dashboard, click the Classes main-navigation option.

Find the class you want to import students into, click its action button, and select Import Students.

A modal will open asking for the import information:
- File upload (required): the CSV file containing the students to import. Download a sample CSV file to see the expected format.
- Class (optional): pre-populated with the class you started from. You can change it to a different class, or clear it — if cleared, students will be added to your main student list but not assigned to any class.

CSV Format
The first row must be a header row. Column names are case-insensitive. Required and optional columns:
| Column | Required? | Notes |
|---|---|---|
first_name |
Required | Student’s first name. |
last_name |
Required | Student’s last name. |
identifier |
Required | Student ID. See identifier rules below. |
email |
Optional | Used to match against existing student records (avoids duplicates). |
Identifier rules: if you want students to bubble in their own ID on the answer sheet, the identifier must be 10 digits or fewer and must contain no letters. Identifiers that exceed 10 digits or contain letters are still allowed, but you’ll need to print sheets with the student data pre-filled rather than relying on bubble-in IDs.
Confirming the Import
After the file processes, you’ll see a review screen where you can verify each row before committing the import.

- Import Type — tells you what will happen for each row:
- Insert — the student doesn’t exist yet; a new record will be created.
- Update — the student already exists (matched by email); their record will be updated with the CSV data. Previous testing data is not affected.
- Action Menu — manage individual rows before committing:
- Edit — change any of the row’s details.
- Delete — remove the row from the import. Deletes only remove the import row; if the student already exists in your account, the existing record stays intact.
- Confirm Import — when everything looks correct, click this to complete the import.
NOTE: If a row matches a student you previously deleted, the import restores that student — along with their testing history — rather than creating a duplicate.
After the import completes, you’ll be redirected to the student view of the class.
NOTE: Very large imports — thousands of rows — are processed in the background. You’re returned to your student list right away and students appear as they’re added, so you can safely leave the page while the import finishes.
Troubleshooting
I get “the import file is empty or could not be read.”
The CSV may be saved with line endings PaperScorer can’t parse, or the header row is missing. Re-save the file as CSV (UTF-8) from your spreadsheet program and make sure the first row contains the column names.
Required column missing.
Confirm the first row of the CSV has all required columns: first_name , last_name , identifier . Spelling and underscores matter; spaces are not allowed in column names.
An import row shows a warning about identifier length.
The student’s identifier has more than 10 digits or contains letters. The import will still complete, but those students will need pre-filled answer sheets instead of bubble-in IDs.
Students are imported but not appearing in my class roster.
Check the Class field on the import modal. If it was cleared, students were added to the main student list only. You can add them to the class afterwards using Adding a Student to a Class.