DuckDB in the browser
Run full SQL analytics locally with the latest DuckDB 1.31.1 runtime—no round trips, no latency.
Transform static SQL into interactive DuckDB sessions you can embed in documentation, blog posts, product tours, and workshops—no servers, no setup, only fun.
SELECT
o_orderstatus AS status,
COUNT(*) AS total_orders,
ROUND(AVG(o_totalprice), 2) AS avg_value
FROM 'https://shell.duckdb.org/data/tpch/0_01/parquet/orders.parquet'
GROUP BY status
ORDER BY total_orders DESC;
PondPilot Widget wraps the power of DuckDB WASM in a tiny package that drops into any page. It keeps queries local, renders beautiful editors, and makes sharing analytical narratives delightful.
Run full SQL analytics locally with the latest DuckDB 1.31.1 runtime—no round trips, no latency.
Responsive editors, syntax highlighting, keyboard shortcuts, and light/dark theming tuned for docs and blogs.
Create fully custom themes with your own fonts, colors, and sizes. Perfect for matching your brand.
Run setup SQL once per page and optional cleanup SQL whenever the editor resets. Perfect for data prep.
Listen to the pondpilot:results event to build custom visualizations, charts, and maps from query data.
CDN-friendly, CSP-ready, and only ~22KB. Works anywhere static HTML runs, from Markdown to Next.js.
<pre> superpowers in under a minute.PondPilot auto-detects marked snippets and turns them into interactive notebooks on load. Prefer full control? Instantiate widgets programmatically and share a DuckDB instance across them.
pondpilot-snippet class to any <pre>.
<script src="https://unpkg.com/pondpilot-widget@1.4.0"></script>
<pre class="pondpilot-snippet">
SELECT 'Hello DuckDB' AS greeting;
</pre>
import 'pondpilot-widget';
const el = document.querySelector('#report');
const dbPromise = window.createDuckDB?.();
new PondPilot.Widget(el, {
theme: 'dark',
duckdbInstance: dbPromise,
showPoweredBy: false
});
Start from a preset or author your own palette with full control over colors, typography, and syntax tokens.
Synthwave-inspired dark mode with electric blues and glowing controls.
SELECT 'Midnight Neon' AS theme, 'Electric glow for night mode' AS vibe;
Warm oranges and soft browns for a welcoming editorial feel.
SELECT 'Sunset Sorbet' AS theme, 'Citrus gradients meet code' AS flavor;
IBM Plex Mono, neon greens, and amber accents for a vintage terminal aesthetic.
SELECT 'Retro Terminal' AS theme, 'CRT glow with modern ergonomics' AS energy;
Browse the theme authoring guide for the full token list and deeper customization tips.
The November 2025 release brings powerful customization and integration features. Author fully custom themes, automate data setup with init queries, and build visualizations with structured result events.
pondpilot:results event emits structured row data for custom visualizations.
React to query results with the new pondpilot:results event. Perfect for building custom charts,
maps, or any data visualization alongside your interactive SQL.
widget.addEventListener('pondpilot:results', (e) => {
const { rows, columns } = e.detail;
// Build a chart, update a map, etc.
updateVisualization(rows, columns);
});
// Or with init queries
new PondPilot.Widget(el, {
initQuery: `CREATE TABLE data AS
SELECT * FROM 'data.parquet';`,
resetQuery: 'DROP TABLE IF EXISTS data;'
});
Enables powerful data storytelling with custom visualizations.
Drop the widget into static sites, React, Vue, or your favorite docs stack—no build-step gymnastics required.
Add one script tag to Docusaurus, VitePress, Astro, or a plain HTML export and you're live.
// docusaurus.config.js
module.exports = {
scripts: ['https://unpkg.com/pondpilot-widget@1.4.0']
};
Import the package once, then wrap snippets in lightweight components for live tutorials.
import { useEffect, useRef } from 'react';
import 'pondpilot-widget';
export function SQLPlayground({ sql }) {
const ref = useRef();
useEffect(() => {
const widget = new PondPilot.Widget(ref.current);
return () => widget.destroy();
}, []);
return <pre ref={ref} className="pondpilot-snippet">{sql}</pre>;
}
Embed interactive SQL directly inside slides or LMS content to keep labs engaging.
<section data-auto-animate>
<h2>Run the query</h2>
<pre class="pondpilot-snippet">SELECT * FROM attendees;</pre>
</section>
Install the PondPilot Widget, point it at your code blocks, and give your readers a playground they won't forget. No backend, no waiting, just instant insight.