<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: Tools</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/atom/beats/tool/" rel="self"/><id>http://simonwillison.net/</id><updated>2026-10-15T19:47:52+00:00</updated><author><name>Simon Willison</name></author><entry><title>Chirp Pong</title><link href="https://tools.simonwillison.net/chirp-pong" rel="alternate"/><published>2026-10-15T19:47:52+00:00</published><updated>2026-10-15T19:47:52+00:00</updated><id>https://tools.simonwillison.net/chirp-pong</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/chirp-pong"&gt;Chirp Pong&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Chirp Pong is a two-player paddle game where two phones pair and exchange the ball over sound, using each device's speaker and microphone instead of Wi-Fi or Bluetooth. The page offers a duel mode that pairs two phones through a chirp handshake and a practice mode against a CPU opponent, with selectable match lengths of 7, 11, or 15 points.&lt;/p&gt;</summary><category term="game-design"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="claude-code"/></entry><entry><title>LaTeX renderer</title><link href="https://tools.simonwillison.net/latex" rel="alternate"/><published>2026-10-15T02:07:28+00:00</published><updated>2026-10-15T02:07:28+00:00</updated><id>https://tools.simonwillison.net/latex</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/latex"&gt;LaTeX renderer&lt;/a&gt;&lt;/p&gt;&lt;p&gt;LaTeX renderer turns LaTeX source into a rendered view, either a single display equation typeset by MathJax or a full document or prose fragment typeset by faster-latex, with a live preview beside the editor and a toolbar switch between Edit and Rendered views. Source can be typed, loaded from a URL or GitHub Gist, or picked from built-in examples, and the page keeps the LaTeX in the URL fragment so it can be shared as a readable or compressed link.&lt;/p&gt;</summary><category term="latex"/><category term="paul-ford"/><category term="tools"/><category term="urls"/><category term="ai"/><category term="generative-ai"/><category term="llms"/></entry><entry><title>Tree Appreciator</title><link href="https://tools.simonwillison.net/tree-appreciator" rel="alternate"/><published>2026-10-14T21:23:01+00:00</published><updated>2026-10-14T21:23:01+00:00</updated><id>https://tools.simonwillison.net/tree-appreciator</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/tree-appreciator"&gt;Tree Appreciator&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tree Appreciator is a slow spot-the-difference game in which each round grows two 3D trees from one seed and asks the player to find a handful of small differences between them, such as a missing bough, a visiting bird, or an early-turning branch. Players tap a difference in either tree to notice it, can use limited hints and drag or zoom to view the trees from different angles, and earn appreciation points, leaves and herbarium entries for each pair completed.&lt;/p&gt;</summary><category term="game-design"/><category term="javascript"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="claude"/><category term="vibe-coding"/><category term="three-js"/></entry><entry><title>Scrimshaw Jukebox</title><link href="https://tools.simonwillison.net/scrimshaw-jukebox" rel="alternate"/><published>2026-10-06T15:17:39+00:00</published><updated>2026-10-06T15:17:39+00:00</updated><id>https://tools.simonwillison.net/scrimshaw-jukebox</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/scrimshaw-jukebox"&gt;Scrimshaw Jukebox&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Play synthesized adventure-game music written as plain text scores that you can edit and modify in real time. Six original compositions in the Scrimshaw format showcase various instruments and styles, from a calypso harbour theme to a tavern jig, with a pixel-art scene that reacts to the music and an interactive piano roll display.&lt;/p&gt;</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="claude"/><category term="vibe-coding"/></entry><entry><title>Photo Scrubber — local face blur &amp; metadata removal</title><link href="https://tools.simonwillison.net/photo-scrubber" rel="alternate"/><published>2026-09-29T16:45:27+00:00</published><updated>2026-09-29T16:45:27+00:00</updated><id>https://tools.simonwillison.net/photo-scrubber</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/photo-scrubber"&gt;Photo Scrubber — local face blur &amp; metadata removal&lt;/a&gt;&lt;/p&gt;&lt;p&gt;View and edit photos locally to blur faces and remove metadata before sharing. The tool automatically detects faces using machine learning, allows manual redaction with adjustable blur strength, and exports cleaned images with all personal metadata stripped. All processing occurs in the browser—photos never leave your device.&lt;/p&gt;</summary><category term="photography"/><category term="tools"/></entry><entry><title>Bluesky reply bot checker</title><link href="https://tools.simonwillison.net/bluesky-bot-check" rel="alternate"/><published>2026-09-27T18:41:44+00:00</published><updated>2026-09-27T18:41:44+00:00</updated><id>https://tools.simonwillison.net/bluesky-bot-check</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/bluesky-bot-check"&gt;Bluesky reply bot checker&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Check a Bluesky account for patterns common to automated reply bots by analyzing recent posts for typing speed, posting times, engagement patterns, and other behavioral signals. The tool displays every measurement and rule so you can verify the reasoning and see example replies that triggered the most signals.&lt;/p&gt;</summary><category term="twitter"/><category term="bluesky"/><category term="vibe-coding"/><category term="ai-misuse"/></entry><entry><title>Kākāpō Party</title><link href="https://tools.simonwillison.net/kakapo-party" rel="alternate"/><published>2026-09-26T23:39:06+00:00</published><updated>2026-09-26T23:39:06+00:00</updated><id>https://tools.simonwillison.net/kakapo-party</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/kakapo-party"&gt;Kākāpō Party&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Experience an interactive pixel-art celebration featuring kākāpō (New Zealand's flightless parrots) jumping and dancing to music. Click, tap, or press Space to trigger confetti bursts, balloons, streamers, and festive effects while the birds party under a disco ball with choreographed dance moves that sync to an upbeat rhythm.&lt;/p&gt;</summary><category term="animation"/><category term="speaking"/><category term="ai"/><category term="kakapo"/><category term="playwright"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="claude-code"/></entry><entry><title>Gemini 3.8 TTS Playground</title><link href="https://tools.simonwillison.net/gemini-tts-playground" rel="alternate"/><published>2026-09-23T17:12:27+00:00</published><updated>2026-09-23T17:12:27+00:00</updated><id>https://tools.simonwillison.net/gemini-tts-playground</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/gemini-tts-playground"&gt;Gemini 3.8 TTS Playground&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Test and experiment with Google's Gemini 3.8 text-to-speech API through an interactive playground where you can compose single-voice narration or multi-speaker conversations, preview the generated audio, and explore request and response details. Save your compose settings to bookmarkable URLs for easy sharing, and generate high-quality speech synthesis powered by your Gemini API key.&lt;/p&gt;</summary><category term="text-to-speech"/><category term="gemini"/></entry><entry><title>Shadow roots, explained with live examples</title><link href="https://tools.simonwillison.net/shadow-roots" rel="alternate"/><published>2026-09-23T16:37:18+00:00</published><updated>2026-09-23T16:37:18+00:00</updated><id>https://tools.simonwillison.net/shadow-roots</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/shadow-roots"&gt;Shadow roots, explained with live examples&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Learn about shadow DOM through interactive examples that demonstrate style encapsulation, inheritance, slots, parts, and JavaScript access. Explore how shadow roots create isolated DOM trees with private stylesheets and elements that interact with the page DOM in specific, controlled ways.&lt;/p&gt;</summary><category term="css"/></entry><entry><title>Gemini Live audio</title><link href="https://tools.simonwillison.net/gemini-live" rel="alternate"/><published>2026-09-15T22:47:07+00:00</published><updated>2026-09-15T22:47:07+00:00</updated><id>https://tools.simonwillison.net/gemini-live</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/gemini-live"&gt;Gemini Live audio&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Talk to Gemini 3.8 Live and Gemini 3.8 Live Extended Thinking with live audio conversations. The interface captures real-time speech input, displays transcripts of your conversation, and allows you to interrupt responses naturally or send text messages. Extended Thinking models support configurable reasoning levels while processing conversations that can include optional document context for reference.&lt;/p&gt;</summary><category term="google"/><category term="tools"/><category term="websockets"/><category term="generative-ai"/><category term="llms"/><category term="gemini"/><category term="llm-release"/><category term="speech-to-text"/></entry><entry><title>.blend URL Viewer</title><link href="https://tools.simonwillison.net/blender-viewer" rel="alternate"/><published>2026-09-09T23:58:32+00:00</published><updated>2026-09-09T23:58:32+00:00</updated><id>https://tools.simonwillison.net/blender-viewer</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/blender-viewer"&gt;.blend URL Viewer&lt;/a&gt;&lt;/p&gt;&lt;p&gt;View Blender .blend files directly in your browser by pasting a URL to a CORS-accessible file or GitHub repository link. The viewer renders mesh geometry, curves, and text with materials, lighting, and optional saved camera positions from Blender 5.x files, providing interactive orbit controls, wireframe mode, and model fitting capabilities.&lt;/p&gt;</summary><category term="3d"/><category term="javascript"/><category term="tools"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="blender"/><category term="coding-agents"/><category term="codex"/><category term="gpt-6-astra"/></entry><entry><title>Video compressor</title><link href="https://tools.simonwillison.net/video-compressor" rel="alternate"/><published>2026-09-07T18:29:07+00:00</published><updated>2026-09-07T18:29:07+00:00</updated><id>https://tools.simonwillison.net/video-compressor</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/video-compressor"&gt;Video compressor&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Compress videos in your browser using FFmpeg compiled to WebAssembly. Upload a video file to generate multiple encoded versions with different quality settings and output sizes, then compare and download the smallest file that meets your needs. All processing happens locally with no uploads to external servers.&lt;/p&gt;</summary><category term="ffmpeg"/><category term="video"/><category term="webassembly"/><category term="claude"/><category term="claude-code"/><category term="claude-mythos-fable"/></entry><entry><title>Mercator ↔ Equal Earth</title><link href="https://tools.simonwillison.net/equal-earth" rel="alternate"/><published>2026-09-07T16:24:16+00:00</published><updated>2026-09-07T16:24:16+00:00</updated><id>https://tools.simonwillison.net/equal-earth</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/equal-earth"&gt;Mercator ↔ Equal Earth&lt;/a&gt;&lt;/p&gt;&lt;p&gt;View an interactive animated map that morphs between Mercator and Equal Earth projections using a slider or play button. The visualization demonstrates how different map projections represent the world, with controls to blend between the two projection types and observe how they preserve different geographic properties.&lt;/p&gt;</summary><category term="geospatial"/><category term="d3"/><category term="vibe-coding"/><category term="gpt-6-astra"/></entry><entry><title>GeoJSON Map Viewer</title><link href="https://tools.simonwillison.net/geojson" rel="alternate"/><published>2026-09-01T18:05:45+00:00</published><updated>2026-09-01T18:05:45+00:00</updated><id>https://tools.simonwillison.net/geojson</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/geojson"&gt;GeoJSON Map Viewer&lt;/a&gt;&lt;/p&gt;&lt;p&gt;View and visualize GeoJSON data on an interactive OpenStreetMap with customizable styling options. Paste GeoJSON objects (Feature, FeatureCollection, or Geometry) into the editor, adjust fill color and opacity, and render the features directly on the map. Add multiple shapes with individual styling—each shape is numbered and can be removed, later shapes draw on top of earlier ones, and style changes apply live to the rendered map.&lt;/p&gt;</summary><category term="geospatial"/><category term="tools"/><category term="geojson"/><category term="chatgpt"/></entry><entry><title>CORS Chat</title><link href="https://tools.simonwillison.net/cors-chat" rel="alternate"/><published>2026-08-15T14:49:54+00:00</published><updated>2026-08-15T14:49:54+00:00</updated><id>https://tools.simonwillison.net/cors-chat</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/cors-chat"&gt;CORS Chat&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Chat directly with any OpenAI Responses-compatible API endpoint using browser-accessible CORS headers. Configure custom endpoints with optional bearer token authentication and additional HTTP headers, create multiple conversations with different models and request settings, and persist everything locally in your browser.&lt;/p&gt;</summary><category term="svg"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="cors"/><category term="openrouter"/><category term="lm-studio"/></entry></feed>