ExamGrader

Optical Mark Recognition · in your browser
No upload · runs offline

Test library

Each saved test gets a code number that's printed as a little block-code on its sheets. When you grade, the app reads that code, finds the matching test here, and grades against the right key automatically. Everything — tests and results — also lives in this browser, and you can keep a portable copy as a data file. If you put ExamGrader-DATA.json in the same folder as this page and open it from a local server, it loads automatically on start.

Generate a bubble sheet

Pick your test size and print the sheet. The black squares in the corners are alignment markers — the scanner uses them to straighten any photo, so don't cover or crop them. Students fill bubbles with dark pen or pencil.

Print or save

Print at 100% scale (no "fit to page" shrinking) onto plain white Letter paper. You can also save a PNG and print it later from your phone.

Tip: generate one sheet, photocopy it for the whole class. Every copy reads the same. Set the answer key below, then grade.

Answer key

Tap the correct choice for each question. You can tap more than one to make a "select all that apply" question. Leave a question blank to skip it in scoring. Or lift the key straight from a master sheet you filled in yourself.

0 set Max 0 pts

Grade filled sheets

Add phone photos, scanned images, or a multi-page PDF (one sheet per page). Each sheet becomes one student result. Keep the whole sheet in frame and reasonably flat.

Drop sheets here
or tap to choose images / PDF — you can add a whole batch at once
Sensitivity 0.32

Results

Item analysis

Percentage of students who got each question right. Low numbers flag confusing questions or a mis-keyed answer.

Grade some sheets to see analysis.