Archive · retired utility · the lab builds agentic systems now
EST. 20241 makerBuilt in public
EXP-012 · Demo · No signup

Code editor.

A scratchpad with real highlighting. Draft saves to this browser automatically — copy out or download when done.

§ 01

Write & keep

012 / Code Editor
lang javascriptlines 0chars 0cursor 1:1saved

Autosaves per language to localStorage on this device only. Monaco loads from CDN — if it is blocked, a plain textarea appears instead with the same content.

§ 02

About this scratchpad

Why it exists

An online code scratchpad, not another IDE

This page is a scratchpad for code: a fast place to draft a function, sketch a config file, or hold a snippet while you work somewhere else. Open the tab, type, then copy out or download when done. There is no project setup, no account, and nothing to install — deliberately so. It does not try to compete with full code editors; it covers the small job of holding text with real highlighting until you move it somewhere permanent.

The editing surface is Monaco Editor — the editor engine behind Visual Studio Code — loaded from the cdnjs CDN (version 0.33.0). That means proper syntax highlighting, line numbers, bracket matching, and the familiar VS Code editing feel, inside a plain static page. If the CDN is ever unreachable, the page falls back to a plain textarea carrying the same content, so your words are never trapped behind a failed script load.

It is most useful for throwaway work with a short half-life: trying out a JavaScript one-liner, drafting a JSON payload before pasting it into an API client, keeping interview-prep notes in Python, or parking a CSS fragment you are about to move into a stylesheet. For anything that needs to run, build, or live in version control, graduate it to a real editor — this scratchpad is the waiting room, not the house.

§ 03

Languages & downloads

10 languages

Ten languages, each with its own saved draft

The language picker switches highlighting and keeps a separate autosaved draft per language, so your Python notes survive while you sketch HTML. Three editor themes are available — Dark, Light, and high-Contrast — and the status bar under the editor always shows the live line count, character count, cursor position, and the time of the last save.

LanguageDownload extensionGood for
JavaScript.jsSnippets, one-liners, interview practice
TypeScript.tsTyped drafts and interface sketches
HTML.htmlMarkup fragments and email templates
CSS.cssStyle experiments and overrides
JSON.jsonAPI payloads and config files
Python.pyScripts, notes, and automation drafts
Java.javaClass sketches and Android fragments
C#.csUnity and .NET snippets
PHP.phpServer-side fragments and WordPress tweaks
Ruby.rbScripts and Rails-adjacent drafts

The Download button saves the current buffer as snippet.<ext> using the extension above, and Copy puts the whole buffer on your clipboard. Both act on exactly what is in the editor right now — no hidden formatting is added on the way out.

§ 04

Autosave & privacy

On-device only

Your drafts never leave this device

About half a second after you stop typing, the current buffer is written to localStorage — the browser's own on-device storage — under one key per language (mosaic-code-<language>), alongside your picked language and theme. Reload the page next week and the same drafts are still here. Switch from JavaScript to Ruby and back, and each draft is restored untouched.

Nothing is uploaded anywhere. The page makes no data requests of its own; the only network loads are third-party assets (the Monaco Editor files from cdnjs and fonts from Google Fonts). There is no account, no analytics event carrying your text, and no server that could read it — your code physically cannot leak through this page because there is nowhere for it to be sent.

Clearing works in two levels. Reset replaces the current language's draft with the welcome snippet. To wipe everything, clear this site's stored data in your browser settings, which removes all ten language drafts plus preferences. One honest warning: because storage is local, clearing browser data — or switching devices — loses your drafts. Copy anything precious out before you wipe.

§ 05

Honest limits

Scratchpad, not IDE

What this page deliberately does not do

  • No execution. There is no run button, no terminal, and no build step — code is text here, never a program.
  • No projects. One buffer at a time, no files tree, no tabs, no folders.
  • No sync. Drafts live in this browser on this device. A new laptop means a fresh start.
  • No extensions. Editing extras are limited to what Monaco ships over the CDN — highlighting and editing basics, nothing installable.
  • CDN-dependent highlighting. If the Monaco CDN is blocked, you get the plain textarea fallback: same content, no highlighting, zero drama.

If you need execution, debugging, or collaboration, use a real IDE or a runnable playground. This page stays small on purpose — every feature it lacks is a category of bug, account, or subscription you never have to think about.

§ 06

Questions, answered

FAQ
Is my code uploaded anywhere?No. Everything stays in your browser. Drafts are saved to localStorage on your device, and the page makes no network requests except loading its CDN assets (Monaco Editor and fonts).
Where exactly are my drafts stored?One localStorage key per language (mosaic-code-<language>), plus saved language and theme preferences. Each language keeps its own draft, and switching languages restores it.
How do I delete my drafts?The Reset button replaces the current language draft with the welcome snippet. To wipe everything, clear the site's data (localStorage) in your browser settings.
Does it work offline?The first visit needs a network connection because Monaco Editor loads from a CDN. Your drafts persist in localStorage, and if the CDN is ever blocked a built-in plain textarea fallback keeps editing working with the same saved content.
What happens when I switch languages?Your current draft is kept under its own language key, and the newly selected language loads its own saved draft — or the welcome snippet if you have not written in it yet.