gizmobench

Python Playground

Write a short Python 3.14 program, type its input into the stdin box and press Run: the program runs in this browser, not on a server, and its output and any traceback appear in the console. Python here is the pinned Pyodide 314.0.7 build. The first run downloads its 13.5 MB runtime from this site and checks every file against a pinned SHA-256 hash, and later runs on the page reuse it. Each run starts a fresh interpreter in a sandboxed frame that cannot reach the network or this page, and is stopped after two seconds of running, so a loop that never ends costs two seconds rather than the tab. Your code is never uploaded, and there is no account.

consolenot loaded

Press Run, or Ctrl+Enter in the editor. The first run downloads the 13.5 MB Python runtime from this site and checks it against pinned SHA-256 hashes.

Python
3.14.2
Runtime
Pyodide 314.0.7
Run limit
2 s
WASM memory
128 MiB
Packages
Standard library only

Ctrl+Enter (Cmd+Enter on a Mac) runs. In the editor Tab indents and Shift+Tab outdents; press Esc, then Tab, to move on from the editor. main.py and stdin each hold up to 65,536 bytes, and both are kept in this browser until you press Start over.

Examples

Each one loads into the editor with its stdin, and the result beside it is what running it gives.

  • Squares and JSONa function, input() and json
    285 ada 9
  • A dataclassa class, a method and f-strings
    ink 14.00 pen 5.00 pad 3.50 sum 22.50
  • Every stdin linereading sys.stdin to the end
    count 6 total 108 largest 42
  • Word countcollections.Counter on one line of stdin
    the 4 cat 2 saw 2
  • Datesdatetime arithmetic
    Thursday 01 January 2026 2026-04-11 358 days to 25 December
  • An exceptiona traceback that points at main.py
    ZeroDivisionError: division by zero
  • while True: passa loop that never ends
    stopped at 2 s, your code kept
  • bytearray(200 * 1024 * 1024)200 MiB, over the 128 MiB ceiling
    MemoryError
  • 100 MB of print()far past the 64 KiB console
    stopped at 64 KiB of output

What this Python can and cannot do

The language is full Python 3.14.2, and most of the standard library imports: json, re, math, datetime, collections, dataclasses, sqlite3, hashlib, csv, zipfile and unittest among them. These are the edges.

  • Packages
    Only the bundled standard library imports. numpy, requests and micropip are not installed, and nothing can be installed.
  • Network
    urllib, sockets and pyodide.http all fail, for outside addresses and localhost alike.
  • Processes and threads
    subprocess raises OSError, os.system returns -1 and a thread cannot start.
  • Missing modules
    tkinter, turtle, curses, readline, dbm, venv and ensurepip are not in this build, nor are the Unix-only pwd, grp, resource and syslog.
  • Named time zones
    zoneinfo imports but has no time zone database, so ZoneInfo("Europe/London") fails. UTC and fixed offsets such as +05:30 work.
  • Files
    open() works on a virtual filesystem that starts fresh every run. Your code is saved there as main.py in /home/pyodide, and your computer's files are out of reach.
  • input()
    Reads the stdin box one line per call, and raises EOFError when the box runs out.
  • asyncio.run
    Runs in browsers with WebAssembly stack switching. Elsewhere it raises RuntimeError and the console says why.

Runtime, source and licences

This playground runs Pyodide 314.0.7 (MPL-2.0) and CPython 3.14.2 (PSF licence), built with libffi, hiwire, zstd, liblzma from XZ Utils, SQLite, zlib, bzip2 and Emscripten with its musl and LLVM runtime pieces. The WebAssembly file differs from the Pyodide release in one place: bound-pyodide-memory.mjs lowers its declared memory maximum to 128 MiB, and the manifest records both hashes. Every file is served from this site: the 13.5 MB runtime downloads on your first run, and the source archives, notices and recipe (76.9 MB in all) only when you follow their links.

FileWhat it isSizeLicenceSHA-256
pyodide.mjsPyodide loader module (runtime)17.9 kBMPL-2.0 with bundled component notices6f1d60f7bf529beb300f0f47983c921d3982363640ba20af0e38efdddbc66109
pyodide.asm.mjsEmscripten glue for the CPython build (runtime)1.3 MBMPL-2.0 with bundled component noticesf7cdc8ece80678ceb712f8e65ebe6d3a83203a180c399865f49612a051693635
python_stdlib.zipPython 3.14.2 standard library as Pyodide bundles it (runtime)2.5 MBMPL-2.0 with bundled component noticesfa1957e5777068fc4f7437f96d860ae2fbe9c19732ba06c84e004ec16dd7dd7a
pyodide-lock.jsonPyodide lock file, read at startup; no package is installed (runtime)119.1 kBMPL-2.0 with bundled component notices5dc2fc119108bc148c7457dc86e7675b5c87e1cafd420b9c34c1eaef7b36c010
pyodide.asm.wasmCPython 3.14.2 compiled to WebAssembly, memory maximum narrowed to 128 MiB (runtime)9.6 MBMPL-2.0 with bundled component notices6b79a296bbbef8caa85731d6b5662451e824207ae606d7bc45d42af9aa55f629
pyodide-source.tar.gzPyodide source at commit b1e4fcc1.5 MBMPL-2.0a9c7ac66311ed7e0805b9970054ee5be4f69d02204d28bffe4b017310a24bad9
pyodide-NOTICES.txtCollected licence notices for Pyodide and every bundled project359.4 kBBundled source license notices6ac1a3c0f8178d871f93abe6a431f360795f24e28a83531d68bff2262df667f4
bound-pyodide-memory.mjsThe recipe that narrows the WASM memory maximum to 128 MiB1.6 kBMPL-2.0 modification recipeb58debdc825634bc20ec8e66c3ab089f1467135bb47d329cc4e1fe66c9d3252e
pyodide-memory-manifest.jsonSHA-256 of the original and the narrowed WASM, and the page counts618 BFactual provenanceb551c3ae626381232600c905f4f0876f4c415edce0a601db581e484b6bfb3685
source-cpython.tgzCPython 3.14.2 source30.6 MBPSF and Python licences, original per-file licencesc609e078adab90e2c6bacb6afafacd5eaf60cd94cf670f1e159565725fcd448d
source-libffi.tar.gzlibffi source595.1 kBMIT0c4e5647b79e21b900eb872dd98a3e0a66be12b36ad89677f61fd901a2615778
source-hiwire.tar.gzhiwire source27.3 kBMIT0d64144f149c0de3bd157551421833c6c16fdc0492c312a6325ffc25d185c93c
source-zstd.tar.gzzstd 1.5.7 source2.4 MBBSD or GPL dual licence, used under BSDf24b52470d12f466e9fa4fcc94e6c530625ada51d7b36de7fdc6ed7e6f499c8e
source-xz.tar.gzXZ Utils 5.2.2 source, complete1.5 MBliblzma public domain; the XZ build tools carry GPL and LGPL terms and are not linked into the runtime73df4d5d34f0468bd57d09f2d8af363e95ed6cc3a4a86129d2f2c366259902a2
source-sqlite3.tar.gzSQLite 3.39.0 source3.1 MBPublic domaine90bcaef6dd5813fcdee4e867f6b65f3c9bfd0aec0f1017f9f3bbce1e4ed09e2
source-emscripten.tar.gzEmscripten 5.0.3 source34.5 MBMIT and NCSA, with bundled musl and LLVM noticesb32ce4192bae12f15b06b1eec67b7ea6ac8ae809fc81230a43354c3c24251360
source-zlib.tar.gzzlib 1.3.1 source1.6 MBzlib licence17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c
source-bzip2.zipbzip2 1.0.6 source806.6 kBbzip2 licence, BSD-style9628e7bc598719335ce1d1219c1a4fc241652c0a7b4d993fa82a9b98a6c5dec6
Accuracy. Python 3.14.2 runs through Pyodide 314.0.7 inside your browser, not on a hosted Linux machine, so there are no pip packages, network, subprocesses, host files or page DOM. Each run gets a fresh worker and virtual filesystem and is stopped after two seconds of running. The 128 MiB ceiling caps Python's WASM memory, not everything the browser tab uses.

Common questions

Does this online Python compiler support input()?
Yes. Type the program's input into the stdin box before you press Run. Each input() call reads the next line, sys.stdin reads all of it, and when the lines run out input() raises EOFError, which the console explains. The stdin box holds up to 65,536 bytes, the same limit as the editor.
Can I install packages like numpy or requests with pip?
No. This playground runs the Python standard library only: there is no pip, and numpy, requests and micropip are not installed. Most of the standard library imports, including json, re, math, datetime, collections, dataclasses, sqlite3, hashlib and csv, and the page lists the modules and features that are missing.
Which version of Python does it run?
Python 3.14.2, through Pyodide 314.0.7, which is CPython compiled to WebAssembly. The version is pinned: the page loads the same files every time, checks each one against its SHA-256 before anything runs, and sys.version reports 3.14.2.
What happens if my program has an infinite loop?
It is stopped two seconds after it starts running, and the console says so. Every run has its own worker inside a sandboxed frame, and at the deadline the frame is removed, which ends the worker however busy it is. Your code stays in the editor. The Stop button ends a run sooner, and a run is also stopped once it has printed 64 KiB of output.
Is my code sent to a server?
No. Your code runs in your browser and is never uploaded. The only files this tool downloads are the Python runtime's own, from this site, on your first run. Your code and stdin are kept in this browser's local storage so they are still here next time, and the Start over button forgets them.
Can my program use the internet, files or other programs?
Not the internet: urllib, sockets and pyodide.http all fail inside the sandbox. Files work on a virtual filesystem created fresh for every run, so a program can write a file and read it back within one run, and nothing on your computer is reachable. subprocess and os.system cannot start programs, and threads cannot start.
How much memory can a program use?
Python's WebAssembly memory is capped at 128 MiB. The runtime file declares that maximum, so a program that asks for more, such as bytearray(200 * 1024 * 1024), gets a MemoryError instead. The cap covers Python's WASM memory, not everything the browser tab uses.

Python 3.14.2 runs through Pyodide 314.0.7 inside your browser, not on a hosted Linux machine, so there are no pip packages, network, subprocesses, host files or page DOM. Each run gets a fresh worker and virtual filesystem and is stopped after two seconds of running. The 128 MiB ceiling caps Python's WASM memory, not everything the browser tab uses.