~/portal $ ls ~/lab
Lab
Tools I got tired of looking up, games worth a minute, and a few things about me you can poke at. All of it runs in your browser.
Encode & generate
Secret generator
Cryptographically random keys for your .env — AUTH_SECRET, API keys, signing keys — in hex, base64, base64url or base32.
QR code
Turn a link, a note or a Wi-Fi password into a QR code. Downloads as SVG or PNG.
UUID & ID
UUID v4, time-sortable UUID v7, and nanoid — one at a time or a thousand at once.
Hash & HMAC
SHA-1, SHA-256, SHA-384, SHA-512 and HMAC over text or a file, computed in your browser.
Base64 & encoding
Base64, base64url, hex and URL encoding, both directions, plus file to data URI.
JWT decoder
Read the header and payload of a token, with the timestamps in plain English. Decode only.
Text & data
JSON formatter
Format, minify, sort keys and validate — with the line and column when it won't parse.
Markdown preview
Write markdown on the left, watch it render on the right. The same renderer this site's posts use.
Text diff
Compare two blocks of text line by line, or word by word inside a changed line.
Word count
Words, characters, sentences, paragraphs and reading time — the same maths this blog uses.
Case converter
camelCase, snake_case, kebab-case, Title Case, CONSTANT_CASE — and a URL slugifier.
Escape & convert
Turn any value into a JSON string for an n8n field or a webhook body — and convert between JSON, YAML, CSV, query strings, .env and TypeScript types.
Convert
Unit converter
Length, mass, temperature, data and time, converted across every unit at once.
Number base
Binary, octal, decimal, hex and any radix from 2 to 36, with the bits laid out.
Time & cron
Unix timestamps to dates and back, timezones side by side, and the next runs of a cron expression.
Colour converter
hex, rgb, hsl and oklch in step, with tints, shades and a WCAG contrast check.
Write code
Code cookbook
Pick what you're trying to build — a form that posts to a webhook, a grid, a Python API call — answer a few questions, and get working code with every line explained. Then look up the attribute you half-remember, or paste in an error and be told what it means.
Schema to form
Paste a schema — Postgres, MySQL, DBML, Prisma, Mongoose, a JSON Schema, even one sample document — see how the tables connect, pick one, and get the form. Every widget is inferred from the column and every guess tells you why, so a foreign key becomes a dropdown that loads the other table and an avatar column becomes an upload. Then take the code for React, Vue, plain HTML, Flutter, SwiftUI or Compose.
Diagram
JSON explorer
See a JSON document — or a JSON Schema — as connected boxes instead of a wall of brackets. Pan, zoom, and collapse what you don't need.
Schema diagram
Paste Postgres DDL, a pg_dump, DBML or a Prisma schema and get the ER diagram — then convert between all three. The SQL-to-DBML step is the one dbdiagram.io won't do for you.
Visual
Image to ASCII
Redraw a picture in characters — the same converter that makes the covers on this site. Your image never leaves the browser.
Image resizer
Resize, compress and re-encode to WebP, JPEG or PNG. Entirely on your machine — nothing is uploaded.
Palette extractor
Pull the dominant colours out of an image and copy them as hex, CSS variables or Tailwind tokens.