<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>WebAssembly on DuckDB Lab</title><link>https://duckdblab.org/en/tags/webassembly/</link><description>Recent content in WebAssembly on DuckDB Lab</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://duckdblab.org/en/tags/webassembly/index.xml" rel="self" type="application/rss+xml"/><item><title>DuckDB Online Shell: Run SQL in Your Browser, Zero Installation</title><link>https://duckdblab.org/en/post/duckdb-online-shell/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid>https://duckdblab.org/en/post/duckdb-online-shell/</guid><description>&lt;h2 id="introduction"&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Picture this: you&amp;rsquo;re at a client site doing a live demo, and the laptop you&amp;rsquo;re using has zero data analysis tools installed. Or you&amp;rsquo;re at a coffee shop and need to quickly verify some data logic, but your machine only has 4GB of RAM. Or your collaborator is on a locked-down corporate computer without any installation privileges.&lt;/p&gt;
&lt;p&gt;Traditional solutions fall short:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ask IT to install software — come back in 3 days&lt;/li&gt;
&lt;li&gt;Write a Python script on the spot — you&amp;rsquo;re 30 minutes in&lt;/li&gt;
&lt;li&gt;Use Google Sheets — dataset is too large to upload&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Enter &lt;strong&gt;DuckDB Online Shell&lt;/strong&gt; (&lt;a class="link" href="https://shell.duckdb.org" target="_blank" rel="noopener"
 &gt;shell.duckdb.org&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Open a browser, visit this URL, and you have a full &lt;strong&gt;DuckDB v1.5.2&lt;/strong&gt; interactive query environment — all computation happens locally in your browser, and &lt;strong&gt;your data never leaves your machine&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This article is a comprehensive guide to what this tool can do, how to use it, and when it shines.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-what-is-shellduckdborg"&gt;1. What Is shell.duckdb.org?
&lt;/h2&gt;&lt;h3 id="core-technology-webassembly--duckdb"&gt;Core Technology: WebAssembly + DuckDB
&lt;/h3&gt;&lt;p&gt;The DuckDB Online Shell is powered by &lt;strong&gt;WebAssembly (Wasm)&lt;/strong&gt;. The DuckDB C++ engine is compiled to Wasm bytecode and runs directly in your browser. This means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;No server required&lt;/strong&gt; — all queries execute locally in your browser&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;No installation&lt;/strong&gt; — open a web page, zero configuration&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Data stays local&lt;/strong&gt; — files you load never leave your computer&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Cross-platform&lt;/strong&gt; — Windows, macOS, Linux, iPad, it all works&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Offline capable&lt;/strong&gt; — once loaded, you can disconnect and keep working&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="comparison-with-traditional-approaches"&gt;Comparison with Traditional Approaches
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Dimension&lt;/th&gt;
 &lt;th&gt;Online Shell&lt;/th&gt;
 &lt;th&gt;Local Install&lt;/th&gt;
 &lt;th&gt;Jupyter Notebook&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Setup Steps&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;3-5&lt;/td&gt;
 &lt;td&gt;5-10&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Time to First Query&lt;/td&gt;
 &lt;td&gt;2 seconds&lt;/td&gt;
 &lt;td&gt;5-30 minutes&lt;/td&gt;
 &lt;td&gt;2-5 minutes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Permissions Needed&lt;/td&gt;
 &lt;td&gt;None&lt;/td&gt;
 &lt;td&gt;Admin rights&lt;/td&gt;
 &lt;td&gt;Python env&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Memory Limit&lt;/td&gt;
 &lt;td&gt;Browser cap&lt;/td&gt;
 &lt;td&gt;System RAM&lt;/td&gt;
 &lt;td&gt;System RAM&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Shareability&lt;/td&gt;
 &lt;td&gt;One-click URL&lt;/td&gt;
 &lt;td&gt;Not shareable&lt;/td&gt;
 &lt;td&gt;Needs server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="technology-stack"&gt;Technology Stack
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│ DuckDB Web Shell UI │
├─────────────────────────────────────┤
│ xterm.js (Terminal Emulator) │
├─────────────────────────────────────┤
│ DuckDB Wasm (WebAssembly Engine) │
├─────────────────────────────────────┤
│ Web API (File API, IndexedDB) │
├─────────────────────────────────────┤
│ Browser (Chrome/Firefox/Safari) │
└─────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="2-interface--basic-operations"&gt;2. Interface &amp;amp; Basic Operations
&lt;/h2&gt;&lt;h3 id="page-layout"&gt;Page Layout
&lt;/h3&gt;&lt;p&gt;Open &lt;a class="link" href="https://shell.duckdb.org" target="_blank" rel="noopener"
 &gt;shell.duckdb.org&lt;/a&gt; and you&amp;rsquo;ll see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Top navigation&lt;/strong&gt;: New (reset session), Share (generate link), Import (upload files), Datasets (preloaded sample data)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Main area&lt;/strong&gt;: A full terminal emulator with color output and syntax highlighting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme toggle&lt;/strong&gt;: Light/dark mode support&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="navigation-buttons"&gt;Navigation Buttons
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Button&lt;/th&gt;
 &lt;th&gt;Function&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;New&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Start a fresh session, resetting all state&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Share&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Generate a shareable URL for the current session&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Import&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Select files from your local computer to load&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Datasets&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Quickly load official example datasets&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="available-datasets"&gt;Available Datasets
&lt;/h3&gt;&lt;p&gt;The Datasets menu comes with 7 pre-configured datasets:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Dataset&lt;/th&gt;
 &lt;th&gt;Format&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;NL Railway (DuckLake)&lt;/td&gt;
 &lt;td&gt;DuckLake&lt;/td&gt;
 &lt;td&gt;Dutch railway timetable data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Star Trek (CSV)&lt;/td&gt;
 &lt;td&gt;CSV&lt;/td&gt;
 &lt;td&gt;Star Trek episode cast information&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Train Services (Parquet)&lt;/td&gt;
 &lt;td&gt;Parquet&lt;/td&gt;
 &lt;td&gt;Railway service data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;TPCH on DuckLake&lt;/td&gt;
 &lt;td&gt;DuckLake&lt;/td&gt;
 &lt;td&gt;TPC-H benchmark data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;NYC Taxi (Parquet)&lt;/td&gt;
 &lt;td&gt;Parquet&lt;/td&gt;
 &lt;td&gt;NYC taxi trip data (~15M rows)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;NYC Bike Trips (Spatial)&lt;/td&gt;
 &lt;td&gt;Spatial&lt;/td&gt;
 &lt;td&gt;NYC bike sharing + geospatial data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Iceberg (S3 Tables)&lt;/td&gt;
 &lt;td&gt;Iceberg&lt;/td&gt;
 &lt;td&gt;Apache Iceberg tables on S3&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Click any dataset and the Shell automatically loads it with example queries — one click to experience DuckDB&amp;rsquo;s power.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-core-commands"&gt;3. Core Commands
&lt;/h2&gt;&lt;h3 id="31-general-dot-commands"&gt;3.1 General Dot Commands
&lt;/h3&gt;&lt;p&gt;DuckDB Shell provides special dot-prefixed commands:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Show help for all available commands
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Show extended help information
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Display current DuckDB version
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tables&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- List all registered tables
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;schema&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;table&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Show CREATE statement for a table
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;off&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Enable/disable query timing
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;maxrows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Set maximum display rows
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;maxwidth&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Set maximum display width
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;mode&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;markdown&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Switch output mode (markdown, csv, json, etc.)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nullvalue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;N/A&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Set NULL display text
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;separator&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Set column separator
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;off&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Toggle column header display
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;highlight&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;off&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Toggle syntax highlighting
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="32-files-file-management-commands"&gt;3.2 &lt;code&gt;.files&lt;/code&gt; File Management Commands
&lt;/h3&gt;&lt;p&gt;This is &lt;strong&gt;one of the most useful command groups&lt;/strong&gt; in the online shell. The &lt;code&gt;.files&lt;/code&gt; commands manage files uploaded to your browser&amp;rsquo;s local memory:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- List all registered files
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;drop&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Remove a specific file
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;drop&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Clear all registered files
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;Note: There are two ways to upload files — click the Import button or use the &lt;code&gt;.pick&lt;/code&gt; command.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="33-other-useful-commands"&gt;3.3 Other Useful Commands
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pick&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Open file picker dialog from your computer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Hello&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Print literal text to the terminal
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;share&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Generate a shareable session URL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;show&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Display current configuration settings
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;last&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Re-render the last result without truncation
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;large_number_rendering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;MODE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Toggle readable display of large numbers
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;progress_bar&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Enable progress bar display
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="4-practical-examples"&gt;4. Practical Examples
&lt;/h2&gt;&lt;h3 id="example-1-query-a-remote-parquet-file-directly"&gt;Example 1: Query a Remote Parquet File Directly
&lt;/h3&gt;&lt;p&gt;This is one of DuckDB&amp;rsquo;s most powerful features — &lt;strong&gt;run SQL directly on a URL&lt;/strong&gt; without any download step:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Load the HTTPFS extension
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;LOAD&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;httpfs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Count rows in a remote Parquet file
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/data/yellow_tripdata_2010-01.parquet&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌──────────────┐
│ count_star() │
│ int64 │
├──────────────┤
│ 14863778 │
└──────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;14.8 million rows, returned in seconds — all computed locally in your browser.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Multi-column aggregation
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trips&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tip_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avg_tip&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trip_distance&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avg_distance&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/data/yellow_tripdata_2010-01.parquet&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌──────────┬────────────────────┬────────────────────┐
│ trips │ avg_tip │ avg_distance │
│ int64 │ double │ double │
├──────────┼────────────────────┼────────────────────┤
│ 14863778 │ 0.6714118288096592 │ 2.6282668161494915 │
└──────────┴────────────────────┴────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="example-2-query-a-local-csv-file"&gt;Example 2: Query a Local CSV File
&lt;/h3&gt;&lt;p&gt;Click Import (or run &lt;code&gt;.pick&lt;/code&gt;), select a CSV file from your computer, then query it directly:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- The filename (without extension) becomes the table name
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- If you uploaded &amp;#34;sales.csv&amp;#34;:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sales&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Aggregate by category
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total_sales&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;order_count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avg_order_value&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sales&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total_sales&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="example-3-query-a-remote-csv-file"&gt;Example 3: Query a Remote CSV File
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;LOAD&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;httpfs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/data/Star_Trek Season_1.csv&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="example-4-multi-source-join"&gt;Example 4: Multi-Source JOIN
&lt;/h3&gt;&lt;p&gt;The online shell supports cross-file JOINs — load multiple files and run relational queries:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- After importing orders.csv and customers.csv:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total_spent&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;JOIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;customers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total_spent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="example-5-load-ducklake-format"&gt;Example 5: Load DuckLake Format
&lt;/h3&gt;&lt;p&gt;DuckLake is DuckDB&amp;rsquo;s native data lake format:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Load the Dutch railway dataset
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ATTACH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/datalake/nl railway.ducklake&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nl_railway&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;TYPE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ducklake&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;USE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nl_railway&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tables&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Query train services
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="example-6-enable-timer-for-performance-testing"&gt;Example 6: Enable Timer for Performance Testing
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;passenger_count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trip_count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avg_fare&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://blobs.duckdb.org/data/yellow_tripdata_2010-01.parquet&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;passenger_count&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;passenger_count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After enabling &lt;code&gt;.timer&lt;/code&gt;, every query shows its execution duration at the bottom — great for benchmarking and optimization.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="5-typical-use-cases"&gt;5. Typical Use Cases
&lt;/h2&gt;&lt;h3 id="scenario-1-analysis-on-a-borrowed-machine"&gt;Scenario 1: Analysis on a Borrowed Machine
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: You&amp;rsquo;re traveling and the borrowed laptop has no data tools installed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Open a browser, visit shell.duckdb.org, upload data files or query remote Parquet URLs directly, and start analyzing immediately.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real-world story&lt;/strong&gt;:&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;A data analyst was at a client site needing to quickly analyze 50GB of server logs. The client&amp;rsquo;s laptop had nothing but a browser. He had the client place the Parquet files on S3, ran three SQL statements in the Online Shell, and had preliminary findings within five minutes.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="scenario-2-client-demos"&gt;Scenario 2: Client Demos
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: You need to demo data analysis capabilities to a client but don&amp;rsquo;t want to waste time configuring an environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Place your data as Parquet/CSV on a publicly accessible URL&lt;/li&gt;
&lt;li&gt;Use the Share feature to generate a link pre-loaded with your queries&lt;/li&gt;
&lt;li&gt;The client clicks the link and sees the full analysis&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Why this is powerful&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No software installation on the client&amp;rsquo;s machine&lt;/li&gt;
&lt;li&gt;No version compatibility concerns&lt;/li&gt;
&lt;li&gt;The client can try it themselves, building trust&lt;/li&gt;
&lt;li&gt;Share links preserve the full query history&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="scenario-3-collaborators-without-install-permissions"&gt;Scenario 3: Collaborators Without Install Permissions
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Your collaborator works on a locked-down corporate computer and cannot install any software.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Share data via Import or a public URL. They can do all data exploration right in the browser.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No admin rights required&lt;/li&gt;
&lt;li&gt;No IT approval process needed&lt;/li&gt;
&lt;li&gt;Data and queries execute locally — secure and compliant&lt;/li&gt;
&lt;li&gt;One-click session sharing with &lt;code&gt;.share&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="scenario-4-teaching-and-training"&gt;Scenario 4: Teaching and Training
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: In an SQL training class, every student needs their own DuckDB environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: All students open shell.duckdb.org in their browser — zero setup required.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Teaching advantages&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No environment configuration, start teaching in 5 minutes&lt;/li&gt;
&lt;li&gt;Each student works independently&lt;/li&gt;
&lt;li&gt;Students can use &lt;code&gt;.share&lt;/code&gt; to show their work to the instructor&lt;/li&gt;
&lt;li&gt;Built-in Datasets provide ready-made teaching data&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="scenario-5-rapid-prototyping"&gt;Scenario 5: Rapid Prototyping
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: You want to quickly verify a SQL query logic without firing up your full development environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Open the Online Shell, write SQL, see results. Done in seconds.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Verify a date calculation:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;2026-05-08&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;INTERVAL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1 month&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;next_month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;date_trunc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;month&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;2026-05-08&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;month_start&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;last_day&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;2026-05-08&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;month_end&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="6-limitations--considerations"&gt;6. Limitations &amp;amp; Considerations
&lt;/h2&gt;&lt;p&gt;While incredibly useful, the Online Shell has some important limitations:&lt;/p&gt;
&lt;h3 id="memory-constraints"&gt;Memory Constraints
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Browser Wasm memory is typically capped at &lt;strong&gt;4GB&lt;/strong&gt; (Chrome default)&lt;/li&gt;
&lt;li&gt;For datasets over 2GB, consider sampling or filtering first&lt;/li&gt;
&lt;li&gt;Large JOIN operations may exceed available memory&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="file-size-recommendations"&gt;File Size Recommendations
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;CSV files: &lt;strong&gt;&amp;lt; 500MB&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Parquet files: &lt;strong&gt;&amp;lt; 2GB&lt;/strong&gt; (Parquet&amp;rsquo;s columnar compression means more data per MB)&lt;/li&gt;
&lt;li&gt;Beyond this, use the native DuckDB installation&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="network-dependency"&gt;Network Dependency
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;First load requires a network connection to download the Wasm engine (~5MB)&lt;/li&gt;
&lt;li&gt;Querying remote files via URL requires the internet&lt;/li&gt;
&lt;li&gt;But once loaded, you can disconnect and continue working with imported data&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="unsupported-features"&gt;Unsupported Features
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Custom extensions cannot be installed (extensions must be compiled into Wasm)&lt;/li&gt;
&lt;li&gt;Direct disk writes are not possible (browser sandbox restrictions)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.files add&lt;/code&gt; is not supported in the current version (use Import button or &lt;code&gt;.pick&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Multithreaded parallelism is unavailable (Wasm single-thread limitation)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="7-comparison-with-other-online-tools"&gt;7. Comparison with Other Online Tools
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;DuckDB Shell&lt;/th&gt;
 &lt;th&gt;SQLite Online&lt;/th&gt;
 &lt;th&gt;Google Sheets&lt;/th&gt;
 &lt;th&gt;BigQuery Console&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Execution Engine&lt;/td&gt;
 &lt;td&gt;Local browser&lt;/td&gt;
 &lt;td&gt;Local browser&lt;/td&gt;
 &lt;td&gt;Cloud server&lt;/td&gt;
 &lt;td&gt;Cloud server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Privacy&lt;/td&gt;
 &lt;td&gt;✅ Stays local&lt;/td&gt;
 &lt;td&gt;✅ Stays local&lt;/td&gt;
 &lt;td&gt;❌ Uploaded&lt;/td&gt;
 &lt;td&gt;❌ Uploaded&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Offline Capable&lt;/td&gt;
 &lt;td&gt;✅ After load&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Max Data Size&lt;/td&gt;
 &lt;td&gt;~2GB&lt;/td&gt;
 &lt;td&gt;~100MB&lt;/td&gt;
 &lt;td&gt;~10M rows&lt;/td&gt;
 &lt;td&gt;Unlimited&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Parquet Support&lt;/td&gt;
 &lt;td&gt;✅ Native&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SQL Dialect&lt;/td&gt;
 &lt;td&gt;Modern OLAP SQL&lt;/td&gt;
 &lt;td&gt;Traditional SQL&lt;/td&gt;
 &lt;td&gt;Limited SQL&lt;/td&gt;
 &lt;td&gt;Standard SQL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Learning Curve&lt;/td&gt;
 &lt;td&gt;Low&lt;/td&gt;
 &lt;td&gt;Low&lt;/td&gt;
 &lt;td&gt;Low&lt;/td&gt;
 &lt;td&gt;High&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cost&lt;/td&gt;
 &lt;td&gt;Free&lt;/td&gt;
 &lt;td&gt;Free&lt;/td&gt;
 &lt;td&gt;Free&lt;/td&gt;
 &lt;td&gt;Pay-per-use&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Scalability&lt;/td&gt;
 &lt;td&gt;Browser-bound&lt;/td&gt;
 &lt;td&gt;Browser-bound&lt;/td&gt;
 &lt;td&gt;Good collab&lt;/td&gt;
 &lt;td&gt;Enterprise&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="8-monetization-ideas"&gt;8. Monetization Ideas
&lt;/h2&gt;&lt;h3 id="81-knowledge-products-around-the-shell"&gt;8.1 Knowledge Products Around the Shell
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Product idea: Zero-Install SQL Bootcamp&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Leverage the fact that the Shell requires no setup to teach SQL to non-technical audiences:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course title&lt;/strong&gt;: &amp;ldquo;Learn SQL in 3 Days — No Software Required&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target audience&lt;/strong&gt;: Operations, Marketing, Sales, HR — anyone non-technical&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selling point&lt;/strong&gt;: No Python, no environment, just a browser&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pricing&lt;/strong&gt;: $19-$99/person&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Delivery&lt;/strong&gt;: Pre-loaded Share links for each exercise&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Delivery format&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Prepare 20 SQL exercises at different difficulty levels&lt;/li&gt;
&lt;li&gt;Each exercise has a pre-loaded Share link&lt;/li&gt;
&lt;li&gt;Students complete all exercises in their browser&lt;/li&gt;
&lt;li&gt;Homework submitted via &lt;code&gt;.share&lt;/code&gt; for instructor review&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="82-corporate-training-services"&gt;8.2 Corporate Training Services
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Product idea: Data Literacy Workshops&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Many companies want to upskill employees in data analysis but are blocked by IT security policies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problem: Employees only have browsers, no install permissions&lt;/li&gt;
&lt;li&gt;Solution: DuckDB Shell-based data analysis workshops&lt;/li&gt;
&lt;li&gt;Pricing: $500-$5,000/session (per day or half-day)&lt;/li&gt;
&lt;li&gt;Selling point: Zero install, zero IT involvement, immediate productivity&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="83-tech-blog-with-interactive-sql"&gt;8.3 Tech Blog with Interactive SQL
&lt;/h3&gt;&lt;p&gt;Use the Share feature to embed interactive SQL queries in blog posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;End each article with a Share link — readers can reproduce your analysis with one click&lt;/li&gt;
&lt;li&gt;Build an audience, then monetize through ads, paid newsletters, or consulting&lt;/li&gt;
&lt;li&gt;Reference: &amp;ldquo;Interactive blog posts&amp;rdquo; regularly hit #1 on Hacker News and Reddit&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="84-embedded-data-preview-for-saas-products"&gt;8.4 Embedded Data Preview for SaaS Products
&lt;/h3&gt;&lt;p&gt;Integrate DuckDB Shell into your SaaS offering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When users export data from your product, offer an &amp;ldquo;open in browser&amp;rdquo; feature&lt;/li&gt;
&lt;li&gt;Users can analyze their exports immediately without leaving the browser&lt;/li&gt;
&lt;li&gt;Position as a premium feature to increase conversion&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="85-youtubetiktok-video-content"&gt;8.5 YouTube/TikTok Video Content
&lt;/h3&gt;&lt;p&gt;Create a video series demonstrating the Shell&amp;rsquo;s instant-on capability:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Episode 1&lt;/strong&gt;: DuckDB Shell in 60 seconds — analyze data with zero setup&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 2&lt;/strong&gt;: 5 SQL tricks to replace Excel (browser edition)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 3&lt;/strong&gt;: Analyzing 14 million NYC taxi rows in a browser — live!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 4&lt;/strong&gt;: The ultimate demo hack: SQL analytics on any computer in 30 seconds&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Video content is perfect for showing the Shell&amp;rsquo;s immediacy — it&amp;rsquo;s visually compelling and easy to share.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="9-faq"&gt;9. FAQ
&lt;/h2&gt;&lt;h3 id="q-does-my-data-get-uploaded-to-duckdb-servers"&gt;Q: Does my data get uploaded to DuckDB servers?
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;No.&lt;/strong&gt; All computation happens locally in your browser via WebAssembly. Data loaded into memory never leaves your computer.&lt;/p&gt;
&lt;h3 id="q-how-large-of-a-dataset-can-i-handle"&gt;Q: How large of a dataset can I handle?
&lt;/h3&gt;&lt;p&gt;Browser Wasm typically has a 4GB memory limit. Keep CSV files under 500MB and Parquet files under 2GB. For larger datasets, use the native DuckDB installation.&lt;/p&gt;
&lt;h3 id="q-can-i-use-it-offline"&gt;Q: Can I use it offline?
&lt;/h3&gt;&lt;p&gt;Yes. After the initial page load (which downloads the ~5MB Wasm engine), you can disconnect from the internet and continue working with data you&amp;rsquo;ve already imported.&lt;/p&gt;
&lt;h3 id="q-what-file-formats-are-supported"&gt;Q: What file formats are supported?
&lt;/h3&gt;&lt;p&gt;All formats DuckDB supports: CSV, Parquet, JSON, Excel (with extension), and more. With the HTTPFS extension, you can also query remote files from S3 and GCS.&lt;/p&gt;
&lt;h3 id="q-what-does-a-share-link-contain"&gt;Q: What does a Share link contain?
&lt;/h3&gt;&lt;p&gt;A Share link encodes your SQL query history. When the recipient opens the link, all queries are replayed, producing the same results (assuming the data source is accessible).&lt;/p&gt;
&lt;h3 id="q-how-do-i-export-query-results"&gt;Q: How do I export query results?
&lt;/h3&gt;&lt;p&gt;Use &lt;code&gt;.mode csv&lt;/code&gt; to switch to CSV output mode, then copy the terminal output. For bulk exports, use the local DuckDB installation.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="10-conclusion"&gt;10. Conclusion
&lt;/h2&gt;&lt;p&gt;DuckDB Online Shell is a &amp;ldquo;secret weapon&amp;rdquo; in the data analyst&amp;rsquo;s toolkit. No installation, no configuration, just a browser and a URL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Its core value proposition:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Zero barrier to entry&lt;/strong&gt; — anyone with a browser can use it&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data privacy&lt;/strong&gt; — computation is local, data never leaves your machine&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full-featured&lt;/strong&gt; — supports DuckDB&amp;rsquo;s core SQL syntax and file formats&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versatile&lt;/strong&gt; — from ad-hoc queries to teaching, demos to collaboration&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Next time you find yourself in any of these situations, don&amp;rsquo;t install software — try shell.duckdb.org:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Analyzing data on a borrowed machine&lt;/li&gt;
&lt;li&gt;Doing a client demo without environment setup&lt;/li&gt;
&lt;li&gt;Collaborating with someone on a locked-down computer&lt;/li&gt;
&lt;li&gt;Quickly validating a SQL query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Visit &lt;a class="link" href="https://shell.duckdb.org" target="_blank" rel="noopener"
 &gt;shell.duckdb.org&lt;/a&gt; and start your analysis in three seconds.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;This article is based on DuckDB Web Shell v1.5.2 (Variegata). DuckDB is an open-source embedded OLAP database; the Web Shell is a community WebAssembly port of the original project.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>