I built a JSON toolkit that never sends your data anywhere A developer built JSONLinter, a client-side JSON toolkit with 42 tools across six categories, ensuring data never leaves the browser. The project uses React 19, TypeScript, Vite, Tailwind v4, and CodeMirror 6, and includes a prerendering solution using headless Chromium to serve real HTML to crawlers without SSR. An optional AI assistant supports bring-your-own-key for OpenAI or Anthropic, with no backend involved. Most "paste your JSON here" tools online send that JSON to a server to process it. For internal API responses, config files, or anything with real data in it, that's not something I wanted to do — so I built JSONLinter https://jsonlinter.io , a JSON toolkit where literally everything happens client-side. It started as a validator/formatter, then grew into 42 tools across six categories: There's also an optional AI assistant on the validator page — it's bring-your-own-key OpenAI or Anthropic , and since there's no backend at all, the key and your JSON go straight from your browser to the provider. I never see either. Stack is React 19 + TypeScript + Vite, Tailwind v4 for styling, CodeMirror 6 for the editor. A few things I had to solve that were more interesting than expected: Prerendering without SSR. I didn't want to take on a Next.js-style server just to get real HTML for crawlers. Instead, the build runs a headless Chromium pass Playwright over every route after vite build and saves the fully-rendered output to dist/