⚠️ This page is not a secure context, so OPFS will not work. Serve it over `https://` or `http://localhost` (e.g. `python3 -m http.server`) and reopen.

## Capabilities Pyodide: loading…

Detecting… |

## 1. Save a test file

Writes via the raw OPFS sync access handle in the worker.

Filename Text content Hello from OPFS! Edit me and save.

## 2. List files

Recursively lists the OPFS root, re-read live on every click.

## 3. Load a file

Filename

## 4. Run SQL

Runs against `test.db` in OPFS via Pyodide's stdlib `sqlite3`. The database is loaded into memory, queried, then written back to OPFS via a `createSyncAccessHandle()` read-modify-write (not `mountNativeFS`/`syncfs`, which doesn't reliably persist on Safari), so writes survive a reload everywhere.

Quick queries (fills the box below — then click Run SQL)
SQL (one statement, or multiple separated by `;`) CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY, body TEXT); INSERT INTO notes (body) VALUES ('written at ' || datetime('now')); SELECT * FROM notes;

## 5. Clear OPFS

Deletes every entry in the OPFS root for a clean slate.

## Activity log

Every operation, its duration, and the full result or error.