OMR Scanner Online — Bubble Sheet Grader & CSV Export

Upload a photo of any multiple-choice bubble sheet (Scantron-style, answer sheet, OMR sheet) to grade it instantly — right in your browser. No data ever leaves your device.

Step 1 — Upload Bubble Sheet Photo

📷
Tap or drag to upload a photo
Supports JPG, PNG, HEIC, WEBP — works with smartphone camera photos
Uploaded bubble sheet preview

Step 2 — Configure Sheet Layout

Step 3 — Scan & Grade

The scanner will detect the bubble grid using OpenCV.js, read filled marks, and score against your key — entirely in your browser.

Upload a photo to begin.

Results

How it works

Tips for best results: Use a flat, well-lit photo taken straight-on (not at an angle). The sheet should take up most of the frame. Standard Scantron 882-E, NCS, and generic 4/5-choice sheets work well.

Frequently Asked Questions

Is my test data private? Does the image get uploaded anywhere?
Completely private. The entire OMR scanning process runs in your web browser using WebAssembly (OpenCV.js). Your image never leaves your device — no server receives it. This makes it safe for grading real student answer sheets without any FERPA or privacy concerns.
What types of bubble sheets does this support?
Any standard grid-style bubble sheet where answers are arranged in rows (one row per question) with bubbles for each choice across the row. This includes Scantron 882-E, NCS/Pearson form F-288, generic teacher-made sheets, and custom sheets with 2–8 choices. Sheets with staggered, diagonal, or circular layouts are not supported by the automatic grid detector — use manual grid mode instead.
What if the scanner marks the wrong answer for a question?
Accuracy depends heavily on photo quality and sheet design. For best results: (1) photograph the sheet flat on a desk, not hand-held; (2) use even lighting without harsh shadows or glare; (3) make sure the sheet fills most of the camera frame; (4) if one side is darker, increase the threshold setting. You can also run the scan again on a better photo — multiple scans are free and instant.
Can I grade multiple sheets at once?
Currently one sheet per scan. Upload the next student's sheet after downloading the CSV for the first. For batch grading of a whole class, scan each sheet and append the resulting rows — the CSV download includes a Student column so you can concatenate results in a spreadsheet.
How does the fill threshold work?
After binarising the image to black-and-white, the tool counts what percentage of pixels inside each bubble cell are dark. The default threshold is 40% — a cell darker than 40% is read as "filled". If lightly penciled bubbles are missed, lower the threshold to 25–30%. If smudges or printed borders cause false positives, raise it to 50–55%.
What does the CSV contain?
One row per question. Columns: Question number, Detected answer (A/B/C…), Answer key (if provided), Result (Correct/Wrong/Blank), and Fill% for each choice (so you can audit the confidence of each read). This is ready to open in Excel, Google Sheets, or any gradebook software.