Browse tools

Scratchpad

Ready · recovery is stored in this browser only.

1 line0 words0 characters0 BASCII-only · UTF-8 compatible

Private · no upload · preview is sandboxed and offline
Tab and Shift+Tab change indentation. Press Escape, then Tab to leave the editor. Control or Command with Enter runs a Python file.Enter runs the line. Shift+Enter adds a line without running, for blocks. Up and Down step through what you have already run. When a program is waiting for input, Enter sends the line to it and Ctrl+D ends the input.
About Scratchpad

Browser tool · local only

Scratchpad

Open or draft a UTF-8 text or code file, then download it when you are done. Markdown and HTML can be previewed side by side. Python gets a shell under the editor, sharing one interpreter with Run. Unknown text formats open as plain text. Nothing you type is uploaded. Copy link packs the file into the link itself, so anyone holding that link holds the text.

Files
UTF-8 text · any extension
Syntax
Plain · Markdown · web · data · Python · SQL
Preview
Markdown · HTML
Run
Python 3.14 · Ctrl/⌘ + Enter
Shell
Live prompt · shares the script’s names
input()
Type into the shell · Ctrl+D for EOF
Print / PDF
From the open preview
Open-file limit
2 MiB
Share link
Held in the URL · roughly 12k characters
Recovery
This browser only
Find / replace
Ctrl/⌘ + F
Download
Ctrl/⌘ + S
Keyboard
Tab / Shift+Tab indent · Esc then Tab leaves the editor

Files are decoded and downloaded as UTF-8. Markdown and HTML render in a sandboxed frame with scripts disabled, and it cannot reach the network, so remote images and stylesheets do not load. An open preview can be printed, or saved as PDF from the print dialog, in black on white. Python runs on Pyodide, a build of CPython 3.14 for WebAssembly, in a worker on your own machine: the standard library is there, the file never leaves the browser, and no server runs anything. The editor and the shell share one interpreter. Run restarts it and executes the file, so when it stops you can inspect what it defined from the prompt, and anything you define at the prompt is gone the next time you Run. The runtime is a 12 MB download the first time you use it in a session, served from this site rather than a CDN, and cached by the browser afterwards. Stop shuts the worker down, which is also how you end an infinite loop; Restart clears the names without reloading the runtime. input() works: the program pauses, you type a line into the shell and press Enter, and Ctrl+D ends the input instead. That needs shared memory, which browsers only allow on a cross-origin-isolated page, so this one route sends the two headers that ask for it; if a browser withholds it, everything except input() still works and the shell says so. Third-party packages are not installed, and code only ever runs when you ask, never on opening a file or a link. Other syntaxes are highlighted but never executed. A share link carries the whole file compressed into the part of the URL after the # sign, which browsers never send to a server, so the text still reaches nobody but the person you hand the link to. Treat the link as you would the file: do not put anything confidential in one, and expect long files to be refused because chat clients and mail programs truncate long URLs.