Import students from a photo, PDF or spreadsheet
Snap a photo of your class list, drop in a PDF or a spreadsheet, or type the names in. edunile reads it for you and you just review the rows before saving.
If you're starting the year with a printed class list, a PDF from your old system, a spreadsheet, or even a handwritten roll, you don't have to type each student in. Take a photo, drop the PDF or spreadsheet in, and edunile reads it for you: names, classes, and parent contact details. You then check each row in a friendly table and save. Most school admins finish a class of 30 in under 5 minutes.
Steps
Open Import students
From your dashboard menu, click Students, then click Import students at the top of the page. There is one place to import students, and this is it.
The page opens on A photo or PDF of your list. If what you have is a spreadsheet, or you'd rather type the names in, click Use a spreadsheet or type the names in under the upload area and go to step 6.
Upload the photo, PDF, or screenshot
Drag your file into the upload area, or click to pick it from your computer. The supported types are:
- Photos (JPG, PNG, WebP, HEIC): anything you'd take with a phone.
- PDFs: exported lists, scanned documents, or downloads from your old school system.
- Screenshots: for example, a grab from a parent-shared WhatsApp image.
The hard limit is 10 MB per file. If your PDF is bigger, split it (e.g. one PDF per class).
Wait while edunile reads the file
Once uploaded, edunile reads the file and pulls out every student, their class, and any parent details it can find. A progress bar says Reading your file… while it works. For a single class this usually takes 5–15 seconds.
If the page refreshes or your connection drops while it reads, reload the page. It comes back to the same import rather than starting over.
Review the rows in the table
When extraction finishes, you'll see a table with every student the AI found. Each row has:
- First name and last name: editable if a name was misread.
- Class: the AI tries to match the class name on your list (e.g. JSS 1A) to a class in your account. Where the match is confident, the row is set automatically. Where it's unsure, you'll see a dropdown to pick the right class yourself.
- Parent name, phone, and email: picked up where they appeared on the source. Optional, but worth filling in if you have them.
Look out for:
- Yellow warnings at the top: global issues like "the AI wasn't sure of the school logo on this image".
- A small flag on individual rows: usually a low-confidence match or a missing field.
You can fix a row by clicking into any field and typing. You can also delete a row (the trash icon) or add a missing student manually (the Add row button at the bottom).
Confirm and save
When every row has a first name, last name, and class assigned, the Confirm and import button at the bottom of the page turns on. Click it.
edunile creates each student record one by one. For 30 students, this takes 5–10 seconds. When it finishes, you'll see a success panel with a link to View students, where you can spot-check the records.
If two students happen to share a parent (siblings on the same row's contact), edunile automatically links both to one parent account, no extra step needed.
Or use a spreadsheet, or type the names in
Click Use a spreadsheet or type the names in under the photo upload. (If edunile can't read photos just now, the page opens here on its own.)
At the top you'll see which year and term the students go into, for example 2026/2027 · First Term. It is your school's current term already; click Change only if the list is for a different year.
Then choose one of the tabs:
- Upload CSV/Excel: beside Templates, click CSV or Excel to get a file with the right column headings and one example row. Fill it in, one student per row, then drop the file into the box.
- Paste any list: paste the names straight from a document or a WhatsApp message and click Extract rows. This tab only shows while edunile can read lists for you.
- Type manually: click Open empty table and type each student in. Best for a small class.
Every row appears in a table before anything is saved. Fix any flagged cell, pick a class for any row that doesn't have one, then click Import (the button counts your rows, for example Import 34 records). edunile saves them in the background and tells you when it's done. Your rows are kept if you refresh the page or lose your connection before you click it.
Common issues
- There's no photo upload, only the spreadsheet tabs
edunile can't read photos just now. It's usually brief maintenance, and most schools never see it. The page opens on the spreadsheet importer instead, which still works: upload a CSV or Excel file, or type the names in. Try the photo again in a few minutes.
- The AI got several names wrong
Handwriting and photo quality are the usual culprits. You can fix names directly in the review table without re-uploading. For the future, photos work best when:
- The list is printed or typed (not handwritten).
- The phone was held flat over the page, not at an angle.
- There's no glare from a window or overhead light.
- A student's class is dropped down to 'Pick a class'
The AI wasn't confident enough to match the class name on your list to a class in your account. Just pick the right class from the dropdown and move on. If you do this for many rows, double-check the class names on your Classes page match how they appear on your source list (e.g. JSS 1 A vs JSS1A).
- It says I've used all my free imports
Each school gets a set number of photo and PDF imports, enough for 600–1,000 students for most schools. The number doesn't reset each month. Spreadsheets, pasted lists and typed names don't count against it, so you can carry on with those. If you need more photo imports, contact support and we'll extend it for you.
Cancelled photo imports still count. If you uploaded the wrong file by accident, finish the review with at least one valid row to make the upload count for something, rather than cancelling.
- My PDF is bigger than 10 MB
Split it into smaller PDFs (most PDF readers have an "Extract pages" or "Split" option) and import each one separately. Each file counts as one import against your allowance, so try to fit a whole class into one file when you can.
- My spreadsheet has different column names from the template
Upload it anyway. edunile recognises ordinary headings like First Name, Class or Parent Phone and shows you the result to check. If a column still comes through empty, rename that heading to match the template (download it from Templates) and upload again.