A privacy-first assignment editor for authentic student work.
Privacy
- Your work stays private and under your control
- No accounts, logins, or installation
- Data is stored and encrypted locally on your computer
- Your work is never used to train AI models
Academic Integrity
- Automatic revision history tracking
- Replay the full writing process
- Track copy-and-paste activity
- Keyboard entropy analysis helps distinguish authentic writing patterns
About
PISA Editor is a free, web-based assignment editor designed for educational purposes. It requires no installation or user accounts, keeps all your work private, and includes features such as automatic revision history with play-back, keyboard entropy scoring, and copy-and-paste tracking to support authentic student writing and academic integrity.
How it works:
Students complete their assignment normally in PISA Editor. As they work, PISA Editor records revision history, copy-and-paste activity, and writing patterns directly in their browser.
When an assignment is saved, this data is downloaded to the student's computer in one of two ways:
- .pisa file - an encrypted file which contains the full revision history, or
- PDF with embedded link (essay editor only) - includes a link to view the assignment history
Students submit either the .pisa file or the generated PDF.
Instructors can then:
- View the .pisa file on this website by clicking the 'Open' button, or
- Open the link embedded in the PDF
to review the full writing process.
FAQ
Does PISA Editor use AI?
No. PISA Editor does not use AI in any form. The keyboard entropy score is a statistical measure based on the timing between your keystrokes. Your work is never sent to an AI model or used to train one.
Can my instructor see my work before I submit it?
No. Your work is stored only on your computer and it is never sent to your instructor - or anyone else - until you choose to submit it. PISA Editor has no accounts or servers that store your assignments, so there is nothing to share. When you submit your file, your instructor can see your writing activity for that file alongside your final work.
How do I save my revision history?
A revision is automatically recorded once per minute as you write your work. The revisions will be stored within the .pisa file which is downloaded when you click the 'Save' button. To view revisions, upload a .pisa file which was previously saved from this website using the 'Open' button. Then, if you click the 'History' button, the revision history will appear in this output panel below the editor.
What is keyboard entropy?
Keyboard entropy measures how varied and unpredictable your typing pattern is. It is based on the timing between your keystrokes and can help distinguish between natural typing and pasted or automated text.
How can I view my copy-and-paste history and keyboard entropy for a file?
For a file that has been uploaded to this site, press Ctrl+Shift+/ to log the file's keyboard entropy, number of keys pressed, and copy-and-paste history to the output panel.
Can I resize the editor and output panels?
Yes. Click and drag the handle between the editor and output panels to resize them.
I downloaded a .pisa file by clicking the 'Save' button. Why can't I open the file? Or, why does the file look like gobbledygook?
The .pisa file format can only be read by this website. To view its contents, return to this page and click the 'Open' button.
I am trying to open a file, but I do not see it in my computer's directory when I click the 'Open' button. Why can't I find my file?
Files saved from this website are downloaded to your computer’s Downloads folder (or your device’s default download location). When you click the 'Open' button, you may need to navigate to that folder to find your file. Only files with the .pisa extension can be opened.
Essay Editor
Should I save as a .pisa file or export as a PDF?
Follow any guidelines your instructor has given you. If they haven't specified, export a PDF. Instructors unfamiliar with PISA Editor may not know how to open a .pisa file. Note that PDF export is unavailable for very large files, in which case saving a .pisa file is the only option.
Python Editor
Can I start with a blank editor?
Yes, add '#blank' to the URL (e.g. /python#blank) to open the editor without the example code.
Which Python runtime is used?
The editor runs Pyodide by default. When the turtle canvas is displayed, the editor switches to Skulpt to support Turtle Graphics. Note that some packages may not be supported by Skulpt. Unlike Pyodide, Skulpt requires a time limit to prevent an infinite loop from crashing the browser.
Can I import NumPy?
Yes, but only when Pyodide is enabled. If you are an instructor looking to allow your students to import a specific Pyodide-compatible package, email me at contact@pisaeditor.com.
Privacy
This website is built to minimize data collection and protect student privacy with features like client-side encryption. It was designed with FERPA principles in mind. No educational records or student data are stored, shared, or retained by the service. No user accounts are required, and no names, email addresses, or personal identifiers are collected. Instructors only receive assignment data that students explicitly choose to submit.
Assignment content, revision history, keystroke timing data, and copy-and-paste activity are stored locally in the user’s browser while they work. This data is never permanently transmitted to or stored on any server.
When a user saves an assignment, the assignment content is encrypted in the browser with a key that is never sent to the server. The encrypted data is then sent to a Netlify serverless function for processing entirely in memory — the server cannot read the contents of assignments. These server requests are not logged, stored, cached, or retained in any form. Keystroke timing data is never saved and is used only temporarily to compute the keyboard entropy score.
All assignment data is downloaded to the user’s computer in encrypted form, and the user retains full control over their files. Because the server never sees plaintext assignment content, it cannot access your assignments.
This site uses no third-party analytics, cookies, or personal identifiers. Anonymous usage data such as pages visited and general activity patterns is collected using private infrastructure. This data is used solely to help improve the site.
For Educators
Dear fellow educators,
I built PISA Editor to support academic integrity and student understanding in programming assignments. I later adapted the site for writing essays.
To track my students' revision history on their programming assignments, I require that all work and drafts for a given assignment be completed using the same file on this website.
In my programming classes, a significant portion of the grade for each assignment is based on the following criterion:
"Code history demonstrates meaningful engagement with the problem, such as through iterative problem solving, debugging attempts, and logical revisions."
Please note that you can view additional information regarding an uploaded file such as the copy-and-paste history and keyboard entropy score via Ctrl+Shift+/.
You are welcome to use this website in your classes. If you have any questions, suggestions, or would like to report a bug, please reach out to me at contact@pisaeditor.com.
I hope this website is as useful to you as it has been for me.
Updates
2026-04-16: Added Vim keybindings option.
2026-04-15: Added asynchronous Pyodide execution and inline input support.
2026-04-15: Replaced Google Analytics with privacy-friendly anonymous usage tracking.
2026-04-05: Added high contrast theme for accessibility.
2026-04-03: Added draggable handle to resize editor and output panels simultaneously.
2026-03-30: Added landing page. Moved Python editor to /python.
2026-03-24: Added PDF export to essay editor.
2026-03-09: Added client-side encryption.
2026-03-07: Added detection for all text insertion, not just pastes. Added tags to revisions.
2026-03-02: Added Pyodide option for Python execution.
2026-03-01: Visual update.
2026-02-22: Added light/dark mode selector.
2026-01-21: Added mobile landing pages.
2025-10-31: Added history playback buttons.
2025-10-22: Added essay editor.
2025-06-26: Initial public deploy.
2025-06-12: Added turtle graphics.
2025-04-13: Added keyboard entropy analysis.
2025-03-20: Visual update, added tower logo.
2025-03-17: Visual update, added syntax highlighting.
2025-03-01: Initial deploy.
Acknowledgements
Skulpt: An entirely in-browser implementation of Python
Pyodide: A Python distribution for the browser and Node.js based on WebAssembly/Emscripten
CodeMirror: A code editor component for the web
Quill: Your powerful rich text editor
Gruvbox: A retro groove color scheme for Vim
Tower of Pisa image edited from a png provided by Vecteezy: https://www.vecteezy.com/free-png/leaning-tower-of-pisa