The Lab

Tools I ship,
free to use.

A growing collection of fast, privacy-first web tools. Built in public, one at a time. Everything runs in your browser, no sign-up, no upload.

Layout engine · Explorable

Freespace

A complete CSS flexbox layout engine, written from scratch in plain JavaScript, laying out boxes right next to your browser doing the same job with real display:flex — so you can see the algorithm that is normally invisible. Move a slider and the panel underneath fills in with the actual numbers the spec asks for: each item’s flex base size and where it came from, the line breaking, then the loop that resolves flexible lengths pass by pass, freezing every item that hits a min or a max and redistributing what is left to the others. It is the answer to the two questions everyone has about flexbox. Why does flex-grow: 2 not make an item twice as wide? Because grow divides the leftover free space, not the container, and you can watch the ratio drift as you drag the width. Why does an item refuse to shrink and overflow instead? Because min-width defaults to auto on flex items, which resolves to roughly the size of its content rather than to zero, and the trace shows it freezing there. The honest part is the comparison: after every change both layouts are measured box by box and the badge reports the largest difference in pixels, and a fuzz button generates 400 random containers and items and checks every one against your browser, so the engine has to prove itself instead of being taken on trust. Ten presets for the classic puzzles, the CSS to copy, and nothing uploaded.

Flexbox spec from scratchLive diff vs your browser400-case fuzzerNo dependencies
Use tool →
Game networking · Explorable

Ghostframe

Two complete game clients, side by side, connected by a fake internet whose latency, jitter and packet loss you control with sliders. Play one of them and watch the other predict you, get it wrong, and quietly re-simulate the last few frames to catch up. This is rollback netcode, the technique fighting games use so your own inputs never feel late: the client runs ahead using a guess for what you are pressing, snapshots the game state every frame, and when your real input arrives and contradicts the guess it restores the snapshot and re-runs every frame since, all inside one displayed frame. Because both clients are on screen at once you can see the thing that is normally invisible — the orange ghost marking where the peer was believed to be before a correction, a per-frame timeline colouring each frame as confirmed or predicted with red spikes where rollbacks happened, and live counters for prediction hit rate, rollbacks per second and how many times the simulation actually ran per frame drawn. Flip to delay-based lockstep and the game stops guessing and starts freezing instead; flip to naive and both clients desync on the first frame and never recover. The physics is deliberately integer-only, positions at a 1/64 pixel fixed-point scale with a hand-written integer square root, because re-simulation has to be bit-identical or none of it works — and both clients hash their state every frame so the page can show you, live, the newest frame it has verified identical on both sides. No server, no account, nothing uploaded.

Rollback + predictionDeterministic fixed-point simState hash desync checkNo server
Use tool →
Audio DSP · Real-time auto-tune

Retune

Sing into your mic and hear yourself auto-tuned to a musical key, live, with the whole thing running inside the browser tab. There is no server and nothing is uploaded — when you press start, the page opens your microphone with the Web Audio API and streams it through an AudioWorklet, a piece of DSP that runs on the browser’s real-time audio thread, so the corrected voice comes back with only a few milliseconds of delay. Many times a second it estimates the pitch of your voice with the YIN algorithm, snaps that to the nearest note allowed by the key and scale you picked, and works out the exact ratio between where you are and where you should be. The worklet then pitch-shifts your live audio by that ratio using a granular overlap-add shifter with two crossfaded grains, so the sound stays continuous while it stretches the waveform. The retune-speed knob is the whole trick: at zero it yanks your pitch to the target instantly and holds it, quantizing your singing into hard steps — the robotic T-Pain sound — and turned up it glides in gently and fixes flat notes without anyone noticing. A live tuner ribbon draws your raw pitch against the snapped result so you can watch the correction happen, and you can record the corrected output and download the clip. Chromatic, major, minor and pentatonic scales, any key. Nothing you sing ever leaves your device.

Web Audio · AudioWorkletYIN pitch detectionGranular pitch-shiftNo upload
Use tool →
On-device AI · Semantic map

Atlas

Paste any list of words or sentences and watch a real AI model lay them out on a map by meaning — fruit drifts to one corner, animals to another, and a word like “bat” lands quietly between the animals and the sports gear. Each line is turned into a 384-number vector by all-MiniLM-L6-v2, the same sentence-embedding model behind a lot of production search, running through Transformers.js on WebAssembly inside a Web Worker so the page never freezes. Those 384 dimensions are flattened to a 2D point with principal component analysis written from scratch, so distance on the screen is roughly distance in meaning. The colour groups come from k-means run on the full vectors, and the search box does what a vector database does: it embeds your query into the same space and ranks every item by cosine similarity, so typing “something you eat” lights up the foods even when they share no letters with your query. Click any point for its nearest neighbours, slide the cluster count and watch the groups re-form instantly, or hit “show near-duplicates” to catch the items that are really the same thing worded differently. The ~23 MB model downloads once and then works offline, and nothing you paste ever leaves your device. Great for making sense of survey answers, feedback, tags, or a messy backlog.

Transformers.jsall-MiniLM-L6-v2PCA + k-means from scratchNo upload
Use tool →
Chess engine · Explorable

Gambit

Play a chess engine and watch it think while it does. Most chess apps show you the move and throw away the reasoning; this one puts the search on screen. While the engine is working you see the moves it is weighing at the top of its search, each one scored on a live bar, the ranking reshuffling as it looks deeper, and the principal variation — the line it expects if both sides play the best replies it can find. The engine is written from scratch in plain JavaScript with no chess library: a 0x88 board, full legal move generation with castling, en passant and promotion, alpha-beta search with iterative deepening, quiescence search so it never miscounts a trade halfway through, capture-first move ordering, and an evaluation built on material plus piece-square tables. It runs in a Web Worker, so the board stays responsive while it searches. Move generation in chess is either exactly right or quietly broken, so the page ships a perft panel: press the button and it counts every legal position to a fixed depth from six standard test positions and compares against the counts chess programmers have published, including Kiwipete — you can check the engine’s correctness yourself rather than take it on trust. There are preset positions to load, including a mate in two where you can watch the score jump to M2 the moment the search gets deep enough to see it. No server, no account, and it keeps working offline.

Alpha-beta from scratchSearch visualiserPerft verifiedNo dependencies
Use tool →
Developer tool · WebAssembly

Wasmscope

Drop in any .wasm file and actually read it. You get the full section breakdown with a size bar for each one, so you can see which part of your module is really eating the bundle, plus every import, export, global, data segment and the memory it asks for. Pick a function and you get a real disassembly in WebAssembly text format, with byte offsets down the left and the block structure indented. Then the part browsers won’t give you: press Step and run that function one instruction at a time, watching values push and pop off the operand stack while locals, globals, the call stack and a live hex view of linear memory update underneath. The WebAssembly API only hands you a compiled function to call — there is no way to pause it or read its stack — so this page carries its own WebAssembly implementation instead: a binary decoder, a disassembler and a stepping interpreter written from scratch in plain JavaScript with no dependencies. To prove the interpreter is honest, every run is also executed by your browser’s real engine on the same inputs and the two answers are shown side by side with a match badge. It was checked the same way before shipping, against Node’s engine across 128 numeric opcodes and about 28,700 argument combinations, including divide-by-zero traps, integer overflow, float rounding half-to-even and out-of-bounds memory access. There is a sample module built in so you can start without hunting for a file, and nothing you open is ever uploaded.

Interpreter from scratchWAT disassemblyNo dependenciesNo upload
Use tool →
Artificial life · Continuous CA

Lenia

A real continuous cellular automaton running live on your GPU. Lenia is Conway’s Game of Life taken continuous: every cell holds a value between 0 and 1, the neighbourhood is a soft fuzzy ring instead of eight square cells, and time moves in small steps — and out of those smooth rules, life-like creatures emerge on their own. Load the famous Orbium and watch a little crescent swim across the grid holding its exact shape, the continuous cousin of the Game of Life glider. Every step is a convolution with the Lenia kernel followed by a bell-shaped growth function, run once per cell in a WebGL2 fragment shader that ping-pongs two floating-point textures each frame, so tens of thousands of cells each summing hundreds of neighbours stay comfortably real time. Grow a primordial soup that self-organizes out of pure noise, nudge the growth centre and width to morph the whole world between isolated blobs, writhing rotors and branching coral, or paint your own blob of life with the brush and see what it becomes. The grid wraps like a torus, so a creature that leaves one edge returns on the other. Nothing is uploaded; the whole simulation runs on your machine.

WebGL2Continuous cellular automataOrbium gliderNo upload
Use tool →
Explorable · Neural network

Synapse

Draw two blobs of dots, press play, and watch a real neural network learn to tell them apart in front of you. This is a genuine multilayer perceptron: the forward pass, the cross-entropy loss and the full backpropagation are all written from scratch in plain JavaScript, with no TensorFlow and no library of any kind. The coloured background is the network’s live opinion about every point on the plane, redrawn each training step as the boundary bends itself around your data, and half your points are held out as a test set so you can catch it overfitting. Add hidden layers and watch the famously hard two-spiral dataset finally crack; delete a layer and watch it fail because a single layer can only make straight cuts. Every neuron shows a little tile of the feature it has learned, and the edges between them are the weights — blue pulling the answer one way, orange the other, thickness for strength — so you can literally see simple edge detectors combine into curves. Switch between tanh, ReLU and sigmoid, between Adam and momentum SGD, dial the learning rate, noise and L2 regularisation, then export the trained weights plus a dependency-free predict() function. Nothing is uploaded; the whole thing trains on your device.

Backprop from scratchNo librariesLive boundaryNo upload
Use tool →
Web3 · Live on-chain

Ember

Watch Ethereum’s fee market work in real time: the base fee, how full each block is against its target, and the ETH being burned block by block. Since EIP-1559, every block has a base fee the protocol sets for itself with no auction, and that base fee is burned — destroyed forever — instead of paid to a validator. Ember reads it straight from a node in your browser: a gauge shows how full the last block ran, and because a block over the 50% target pushes the base fee up by up to 12.5% while an emptier one pulls it down, you can see cause and effect happen live. It also multiplies base fee by gas to tally the ETH going up in smoke since you opened the tab, and shows what a transfer, a token send, a swap or an NFT mint costs at this exact moment in both gwei and dollars. No wallet, no sign-up, no server — it only ever reads public chain data, cycling across several nodes so it stays live.

EIP-1559JSON-RPCETH burnNo wallet
Use tool →
WebGPU · Reaction-diffusion

Morphogen

Grow living Turing patterns from a real Gray-Scott reaction-diffusion simulation, solved on your graphics card every frame with WebGPU compute shaders. Two virtual chemicals spread at different speeds while one reacts with the other, and spots, stripes, mazes, coral and self-replicating mitosis fall out of the maths on their own — the same mechanism Turing proposed for leopard rosettes and seashells. A compute shader runs once per cell in parallel over hundreds of thousands of cells, ping-ponging two buffers each step; because it’s a live simulation and not a video, you can reach in and paint chemical B into a disc of cells and the field takes it from there. The clever part is the pattern map: only the feed and kill rates really matter, so the whole space is a little navigator you click through to jump between regimes, including the blends nobody named. Nine presets, six palettes, seamless wrap-around tiling, and PNG export for wallpaper. Nothing is ever uploaded.

WebGPU computeGray-ScottTuring patternsNo upload
Use tool →
On-device AI · Super-resolution

Upscale

Upscale and sharpen any image 2× or 4× with a real AI super-resolution model that runs entirely on your own device — no upload, no watermark, no per-image cost. Upscale runs Swin2SR, a Swin Transformer v2 super-resolution network, through Transformers.js on WebGPU where your browser supports it and WebAssembly everywhere else, all inside a Web Worker so the page never stutters. The hard part is doing it to a full-size photo without blowing up memory: the image is cut into overlapping tiles, each tile is upscaled on its own, and the pieces are stitched back with a feathered weighted blend across the overlap so no seams ever show. Three modes — a fast 2× sharpen, a 4× maximum enlarge, and a 4× mode tuned to strip JPEG blocking out of compressed photos and screenshots. Drag a before/after slider to compare, then download the PNG. Try the built-in sample or drop your own; the model downloads once, then works offline, and nothing you upscale ever leaves your machine.

Transformers.jsSwin2SRWebGPU / WASMTiled + no upload
Use tool →
Audio · Chord & key detection

Cadence

Drop any song and get its chords, musical key, and tempo — worked out live in your browser, with nothing uploaded. Cadence decodes your audio with the Web Audio API, runs an FFT to build a chromagram of how much of each of the twelve notes is sounding at every moment, then matches each instant against all 24 major and minor triads and smooths the sequence with a Viterbi decoder so the chords hold instead of flickering. The key comes from correlating the song’s note profile with the Krumhansl-Schmuckle key profiles, and the tempo from an onset-strength envelope run through autocorrelation. Watch a colour-coded chord map and a live chromagram scroll under the player, click anywhere to seek, and copy the whole progression as a chord sheet. Try the built-in sample or drop an MP3, WAV, M4A, FLAC or OGG — it works offline, no model to download.

Web AudioChromagram + FFTViterbiNo upload
Use tool →
On-device AI · Reading comprehension

Inquire

Paste a contract, report, or article, ask it a question in plain English, and watch a real AI reach into the text and highlight the exact answer — all without a single byte leaving your machine. Inquire runs a DistilBERT model fine-tuned on SQuAD as ONNX weights through Transformers.js on WebAssembly, in a Web Worker so the page never stutters. Because it does extractive question answering, it never invents facts: it locates the passage that answers you and shows a confidence score, so every answer is traceable back to the source. Documents longer than the model's context are split into overlapping windows, each scored, and the single most confident answer across the whole thing wins. Try the built-in sample lease, drop a .txt / .md / .pdf, and ask away — the ~65 MB model downloads once, then works offline.

Transformers.jsDistilBERT SQuADWebAssemblyNo upload
Use tool →
On-device AI · Neural style transfer

Paint Cam

A real neural network repaints your webcam into a living painting — and the whole model runs on your own GPU, right in the tab. Paint Cam loads a tiny fast-neural-style network (about 6.7 MB) and runs it with ONNX Runtime Web through WebGPU: every frame, your camera image is turned into a tensor, pushed through the net on your graphics card, and painted back to the canvas at video rate. Pick from five classic styles — Candy, Mosaic, Rain Princess, Udnie, Pointilism — dial the style strength from a light filter to a full repaint, then snapshot a PNG or record the canvas to a clip. No camera? Drop in a photo instead. A sample styles itself on load, and nothing you point it at ever leaves your device.

ONNX Runtime WebWebGPULive webcamNo upload
Use tool →
Procedural · Wave Function Collapse

Collapse

Paint a tiny example and watch a Wave Function Collapse solver learn its rules and generate an endless, coherent tilemap in real time. It slides a small window over your drawing, collects every little tile it sees, and works out which tiles are allowed to touch — then fills a blank grid so every neighbourhood matches, one cell at a time. You literally watch the picture condense out of fog as each choice ripples through its neighbours. Six painterly presets, adjustable pattern size, seamless tiling, and PNG export. The whole solver runs in a Web Worker on your machine; nothing you paint is ever uploaded.

Constraint solverOverlapping modelWeb WorkerNo upload
Use tool →
Realtime · Collaborative editor

Cowrite

A shared Markdown document that any number of people can edit at the same time — share a link and watch each other's cursors move as the words appear. Getting that right is harder than it looks: when two people type in the same spot at once, naive syncing loses edits. Cowrite uses a CRDT (Yjs) so every keystroke carries enough identity that all the edits merge deterministically into the exact same document on every screen, with nothing lost and no editing lock. Keystrokes become tiny binary deltas relayed over a realtime channel; the relay never sees a stored copy of your text. Markdown renders to a safe, sanitized live preview on the right as everyone types. No sign-up, no database — the note lives only in the browsers open right now.

CRDT / YjsLive cursorsSupabase RealtimeNo login
Use tool →
3D · Gaussian Splatting

Splat Studio

A photorealistic 3D scan, captured from a handful of photos, rendering live in a browser tab — and you can clean it up. Gaussian Splatting represents a scene as millions of tiny translucent 3D blobs; Splat Studio projects every one to the screen, works out its exact elliptical footprint from a covariance matrix, keeps them depth-sorted in a background worker, and blends them front-to-back, all on your GPU with WebGL2. Drop a .splat or a raw 3D Gaussian Splatting .ply (converted in-browser), orbit it, then switch to crop mode and box away the stray floaters that surround every scan and export a smaller, cleaner file. A sample galaxy is built in so it works with zero setup, and nothing is ever uploaded.

WebGL2Gaussian Splatting.splat + .plyCrop & export
Use tool →
Physics · Wave simulation

Ripple

A real 2D wave equation, solved on your graphics card every single frame. Watch the double-slit experiment build up its striped interference pattern, see one narrow slit spray a wave in every direction, and focus a flat wave to a point through a slow lens — all live. Ripple stores the wave height in a floating-point texture and runs a finite-difference solver in a WebGL2 fragment shader across hundreds of thousands of cells, stepping the grid several times between frames. Paint walls, carve your own slits, drop single ripples, and change frequency and damping on the fly. Nothing is uploaded; the whole simulation runs on your GPU.

WebGL2Wave equationDouble-slitRuns on your GPU
Use tool →
Systems · RISC-V CPU

RISC-V Studio

Write RISC-V assembly, assemble it to real machine code, and single-step a genuine RV32I processor — all in a browser tab. It is a real fetch-decode-execute core: your text is turned into actual 32-bit instructions laid out in a simulated memory, and the CPU reads each word, decodes the opcode and register fields out of the raw bits, and runs it. Watch all 32 registers, the console, and every byte of memory update live, and see the exact binary encoding of each instruction split into its hardware fields. Loads, stores, branches, jumps, the stack, and the common pseudo-instructions all work, with samples from Fibonacci to a recursive factorial. No install, no toolchain, nothing uploaded.

RV32IAssembler + CPUStep debuggerNo upload
Use tool →
Audio · Image to sound

Sonify

Turn any image, word, or doodle into a sound whose spectrogram is that picture — the trick Aphex Twin used to hide a face in a track. Sonify reads your image row by row, turns each row into a pure tone and each pixel’s brightness into how loud that tone is, then renders the whole stack offline with the browser’s own Web Audio engine. Press play and a live FFT redraws your image out of what sounds like noise; download the WAV and open it in any spectrogram viewer to find it hiding there. Nothing is uploaded.

Web AudioAdditive synthesisLive FFTNo upload
Use tool →
On-device AI · Summarization

Distill

Summarize an article, a transcript, or a whole PDF — any length — with a real AI model that runs entirely in your browser. A summarization model only reads about a thousand words at a time, so Distill splits long text into sections, summarizes each one, then summarizes those together, letting it handle documents far longer than the model’s own limit. It also highlights the sentences your summary drew from most. Your text is never uploaded, and once the model caches it works offline.

Transformers.jsDistilBARTMap-reduceNo upload
Use tool →
Media · Frame-accurate video

Framewise

Step through any video one exact frame at a time, right in your browser. A normal player only jumps between keyframes, so it skips the moment you actually want — the frame a club meets the ball, the single sharp frame in a shaky clip. Framewise demuxes the file and decodes every individual frame with WebCodecs, the browser’s own hardware video decoder, all inside a Web Worker so the page never stutters. Onion-skin the previous frame, wipe between any two frames, and save the precise frame you land on as a full-resolution PNG. Your video is never uploaded.

WebCodecsMP4 demuxOnion skinNo upload
Use tool →
On-device AI · Object detection

Spotter

Point your camera, or drop in a photo, and a real AI model boxes and labels every object it sees, live. It recognises 80 everyday things — people, cups, laptops, dogs, cars — and counts each kind as it appears, keeping a thumbnail of every new object it spots. Built on Google’s MediaPipe EfficientDet detector running through WebAssembly and your GPU, so every frame is analysed on your own machine and nothing is ever uploaded.

MediaPipeEfficientDetReal-timeNo upload
Use tool →
Dev tool · Regex internals

RegexLab

See how a regular expression actually runs. Type a pattern and it compiles, on its own from-scratch engine, into a finite state machine you can watch step through your text character by character, with no backtracking. Then it grows a crafted input and charts the step count to expose catastrophic backtracking — the ReDoS bug that silently hangs servers. Two engines, side by side, all in your browser, nothing uploaded.

Thompson NFABacktrackingReDoS detectorNo upload
Use tool →
Physics · N-body gravity

Gravity

A real N-body galaxy simulation running on your GPU. Tens of thousands of stars, each one gravitationally pulling on every other, recomputed every frame with WebGPU compute shaders. Spawn a spiral galaxy, slam two together, or drag your cursor to bend the field.

WebGPUCompute shadersAll-pairs N-bodyRuns on your GPU
Use tool →
On-device AI · Translation

Private Translator

Translate between 100+ languages with a real 600M-parameter neural model that runs entirely in your browser. Your text is never uploaded, and once the model caches, it keeps translating with your internet off — on a plane, in a clinic, anywhere. Powered by Meta’s open NLLB-200.

Transformers.jsNLLB-200WebAssemblyOffline
Use tool →
Real-time · Multiplayer

Pixel Party

A shared 64×64 pixel-art canvas you paint on together, live. Share a link and anyone who opens it places pixels next to you in real time, with their cursor hopping from cell to cell as they go. Every pixel you place is broadcast over a realtime channel to everyone in the room, and when someone joins late, one person already there hands them the whole grid in a single message. Replay a fast timelapse of how the art was built, or hit Save PNG for a crisp upscaled image. No sign-up, nothing stored by default.

Supabase RealtimePresence + broadcastLive cursorsNo sign-up
Use tool →
Creative coding · Fourier

Fourier Epicycle Machine

Draw any shape in one stroke, or type your name, and a chain of spinning circles will retrace it in front of you. It runs a real Discrete Fourier Transform on your path right in the browser, turning it into rotating vectors stacked tip to tail. Drag the circle count down to watch the detail melt into a smooth blob, then back up to snap to your exact line. Record the rebuild as a video to share. No upload, no sign-up, works offline.

Fourier transformCanvasDraw with circlesNo upload
Use tool →
Music · Web MIDI

Pianola

Drop a MIDI file and watch it play with Synthesia-style falling notes and a built-in synth, all parsed and rendered in your browser — nothing is uploaded. It reads the raw Standard MIDI File bytes itself: the tempo map, every track, and each note event. Plug in a real MIDI keyboard and play along with the keys lighting up, route a song out to a hardware synth or DAW, or record what you play and save it as a .mid file. Works offline, no sign-up.

Web MIDI APISMF parserWeb AudioNo upload
Use tool →
Dev tool · Bundle analysis

Bundle Size Explorer

Drop a minified JS bundle and its source map to see a zoomable treemap of exactly which files and npm packages are eating your bundle. It decodes the source map's VLQ mappings and attributes every byte of generated code back to its original file, the same way the source-map-explorer CLI does, but with no install and nothing uploaded. Group node_modules by package to spot the one dependency quietly costing you 200 KB, and read the real gzipped size measured in your browser.

Source mapsVLQ decodeTreemapNo upload
Use tool →
Audio · Real-time pitch

Vocal Range Finder

Sing your lowest note, then slide up to your highest, and watch your range fill in live. A real-time pitch tracker reads your voice many times a second right in the browser, then tells you your range, how many octaves you cover, and your closest voice type — bass to soprano. Your mic audio never leaves your device, and you get a shareable result card.

Web AudioMcLeod Pitch MethodVoice typeNo upload
Use tool →
Graphics · Real-time ray tracing

WebGPU Path Tracer

A real Monte Carlo path tracer running on your GPU, in a browser tab. Drag to orbit and the image accumulates samples live — true global illumination, soft shadows, mirror reflections and glass refraction. Switch the centre sphere between glass, metal and diffuse, or open the Cornell box to watch the walls bleed colour. No install, no upload, every ray is computed on your own machine.

WebGPUWGSL shadersMonte CarloNo upload
Use tool →
On-device AI · Chat with PDF

Vellum

Drop in a PDF and ask it anything. A real language model and a semantic search index run entirely in your browser on your GPU, so the file is never uploaded. Answers are grounded in the document and cite the pages they came from, and you can click any citation to read the source. Works offline once the models cache.

Local RAGWebLLM + WebGPUTransformers.jsNo upload
Use tool →
On-device AI · OCR

Scribe

Drop a photo of handwriting, a receipt, or a screenshot and get clean, editable text. A real OCR transformer runs entirely in your browser — it finds each line and reads it on your own device, so your documents are never uploaded. Handwriting mode keeps the original capitalisation.

Transformers.jsTrOCRLine segmentationNo upload
Use tool →
On-device AI · Live camera

Green Screen Studio

Blur or replace your webcam background in real time, with no green screen and no install. A neural segmentation model runs entirely in your browser to cut you out of your room, so your camera never leaves your device. Drop to a blur, a color, a scene, or your own image, then save a photo or record a clip.

MediaPipe SegmenterWebAssembly + GPUReal-time matteNo upload
Use tool →
Live data · 3D globe

Quakes 3D

Every earthquake on Earth, live on a 3D globe straight from the USGS feed. Spin the planet, filter by magnitude, and hit play to watch a whole month of quakes ripple across the map in seconds. Click any dot for its magnitude, depth, and time. Auto-refreshes, no sign-up.

WebGL globeUSGS live feedTime-lapseThree.js
Use tool →
Multiplayer · Typing race

Typebolt

A typing race you play with friends. Share the link and everyone types the same passage at the same moment, with each racer's car sliding along its lane live as they type. Only your progress and speed are shared, never your keystrokes, and nothing is stored. Alone, it's a clean typing speed test.

Supabase RealtimePresenceLive WPMNo sign-up
Use tool →
On-device AI · Alt text

Alt Text Studio

Drop in your images and a real image-captioning AI writes the alt text for you, running entirely in your browser. A Vision Transformer reads each picture and a GPT-2 decoder describes it, all on your own CPU, so nothing is uploaded. Edit any description, then export them all as CSV or JSON.

Transformers.jsViT + GPT-2AccessibilityNo upload
Use tool →
Generative art · GPU fractals

Fractal Lab

Zoom into the Mandelbrot set in real time and watch the matching Julia set appear live as you move your cursor. Every pixel is computed on your GPU with a WebGL2 shader, and emulated double precision keeps the deep zooms sharp. Frame a view, then export it as a 4K wallpaper.

WebGL2 shaderDouble precisionDeep zoom4K export
Use tool →
Peer-to-peer · File transfer

Beam

Send a file straight from your browser to someone else's — no upload, no account, no size cap. Drop a file, share the link or scan the QR, and it streams directly between the two browsers over an encrypted peer-to-peer connection. The file bytes never touch a server.

WebRTCData channelsQR shareNo upload
Use tool →
Dev tool · Large files

Loupe — Large File Viewer

Open and search files too big for your editor — multi-gigabyte logs, CSVs and JSONL, even gzipped. It streams the file so memory stays flat, jumps to line 40 million instantly, and draws a timeline showing where your matches cluster. Nothing is uploaded.

Streams APIWeb WorkerRegex + gzipNo upload
Use tool →
On-device AI · Text to speech

VoiceBox

Type anything and hear it spoken in a natural voice — generated by a real 82M-parameter neural TTS model that runs entirely in your browser. 28 voices across American and British English, adjustable speed, instant WAV download. Your text is never uploaded, and after the first load it works offline.

Kokoro 82MTransformers.jsWebGPU / WASMNo upload
Use tool →
On-device AI · Avatar

Face Avatar

Become a live cartoon. A real face-tracking model runs entirely in your browser, reading 478 points and 52 expressions off your face, and a character mirrors your every blink, smile, and head turn in real time. Pick a character, record a clip — your camera never leaves your device.

MediaPipe Face478 landmarks52 blendshapesNo upload
Use tool →
On-device AI · Privacy

PII Redactor

Paste text or drop a file and strip out personal data before you share it or paste it into an AI. Emails, phones, cards, SSNs, IPs and secrets are caught instantly, and a real BERT-NER model finds names, companies and places — all on your own device. Nothing is uploaded.

Transformers.jsBERT-NERLuhn + regexNo upload
Use tool →
On-device AI · Image search

Semantic Photo Search

Drop in your photos and search them by what's in them — "a dog on the beach", "city at night", "something red" — even if the files are named IMG_4821. A real CLIP model runs entirely in your browser, so your whole photo library is searched privately on your own machine. Click any result to find visually similar shots.

CLIP (ViT-B/16)Transformers.jsEmbeddingsNo upload
Use tool →
WebGPU · Artificial life

Particle Life

A few thousand particles, a small table of attraction rules, and life-like creatures appear on their own. Edit the rules, roll a new lifeform, and watch it self-organize. Every force between every pair of particles is computed on your GPU in real time, nothing uploaded.

WebGPUCompute shadersEmergentEditable matrix
Use tool →
AI · Live camera

Webcam Theremin

Wave your hands at your webcam and play a synth in the air, like a theremin. Your right hand sets the pitch, your left hand rides the volume, and a pinch adds vibrato. A real hand-tracking model runs on your GPU, so your camera never leaves your device. No webcam? Play it with your mouse.

MediaPipe HandsWeb Audio21 landmarksNo upload
Use tool →
Multiplayer · Whiteboard

Liveboard

A whiteboard you draw on together. Share the link and anyone who opens it lands on the same canvas, with live cursors you can watch move in real time. Sketch, highlight, and drop sticky notes side by side. No sign-up, nothing stored.

Supabase RealtimeLive cursorsPresenceNo sign-up
Use tool →
WebGPU · Fluid

Fluid Simulation

A real Navier-Stokes fluid solver running on your GPU with WebGPU. Stir glowing ink with your mouse, or drop a photo and melt it into liquid. Every frame is computed on your graphics card, nothing is uploaded. Record a clip or save a still.

WebGPUCompute shadersStable fluidsPhoto to liquid
Use tool →
AI · Local LLM

Pocket LLM

Chat with a real large language model that runs entirely in your browser on your own GPU. No server, no API key, no sign-up. Your messages never leave your device, and once a model downloads it keeps working with your internet off.

WebLLMWebGPUOfflineNo upload
Use tool →
Dev tool · WASM Postgres

Postgres Playground

A real PostgreSQL database, compiled to WebAssembly, running entirely in your browser. Create tables, run joins and window functions, and your data persists locally between visits. Share a query as a link. Nothing is uploaded.

PGlitePostgreSQL 18WebAssemblyPersistent
Use tool →
AI · Depth & 3D

Depth Studio

Drop a photo and a real AI depth model turns it into a 3D parallax animation you can move with your mouse. The model and the 3D rendering both run in your browser, so nothing is uploaded. Export a depth map or a 3D video clip.

transformers.jsDepth Anything V2WebGLNo upload
Use tool →
Audio · Real-time

Hum to MIDI

Hum, sing, or whistle a melody and watch it become MIDI notes in real time on a live piano roll. Then download a MIDI file for your DAW. Pitch detection runs entirely in your browser, so your mic audio never leaves your device.

Web AudioAutocorrelationMIDI exportNo upload
Use tool →
Security · Zero-knowledge

Send a Secret

Share a password or private note with a link that self-destructs after one read. It is encrypted in your browser with AES-256, and the key rides in the link, so the server only ever sees ciphertext. No sign-up.

Web CryptoAES-256-GCMSelf-destructZero-knowledge
Use tool →
AI · Live camera

AI Rep Counter

Point your webcam at yourself and it counts your squats, push-ups, curls, sit-ups and jumping jacks automatically, with live form feedback. A real pose model runs in your browser, so your camera never leaves your device.

MediaPipe PoseWebAssembly33 landmarksNo upload
Use tool →
Web3 · Live on-chain

Ethereum Live

Watch the Ethereum mainnet build itself in real time. Every new block lands within seconds and each transaction is decoded straight from its calldata into a swap, transfer, NFT trade or contract call. No wallet, no sign-up, all in your browser.

JSON-RPCCalldata decodeCanvasLive
Use tool →
AI · Text

Theme Finder

Paste a pile of survey answers, reviews, or notes and a real AI model groups them into themes by meaning, not keywords. The whole model runs in your browser, so nothing is uploaded. Export the groups as CSV.

transformers.jsEmbeddingsk-meansNo upload
Use tool →
Data · Explorable

Instant CSV Dashboard

Drop a CSV and get a live dashboard. Click any chart or drag a range and every other chart re-filters in the same instant. Auto-detects columns, handles big files, exports your slice. Nothing is uploaded.

Cross-filterTyped indexesCanvasNo upload
Use tool →
Generative art · WebGL

Strange Attractor Studio

Turn four numbers into art. A million points iterate on your GPU in real time, building intricate strange-attractor patterns from chaos equations. Tweak the maths, pick a palette, export a 4K wallpaper. Nothing is uploaded.

WebGL2GPGPU1M points4K export
Use tool →
Real-time · Multiplayer

Live Beat Maker

A drum machine you play with other people. Share the room link and every beat you tap lands on everyone's grid at the same moment, with live cursors. All sound is synthesized in the browser, nothing is stored.

Supabase RealtimeWeb AudioPresenceNo sign-up
Use tool →
Data · SQL engine

Browser SQL Playground

Drop in a CSV, Parquet, or JSON file and query it with real analytical SQL. A full DuckDB database runs in your browser through WebAssembly, so nothing is uploaded. Export results as CSV or JSON.

DuckDB-WASMWebAssemblyCSV/ParquetNo upload
Use tool →
WebGPU · Simulation

Slime Mold Simulation

Millions of agents drop trails and steer toward the strongest scent, building life-like networks in real time. It all runs on your GPU with WebGPU compute shaders. Paint with your mouse, tweak the rules, save a still.

WebGPUCompute shadersPhysarumGenerative
Use tool →
AI · Speech

Audio to Text

Drop a recording and a real Whisper model transcribes it entirely in your browser. No upload, no minute limits. Export the text plus timestamped SRT and VTT subtitles.

transformers.jsWhisperWebGPU/WASMSRT/VTT
Use tool →
AI · On-device

AI Background Remover

Drop a photo and a real AI model erases the background, running entirely in your browser. No upload, no sign-up, no watermark. Get a transparent PNG in seconds.

transformers.jsRMBG-1.4WebGPU/WASMNo upload
Use tool →
Dev tool · Cron

Cron Expression Generator

Type a cron schedule and get a plain-English explanation plus the next run times instantly. Visual fields, presets, and a copy button. Parses live in your browser.

Cron parserNext runsNo upload
Use tool →
App · Live data

Free Poll Maker

Create a poll, share the link, and watch results update live as people vote. No sign-up, no app. Anonymous and instant.

SupabaseShareableLive results
Use tool →
PDF · Utility

PDF to JPG

Turn every page of a PDF into a JPG or PNG image. Pick the resolution, download pages one by one or all as a ZIP. 100% in your browser, no upload.

pdf.jsClient-sideNo upload
Use tool →
PDF · Utility

Image to PDF

Turn JPG, PNG, and WebP images into a single PDF. Drag to reorder, set page size and margins. 100% in your browser, no upload.

CanvasClient-sideNo upload
Use tool →
PDF · Utility

Merge PDF

Combine multiple PDFs into one. Drag to reorder, rotate, download. 100% in your browser, no upload.

pdf-libClient-sideNo upload
Use tool →
Image · Utility

HEIC to JPG Converter

Turn iPhone HEIC photos into JPG, PNG, or WebP that open everywhere. Batch convert and resize, 100% in your browser.

WASMClient-sideNo upload
Use tool →
Image · Utility

Image Converter & Compressor

Convert and compress PNG, JPG, and WebP, resize in bulk, shrink file size. 100% in your browser.

CanvasClient-sidePrivacy-first
Use tool →
Coming next

A new tool, daily.

I research what people actually need on Reddit, X, and Product Hunt, then build and ship a useful tool. Check back tomorrow.

Building in public