General
PyAutoGrader is a free tool that helps instructors automatically grade Python programming assignments. Instructors create assignments with test cases, distribute a single encrypted file to students, and students run the grader on their own machines.
Yes. PyAutoGrader is completely free and always will be. No subscriptions, no per-student fees, no premium tiers.
PyAutoGrader runs on Windows, macOS, and Linux. The instructor application, student application, and submission server are all available as pre-built executables for all three platforms.
Unlike subscription-based autograding platforms, PyAutoGrader is free, runs grading on student machines (not a cloud server), and keeps all data on your institution's infrastructure. You do not need to negotiate contracts, sign data processing agreements, or worry about FERPA compliance with a third-party vendor.
For Instructors
Download the instructor application and create a new .agrx working file. Add your test cases (60+ types available), attach solution files, and configure reporting channels. When ready, export an encrypted .agr file to distribute to students. See the Instructor Setup guide for a full walkthrough.
The .agrx file is your instructor working file - it is editable and contains all assignments, solutions, and configuration. The .agr file is the encrypted student file exported from your .agrx - solutions are hidden and tests are locked. You work in .agrx and export .agr for distribution. See Saving and Exporting for details.
PyAutoGrader supports 60+ test types including variable checks, function testing, class validation, control flow detection, matplotlib plot testing, code quality analysis (naming conventions, complexity, docstrings), performance benchmarks, and more. See the Test Types Reference for the full catalog.
Five ways - use any combination. PDF export (students upload to your LMS), email (results sent to you automatically), Google Sheets (grades posted via webhook), a self-hosted Flask server (full dashboard with analytics and plagiarism detection), or a custom webhook. Email and Google Sheets work as silent background notifications. See Reporting Setup for configuration.
A Flask-based submission server you run on your own infrastructure. It provides a dashboard for browsing submissions, analytics (score distributions, trends, at-risk students), plagiarism detection with side-by-side diff, Canvas-compatible CSV export, roster management, and assignment deadlines. Supports HTTP and HTTPS. See Server Setup for full documentation.
Yes. Instructors can configure assignments so that grading is restricted unless the student is connected to and has submitted results to the server.
Yes. You can target tests to specific files, and the student app auto-detects related files in the same directory.
Yes. The instructor application includes batch grading. Download student .py files from your LMS, load them into the instructor app, and export a CSV with per-test scores. See Batch Grading for details.
Roster management is optional - students can type their name freely by default. For validated identity, you can bundle a CSV roster in the .agr file, connect a Google Sheet for live updates, or use the submission server's API. These can be combined with a fallback chain for offline support. See Roster Setup for configuration.
Yes. The submission server includes pairwise code similarity analysis with four metrics (code similarity, comment similarity, combined score, and comment-to-code ratio), color-coded severity thresholds, and a side-by-side diff view with syntax highlighting. See Plagiarism Detection in the Server Setup docs.
For Students
Download the student application from the Student Downloads page. Your instructor will give you a .agr assignment file. Open the app, load the file, select your Python script, and run the grader. You will see instant pass/fail feedback. See Student Usage for a full walkthrough.
You need Python installed on your machine to write and run your code, but the PyAutoGrader application itself is a standalone executable that does not require a separate Python installation.
Grading works completely offline. Your results will be submitted when connectivity is available.
Your code may have an infinite loop or be taking too long. Check for while loops without a break condition, remove any input() calls (the grader cannot provide interactive input), and verify your code completes within the time limit set by your instructor (typically 30 seconds). See Troubleshooting for more help.
No. Solutions and expected values are encrypted in the .agr file and are never visible to students. This is by design - it ensures grading integrity and prevents students from reverse-engineering test answers.
Privacy and Compliance
PyAutoGrader is FERPA-friendly by design. "FERPA-friendly" means your students' academic records never leave your institution's control. Grading runs on the student's own machine, not on a cloud server. If you enable the optional self-hosted submission server, data stays on your institution's infrastructure. There is no third-party data processing agreement needed because PyAutoGrader is not a third party in the grading pipeline - it is software you run. See the privacy page for details on what this marketing site itself collects.
Grading results are generated locally on the student's machine. Depending on how you configure result collection, data may be sent via email (to your inbox), posted to your Google Sheet, or submitted to a server you host. At no point does student data pass through PyAutoGrader's infrastructure.