<?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-05-04T15:53:57+00:00</updated><author><name>Simon Willison</name></author><entry><title>Redis Array Playground</title><link href="https://tools.simonwillison.net/redis-array" rel="alternate"/><published>2026-05-04T15:53:57+00:00</published><updated>2026-05-04T15:53:57+00:00</updated><id>https://tools.simonwillison.net/redis-array</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/redis-array"&gt;Redis Array Playground&lt;/a&gt;&lt;/p&gt;&lt;p&gt;# Redis Array Playground&lt;/p&gt;</summary><category term="salvatore-sanfilippo"/><category term="webassembly"/><category term="generative-ai"/><category term="agentic-engineering"/><category term="ai"/><category term="redis"/><category term="llms"/><category term="regular-expressions"/><category term="c"/></entry><entry><title>iNaturalist Sightings</title><link href="https://tools.simonwillison.net/inat-sightings" rel="alternate"/><published>2026-05-01T19:35:41+00:00</published><updated>2026-05-01T19:35:41+00:00</updated><id>https://tools.simonwillison.net/inat-sightings</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/inat-sightings"&gt;iNaturalist Sightings&lt;/a&gt;&lt;/p&gt;&lt;p&gt;# Documentation&lt;/p&gt;</summary><category term="tools"/><category term="claude-code"/><category term="inaturalist"/><category term="generative-ai"/><category term="ai"/><category term="llms"/></entry><entry><title>Millisecond Converter</title><link href="https://tools.simonwillison.net/milliseconds" rel="alternate"/><published>2026-04-24T04:23:11+00:00</published><updated>2026-04-24T04:23:11+00:00</updated><id>https://tools.simonwillison.net/milliseconds</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/milliseconds"&gt;Millisecond Converter&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Convert milliseconds into multiple time units with this interactive tool that displays the duration in seconds, minutes, hours, days, weeks, and a human-readable format. The converter accepts numbers with commas or underscores for readability and provides both a compact breakdown (e.g., "3 minutes, 7 seconds, 238 milliseconds") and a clock-format representation. Results can be copied to the clipboard with a single click for easy sharing or documentation.&lt;/p&gt;</summary><category term="tools"/></entry><entry><title>datasette.io news preview</title><link href="https://tools.simonwillison.net/datasette-io-preview" rel="alternate"/><published>2026-04-16T00:18:03+00:00</published><updated>2026-04-16T00:18:03+00:00</updated><id>https://tools.simonwillison.net/datasette-io-preview</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/datasette-io-preview"&gt;datasette.io news preview&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Preview and validate datasette.io news entries in YAML format with real-time rendering and markdown linting. The editor loads the current news.yaml file from GitHub and provides immediate feedback on formatting errors, link validation, and markdown syntax issues while displaying a styled preview of how entries will appear on the live site. Use the error badge to track validation issues and fix them directly in the editor pane.&lt;/p&gt;</summary><category term="vibe-coding"/><category term="claude"/><category term="tools"/><category term="datasette"/></entry><entry><title>Gemini 3.1 Flash TTS</title><link href="https://tools.simonwillison.net/gemini-flash-tts" rel="alternate"/><published>2026-04-15T16:41:46+00:00</published><updated>2026-04-15T16:41:46+00:00</updated><id>https://tools.simonwillison.net/gemini-flash-tts</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/gemini-flash-tts"&gt;Gemini 3.1 Flash TTS&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Convert text to natural-sounding speech using Google's Gemini 3.1 Flash TTS model with support for both single-speaker and multi-speaker conversation modes. The tool allows you to customize voice selection, apply directorial tags like `[whisper]` and `[short pause]` for dynamic delivery, and download the generated audio as a WAV file. Requires a valid Gemini API key to function.&lt;/p&gt;</summary><category term="gemini"/><category term="google"/></entry><entry><title>SQLite Query Result Formatter Demo</title><link href="https://tools.simonwillison.net/sqlite-qrf" rel="alternate"/><published>2026-04-11T19:35:31+00:00</published><updated>2026-04-11T19:35:31+00:00</updated><id>https://tools.simonwillison.net/sqlite-qrf</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/sqlite-qrf"&gt;SQLite Query Result Formatter Demo&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Format SQLite query results in 20 different styles including box-drawing tables, CSV, JSON, HTML, Markdown, and more using this interactive WebAssembly-based demonstration. Adjust formatting options like column headers, screen width, NULL display values, and border styles in real-time to see how your SQL queries render across all available output modes. The demo database includes sample tables for employees, products, and orders with pre-built example queries showcasing each formatting style.&lt;/p&gt;</summary><category term="tools"/><category term="sqlite"/></entry><entry><title>GitHub Repo Size</title><link href="https://tools.simonwillison.net/github-repo-size" rel="alternate"/><published>2026-04-09T21:31:50+00:00</published><updated>2026-04-09T21:31:50+00:00</updated><id>https://tools.simonwillison.net/github-repo-size</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/github-repo-size"&gt;GitHub Repo Size&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Check the size of any GitHub repository by entering the owner and repository name or pasting a GitHub URL. The tool fetches repository data from the GitHub API and displays the total size in kilobytes, megabytes, or gigabytes depending on the repository's scale. Results are automatically saved to the browser URL, allowing you to share or revisit repository size checks.&lt;/p&gt;</summary><category term="cors"/><category term="github"/></entry><entry><title>Cleanup Claude Code Paste</title><link href="https://tools.simonwillison.net/cleanup-claude-code-paste" rel="alternate"/><published>2026-04-06T02:55:23+00:00</published><updated>2026-04-06T02:55:23+00:00</updated><id>https://tools.simonwillison.net/cleanup-claude-code-paste</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/cleanup-claude-code-paste"&gt;Cleanup Claude Code Paste&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Clean up Claude Code terminal output by removing the ❯ prompt character, fixing whitespace from line wrapping, and joining broken lines into readable paragraphs. Paste your terminal text into the input field and the cleaned output will appear automatically, ready to copy to your clipboard.&lt;/p&gt;</summary><category term="tools"/><category term="claude-code"/></entry><entry><title>Syntaqlite Playground</title><link href="https://tools.simonwillison.net/syntaqlite" rel="alternate"/><published>2026-04-05T19:32:59+00:00</published><updated>2026-04-05T19:32:59+00:00</updated><id>https://tools.simonwillison.net/syntaqlite</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/syntaqlite"&gt;Syntaqlite Playground&lt;/a&gt;&lt;/p&gt;&lt;p&gt;# Syntaqlite Playground&lt;/p&gt;</summary><category term="sql"/><category term="ai-assisted-programming"/><category term="sqlite"/><category term="tools"/><category term="agentic-engineering"/></entry><entry><title>Pretext — Under the Hood</title><link href="https://tools.simonwillison.net/pretext-explainer" rel="alternate"/><published>2026-03-29T19:59:28+00:00</published><updated>2026-03-29T19:59:28+00:00</updated><id>https://tools.simonwillison.net/pretext-explainer</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/pretext-explainer"&gt;Pretext — Under the Hood&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Explore how pure-JavaScript text measurement and line breaking work through an interactive visualization of the Pretext library's pipeline. This tool demonstrates each stage from raw text input through whitespace normalization, word segmentation, canvas-based width measurement, and arithmetic-based line breaking, with live verification against actual DOM rendering.&lt;/p&gt;</summary></entry><entry><title>Python Vulnerability Lookup</title><link href="https://tools.simonwillison.net/python-vulnerability-lookup" rel="alternate"/><published>2026-03-29T18:46:16+00:00</published><updated>2026-03-29T18:46:16+00:00</updated><id>https://tools.simonwillison.net/python-vulnerability-lookup</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/python-vulnerability-lookup"&gt;Python Vulnerability Lookup&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Search Python packages for known security vulnerabilities by pasting a `pyproject.toml` or `requirements.txt` file, or by loading dependencies directly from a GitHub repository. The tool queries the OSV.dev vulnerability database and displays detailed information about any identified vulnerabilities, including severity levels, affected version ranges, and links to full disclosure reports.&lt;/p&gt;</summary><category term="tools"/><category term="python"/><category term="supply-chain"/><category term="vibe-coding"/><category term="security"/></entry><entry><title>DNS Lookup</title><link href="https://tools.simonwillison.net/dns" rel="alternate"/><published>2026-03-22T19:16:30+00:00</published><updated>2026-03-22T19:16:30+00:00</updated><id>https://tools.simonwillison.net/dns</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/dns"&gt;DNS Lookup&lt;/a&gt;&lt;/p&gt;&lt;p&gt;# DNS Lookup Documentation&lt;/p&gt;</summary><category term="dns"/><category term="cors"/><category term="cloudflare"/></entry><entry><title>Merge State Visualizer</title><link href="https://tools.simonwillison.net/manyana" rel="alternate"/><published>2026-03-22T18:57:32+00:00</published><updated>2026-03-22T18:57:32+00:00</updated><id>https://tools.simonwillison.net/manyana</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/manyana"&gt;Merge State Visualizer&lt;/a&gt;&lt;/p&gt;&lt;p&gt;# CRDT Merge State Visualizer&lt;/p&gt;</summary><category term="vcs"/><category term="pyodide"/><category term="bram-cohen"/><category term="crdt"/></entry><entry><title>TURBO.COM — 39,731 Bytes Deconstructed</title><link href="https://tools.simonwillison.net/turbo-pascal-deconstructed" rel="alternate"/><published>2026-03-20T23:48:35+00:00</published><updated>2026-03-20T23:48:35+00:00</updated><id>https://tools.simonwillison.net/turbo-pascal-deconstructed</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/turbo-pascal-deconstructed"&gt;TURBO.COM — 39,731 Bytes Deconstructed&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Explore an interactive breakdown of Turbo Pascal 3.02A's 39,731-byte executable, mapping each function from the header and display system through the parser and symbol table. Navigate the binary segments with an overhead visualization and detailed hex dumps with annotated disassembly, revealing how a complete compiler, editor, and runtime fit within the constraints of 1986 DOS memory while routing all file I/O through a single INT 21h dispatcher gateway.&lt;/p&gt;</summary></entry><entry><title>Sorting algorithms</title><link href="https://tools.simonwillison.net/sort-algorithms" rel="alternate"/><published>2026-03-11T22:35:51+00:00</published><updated>2026-03-11T22:35:51+00:00</updated><id>https://tools.simonwillison.net/sort-algorithms</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/sort-algorithms"&gt;Sorting algorithms&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Explore and compare different sorting algorithms through interactive animated visualizations that display how each algorithm organizes data in real-time. The tool allows you to adjust dataset size and animation speed, run individual algorithms step-by-step or continuously, and race multiple algorithms simultaneously to see which performs best. Each algorithm includes detailed complexity analysis and visual indicators for comparisons, swaps, and sorted elements.&lt;/p&gt;</summary><category term="sorting"/></entry></feed>