Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ jobs:
git config user.name "Automated"
git config user.email "actions@users.noreply.github.com"
git add *.docs.md
# Persist any new tags coined while generating docs
git add tags.json
git commit -m "Generated docs: ${{ steps.docs.outputs.stems }}" || exit 0
git push

Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ gathered_links.json
colophon.html
index.html
by-month.html
categories.html
category-*.html
sitemap.xml

*.egg-info/
Expand Down
4 changes: 3 additions & 1 deletion ai-adoption.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
View AI adoption trends across different firm sizes by analyzing survey data on artificial intelligence usage in the workplace. This page runs a Python analysis using Pyodide to fetch employment survey data, calculate six-survey rolling averages, and generate an interactive visualization showing adoption rates by company size from November 2023 through August 2025. Download the resulting chart as PNG or SVG for further use or presentation.

<!-- Generated from commit: ecc4d0ed023901a9d26d99aea2b3bd34258e5241 -->
<!-- topics: ai-llm, data-visualization -->
<!-- features: webassembly, fetch-network, canvas -->
<!-- Generated from commit: ecc4d0ed023901a9d26d99aea2b3bd34258e5241 -->
4 changes: 3 additions & 1 deletion alt-text-extractor.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Extract images and their associated metadata from pasted web content with this tool. When you paste rich text containing images, the application automatically retrieves each image's alt text, URL, and generates ready-to-use Markdown and HTML code snippets. Each extracted element can be individually copied to your clipboard for use in documentation, accessibility audits, or content management.

<!-- Generated from commit: 4f97126825cbfa22d001b5b81b6a4c4dd0e43094 -->
<!-- topics: accessibility, text-writing -->
<!-- features: clipboard -->
<!-- Generated from commit: 4f97126825cbfa22d001b5b81b6a4c4dd0e43094 -->
4 changes: 3 additions & 1 deletion analytics.docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

Track your personal browsing activity across tools.simonwillison.net with real-time analytics stored locally in your browser. View detailed statistics including total visits, unique pages accessed, hourly and daily visit trends, top pages, and recent activity history. All data remains completely private—it is stored only in your browser's localStorage and is never transmitted to any server or shared with others.

<!-- Generated from commit: 36ac6466348fcb0d256f861d3b1e9d05c0facdc4 -->
<!-- topics: productivity -->
<!-- features: local-storage, canvas, clipboard -->
<!-- Generated from commit: 36ac6466348fcb0d256f861d3b1e9d05c0facdc4 -->
3 changes: 2 additions & 1 deletion animated-rainbow-border.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Display an animated rainbow gradient border effect around a centered box with interactive controls. The page features a dark theme with a glowing, color-shifting border that can be toggled on and off using the provided button. The animation combines gradient shifting and pulsing effects to create a dynamic, eye-catching visual presentation.

<!-- Generated from commit: 99021c5a96c4d188e92a9341621a105e0d3600ca -->
<!-- topics: css-layout, games-fun -->
<!-- Generated from commit: 99021c5a96c4d188e92a9341621a105e0d3600ca -->
4 changes: 3 additions & 1 deletion animated-word-cloud.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
View animated word cloud visualizations that use an Archimedean spiral placement algorithm to position words on a canvas. Each word spirals outward from the center until it finds an unoccupied space, with grid-based spatial indexing accelerating collision detection to handle large datasets efficiently. Control the animation playback speed, step through frames manually, download the final result as a PNG, or paste your own text to generate a custom word cloud.

<!-- Generated from commit: 92c3a111e91f93397273845d2b76bb3cb59c3ca7 -->
<!-- topics: data-visualization -->
<!-- features: canvas, url-state, fetch-network -->
<!-- Generated from commit: 92c3a111e91f93397273845d2b76bb3cb59c3ca7 -->
4 changes: 3 additions & 1 deletion annotated-presentations.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Create annotated presentation slides with alt text and markdown notes. Upload your slide images, add accessibility descriptions and annotations with markdown support, then generate HTML output using customizable templates. The tool automatically saves your work and includes optional OCR functionality to extract text from slides.

<!-- Generated from commit: 6c429482d2b7eb09c5e2554fe33c6157137f7bcc -->
<!-- topics: documents-pdf, accessibility -->
<!-- features: file-upload, local-storage, webassembly -->
<!-- Generated from commit: 6c429482d2b7eb09c5e2554fe33c6157137f7bcc -->
4 changes: 3 additions & 1 deletion apsw-query.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Analyze and explain SQLite queries using APSW by entering SQL code and executing it in an in-browser Python environment. The tool provides detailed query analysis including execution plans, expanded SQL, and query information to help understand how SQLite processes your queries. Optional setup SQL can be run before the main query to create tables or initialize data, and parameterized queries are supported through labeled input fields.

<!-- Generated from commit: 0af31729167e3de7f6ac73afd5e5bc03ba3b68fb -->
<!-- topics: sqlite-databases -->
<!-- features: webassembly -->
<!-- Generated from commit: 0af31729167e3de7f6ac73afd5e5bc03ba3b68fb -->
3 changes: 2 additions & 1 deletion arena-animated.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Compare Elo ratings across different language models and dates using this interactive animated bar chart. Load your own JSON data with model names, dates, and Elo scores, then watch the rankings evolve over time with customizable animation speed. The visualization displays the top 20 models at each time point, making it easy to track performance trends and competitive dynamics in the AI landscape.

<!-- Generated from commit: 9a2450df1bf8f426e243dc5f4964f0adc725de76 -->
<!-- topics: ai-llm, data-visualization -->
<!-- Generated from commit: 9a2450df1bf8f426e243dc5f4964f0adc725de76 -->
3 changes: 2 additions & 1 deletion ares.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Convert text to NATO phonetic alphabet equivalents for clear communication in radio, military, and aviation contexts. Enter any combination of letters and numbers, then click the convert button to display the phonetic representation with each character separated by spaces. Spaces in the original text are marked as "(SPACE)" in the output.

<!-- Generated from commit: 9da6f96d4e3c886f1776cdc5b658e47087a279dd -->
<!-- topics: reference-education -->
<!-- Generated from commit: 9da6f96d4e3c886f1776cdc5b658e47087a279dd -->
3 changes: 2 additions & 1 deletion aria-live-regions.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Explore live region notifications with this interactive accessibility demo that allows you to test how screen readers announce dynamic content updates. The page provides instructions for testing with VoiceOver on macOS and iOS, plus interactive controls to trigger notifications with different aria-live settings (assertive or polite) to observe how screen readers prioritize and announce content changes.

<!-- Generated from commit: 30ad8d445379deeab726dc7d6c94a67e18de2f32 -->
<!-- topics: accessibility, reference-education -->
<!-- Generated from commit: 30ad8d445379deeab726dc7d6c94a67e18de2f32 -->
4 changes: 3 additions & 1 deletion audio-spectrum.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Visualize real-time audio frequency data from your microphone as an animated spectrum display. This application uses the Web Audio API to capture microphone input, analyze frequencies using FFT (Fast Fourier Transform), and render dynamic bars that respond to sound levels across the frequency spectrum. Grant microphone permissions when prompted to begin the visualization.

<!-- Generated from commit: 1390c401fa2e7a1797dba733a059390752a8a62a -->
<!-- topics: audio-video, data-visualization -->
<!-- features: web-audio, canvas, camera-mic -->
<!-- Generated from commit: 1390c401fa2e7a1797dba733a059390752a8a62a -->
4 changes: 3 additions & 1 deletion avatar-web-component.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Display and edit images with an interactive cropping interface for creating avatars or profile pictures. Users can select images by clicking, dragging and dropping files, or pasting from the clipboard, then crop them to a specified aspect ratio using resizable handles. The final cropped image is automatically exported as a JPEG data URL and can be synced to a designated form input field for seamless integration with web forms.

<!-- Generated from commit: 51b013005bea273913d5501fb6355c9aff93a97d -->
<!-- topics: images-graphics -->
<!-- features: canvas, file-upload, drag-and-drop, clipboard -->
<!-- Generated from commit: 51b013005bea273913d5501fb6355c9aff93a97d -->
4 changes: 3 additions & 1 deletion badge-drawer.docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

Draw pixel art for e-ink badge displays with this web-based canvas editor supporting multiple brush sizes, undo/redo functionality, and real-time black-and-white preview. Export your designs as PNG files or transfer them directly to Badger2040 devices running MicroPython via Web Serial. The editor maintains device-native resolution while offering adjustable zoom levels and includes features like grid overlay, background image loading, and URL-based bookmarking for saving your work.

<!-- Generated from commit: 914fd7c3e36f51e88c6674ffa2d9557f881c8072 -->
<!-- topics: images-graphics -->
<!-- features: canvas, url-state, file-upload, web-serial -->
<!-- Generated from commit: 914fd7c3e36f51e88c6674ffa2d9557f881c8072 -->
4 changes: 3 additions & 1 deletion badge-repl.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Interact with a MicroPython device via the Web Serial API to execute Python commands in real-time through a browser-based REPL interface. This tool enables direct communication with compatible microcontroller boards, allowing users to run Python code, query system information, and manage files without requiring terminal software or drivers. The interface provides quick-access buttons for common operations like listing files, checking CPU frequency, and monitoring available memory.

<!-- Generated from commit: 5cdacf6eb6ce834dd3814386e6860ec22af5fd5d -->
<!-- topics: code-sandboxes -->
<!-- features: web-serial -->
<!-- Generated from commit: 5cdacf6eb6ce834dd3814386e6860ec22af5fd5d -->
3 changes: 2 additions & 1 deletion base64-gzip-decoder.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Decode base64-encoded gzip data to retrieve the original decompressed content. Paste your base64 string into the input field and click the Decode button to process the data. The decoder handles the conversion from base64 format and gzip decompression in sequence, displaying the result or providing detailed error messages if the input is invalid.

<!-- Generated from commit: 2ef8cb4d03cd338b88ee72f8d811d839f311c525 -->
<!-- topics: encoding-security -->
<!-- Generated from commit: 2ef8cb4d03cd338b88ee72f8d811d839f311c525 -->
4 changes: 3 additions & 1 deletion bbox-cropper.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Draw bounding boxes on images using an interactive cropping tool powered by CropperJS. Load an image by pasting, dragging and dropping, or selecting a file, then click and drag to create a box around your region of interest. The tool automatically outputs normalized coordinates as percentages of the image dimensions in a format ready for command-line use.

<!-- Generated from commit: d117432950c0c71f304ef9c89da6c91a83883df4 -->
<!-- topics: images-graphics -->
<!-- features: file-upload, drag-and-drop, clipboard -->
<!-- Generated from commit: d117432950c0c71f304ef9c89da6c91a83883df4 -->
4 changes: 3 additions & 1 deletion big-words.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Display and customize large text with real-time formatting options including fonts, colors, gradients, and effects. Double-click or double-tap the display area to open the settings panel and adjust text content, styling, and background appearance. Share your creations by saving the customized URL with all your settings encoded as query parameters.

<!-- Generated from commit: 88649b855ef1043bb078fb1aaaa5b7c3df702c5a -->
<!-- topics: text-writing, productivity -->
<!-- features: url-state -->
<!-- Generated from commit: 88649b855ef1043bb078fb1aaaa5b7c3df702c5a -->
4 changes: 3 additions & 1 deletion blackened-cauliflower-and-turkish-style-stew.docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

Track and manage two simultaneous recipes with this interactive cooking timer that displays the current step, upcoming tasks, and a complete timeline with clock times. The timer persists across browser sessions, allowing you to pause and resume your cooking progress at any point. Color-coded tags distinguish between the Cauliflower & Couscous and Chickpea Stew recipes to help you stay organized while juggling multiple dishes.

<!-- Generated from commit: d26b2be2f78c1c2539b38bb9e5d8b1a9c6831a6c -->
<!-- topics: productivity -->
<!-- features: local-storage -->
<!-- Generated from commit: d26b2be2f78c1c2539b38bb9e5d8b1a9c6831a6c -->
4 changes: 3 additions & 1 deletion blog-to-newsletter.docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

This tool generates formatted HTML newsletter content from blog entries, links, quotes, and other content sourced from a Datasette backup of simonwillison.net. Users can customize the newsletter by filtering content from the past 1-60 days, optionally excluding items already featured in previous newsletters, and reordering blog entries through an intuitive drag-and-drop interface. The generated HTML can be copied directly into Substack, with additional features including sponsor message customization, URL length warnings for email compatibility, and integration with previous newsletter archives to prevent duplicate content.

<!-- Generated from commit: 75a1f212df34d91eb25249426318ab5cdb8d49e4 -->
<!-- topics: productivity, text-writing -->
<!-- features: fetch-network, clipboard, local-storage, drag-and-drop -->
<!-- Generated from commit: 75a1f212df34d91eb25249426318ab5cdb8d49e4 -->
4 changes: 3 additions & 1 deletion bluesky-faves.docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

View liked posts from any Bluesky user by entering their profile URL, handle, or DID. This application fetches and displays a user's favorite posts with full post details including text, images, and engagement metrics, allowing you to browse and export the content in multiple formats. Simply enter a Bluesky profile identifier and the viewer will retrieve up to 200 of their most recent likes with the ability to load additional posts.

<!-- Generated from commit: 1eef44de4d0fd263637cda4aef562e49c976ad30 -->
<!-- topics: social-feeds -->
<!-- features: fetch-network, clipboard, url-state -->
<!-- Generated from commit: 1eef44de4d0fd263637cda4aef562e49c976ad30 -->
4 changes: 3 additions & 1 deletion bluesky-firehose.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Monitor real-time Bluesky feed data by connecting to the Bluesky Jetstream WebSocket service and viewing incoming posts and events. Send custom JSON messages to filter the feed by collection type, specific user DIDs, or other parameters, with all activity logged in the output panel for debugging and inspection. Use the provided keyboard shortcut (Ctrl/Cmd + Enter) to quickly send configuration updates to the WebSocket connection.

<!-- Generated from commit: 7c6af8eeabc7682b5f9ec2621e34bc771c5471d8 -->
<!-- topics: social-feeds -->
<!-- features: websockets -->
<!-- Generated from commit: 7c6af8eeabc7682b5f9ec2621e34bc771c5471d8 -->
4 changes: 3 additions & 1 deletion bluesky-quote-finder.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Search for quote posts on Bluesky by entering a post URL to discover all responses that quote the original post. The tool fetches and displays these quotes with options to sort by likes, recency, or oldest first, and provides direct links to view each quote on Bluesky or explore its thread context. A color-coded depth indicator helps visualize the conversation hierarchy.

<!-- Generated from commit: d61f13e06cb664aee69fbe12c21a472f2c1a0daf -->
<!-- topics: social-feeds -->
<!-- features: fetch-network, url-state -->
<!-- Generated from commit: d61f13e06cb664aee69fbe12c21a472f2c1a0daf -->
4 changes: 3 additions & 1 deletion bluesky-resolve.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
View and resolve Bluesky handles to their corresponding Decentralized Identifiers (DIDs) using the AT Protocol API. Enter a Bluesky handle in the format `username.bsky.social` to retrieve the associated DID, which serves as a unique identifier for accounts on the Bluesky network. This tool provides a simple interface for looking up handle-to-DID mappings through Bluesky's public resolver endpoint.

<!-- Generated from commit: 1472c5df0a4a8e97ee67543600403e642d504f0b -->
<!-- topics: social-feeds -->
<!-- features: fetch-network -->
<!-- Generated from commit: 1472c5df0a4a8e97ee67543600403e642d504f0b -->
4 changes: 3 additions & 1 deletion bluesky-search.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Search Bluesky posts using advanced filters and options to organize results by latest or top engagement. This tool requires authentication with your Bluesky account credentials and supports filtering by date range, author, mentions, language, domain, URL, and hashtags. Results can be exported as formatted markdown for easy sharing and documentation.

<!-- Generated from commit: 86aaf4865dc096a40771889e2b6a8abf3fe97c0d -->
<!-- topics: social-feeds -->
<!-- features: fetch-network, clipboard, local-storage, url-state -->
<!-- Generated from commit: 86aaf4865dc096a40771889e2b6a8abf3fe97c0d -->
4 changes: 3 additions & 1 deletion bluesky-thread.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
View Bluesky thread conversations with multiple display options including nested thread view, chronological sorting, and media support. This viewer fetches complete discussion threads from Bluesky posts and renders them with color-coded depth indicators, clickable reply relationships, and embedded images and videos. Users can switch between different viewing modes, copy thread text or raw JSON data, and optionally hide non-author replies to focus on the original poster's main conversation.

<!-- Generated from commit: e766dd32ea7be2d0ab72afaddfa7787cb690da77 -->
<!-- topics: social-feeds -->
<!-- features: fetch-network, clipboard, svg, url-state -->
<!-- Generated from commit: e766dd32ea7be2d0ab72afaddfa7787cb690da77 -->
4 changes: 3 additions & 1 deletion bluesky-timeline.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
View Bluesky social media timelines by authenticating with your account credentials and retrieving live feed data. The application automatically refreshes your timeline at regular intervals while displaying posts with author information, timestamps, and full JSON response data for advanced inspection. Credentials are securely stored locally in your browser for convenient access during future sessions.

<!-- Generated from commit: 7eff228bf303ad29a3ca006831ae7d5dae6201c1 -->
<!-- topics: social-feeds -->
<!-- features: fetch-network, local-storage -->
<!-- Generated from commit: 7eff228bf303ad29a3ca006831ae7d5dae6201c1 -->
4 changes: 3 additions & 1 deletion bookmarklets.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Access a collection of practical bookmarklets for web development and general browsing tasks. Each bookmarklet can be installed by dragging it to your bookmarks bar on desktop browsers or by copying the code for mobile Safari. The collection includes tools for revealing page anchor points and viewing page source code with formatting options, all presented with detailed documentation and source code inspection capabilities.

<!-- Generated from commit: 0804a5a97e69c724db4cab72661e5967730be7fe -->
<!-- topics: developer-tools -->
<!-- features: clipboard -->
<!-- Generated from commit: 0804a5a97e69c724db4cab72661e5967730be7fe -->
4 changes: 3 additions & 1 deletion box-shadow.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Generate custom CSS box-shadow effects with interactive controls and real-time preview. Adjust horizontal and vertical offsets, blur radius, spread radius, color, and opacity using intuitive sliders and color picker to visualize shadow changes instantly. Copy the generated CSS code directly to your clipboard for immediate use in your stylesheets.

<!-- Generated from commit: 44e0b09ad71ab22503ccf7edc0dbbec209bb2e05 -->
<!-- topics: css-layout -->
<!-- features: clipboard -->
<!-- Generated from commit: 44e0b09ad71ab22503ccf7edc0dbbec209bb2e05 -->
3 changes: 2 additions & 1 deletion broadcast-channel-chat.docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Send chat messages that synchronize instantly across multiple browser tabs using the Broadcast Channel API. Each tab displays messages sent from other tabs with a sync indicator, allowing real-time communication without requiring a backend server. Open multiple tabs of this page to see messages propagate automatically across all instances.

<!-- Generated from commit: 569bb9004a556ab797b3f6ba7ebe14f21b7514f6 -->
<!-- topics: reference-education -->
<!-- Generated from commit: 569bb9004a556ab797b3f6ba7ebe14f21b7514f6 -->
Loading