A Browser-based Python Runner playground powered by Pyodide. Try Python code in your web browser. No server, No account, or No payment is required.
Client Side Python is a browser-based Python playground powered by Pyodide.
Python code runs inside your browser tab (WebAssembly, no backend).
This makes it useful for:
- Quickly trying out small Python snippets
- Demonstrating Python basics in a classroom or workshop
- Experimenting with simple numeric or scripting tasks in a safe sandbox
- Showing how WebAssembly + Pyodide can bring “real” Python to the browser
-
Fully client-side execution
- Uses Pyodide to run CPython in WebAssembly.
- No server, No database, No authentication required by default.
-
Simple code editor + console
- Text area for Python code.
- Console area that shows
stdoutandstderr. - Buttons: Run, Stop, Clear, Load Sample, Copy Output.
-
Responsive web UI
- Built with Expo / React Native Web.
- Layout adapts to different viewport sizes (desktop / tablet).
-
Deterministic CI via Docker
- Jest tests run in a Docker container.
On first load, the app:
- Fetches Pyodide from a CDN.
- Initializes the Pyodide runtime and exposes
runPythonAsync. - Attaches custom handlers for
stdoutandstderrso that Python output is streamed into the in-page console. - Uses a simple execution token to implement a soft Stop:
- Each run increments an internal
execId. - If a run finishes with an outdated
execId, its output is discarded. - This prevents stale results from older runs from polluting the console.
- Each run increments an internal
All of this happens in the browser, without any backend API calls.
# set environment variables:
export REACT_NATIVE_PACKAGER_HOSTNAME=${YOUR_HOST}
# Build the image
docker compose build
# Run the container
docker compose updocker compose \
-f docker-compose.test.yml up \
--build --exit-code-from \
frontend_test - Apache License 2.0
