explaingit

simonw/datasette

11,055PythonAudience · dataComplexity · 2/5Setup · easy

TLDR

Datasette turns any SQLite database file into a browsable website and JSON API with a single command, no web development required, so you can share datasets publicly in minutes.

Mindmap

mindmap
  root((Datasette))
    What it does
      SQLite to website
      JSON API
      One command
    Target audience
      Data journalists
      Archivists
      Scientists
    Deployment
      Local server
      Heroku
      Google Cloud Run
      Browser via WASM
    Features
      Metadata file
      Plugin ecosystem
      Datasette Lite
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Publish a government or research dataset as a public website that anyone can browse and filter without coding.

USE CASE 2

Explore your browser history or any SQLite file interactively in the browser with no setup beyond pip install.

USE CASE 3

Deploy a searchable JSON API from a CSV or spreadsheet by converting it to SQLite and running one command.

USE CASE 4

Share archival data with a permanent public URL by deploying to Google Cloud Run or Heroku in minutes.

Tech stack

PythonSQLiteWebAssembly

Getting it running

Difficulty · easy Time to first run · 5min

Requires Python 3.8+ and any SQLite file, point Datasette at the file with one command and a local website starts immediately.

In plain English

Datasette is an open source tool for exploring and sharing data. You give it a SQLite database file, and it instantly turns that data into a browsable website and a JSON API that others can query. The project is aimed at data journalists, archivists, museum curators, local governments, scientists, and anyone else who has a dataset they want to make accessible to others without building a custom web application. Installation is straightforward. On a Mac you can use Homebrew. Otherwise you install it via pip, which is the standard Python package installer. It requires Python 3.8 or newer. Docker is also supported for those who prefer containers. Once installed, you point it at a database file with one command and a local web server starts on port 8001, ready to browse in any web browser. As a quick example, the README shows that you can point Datasette at your Google Chrome browser history file on a Mac, and it will give you a browsable table of your download history. This shows how the tool works on any SQLite file, not just purpose-built datasets. You can attach a metadata file to control what title, license, and data source information appears on the published site. This is useful when sharing data publicly, so visitors know where the data came from and under what terms they can use it. A single publish command can deploy the database plus the Datasette application to hosting services like Heroku or Google Cloud Run, giving you a public URL within minutes. There is also a version called Datasette Lite that runs entirely inside a web browser using WebAssembly, with no Python server required at all. The project has a Discord community, a newsletter, and extensive documentation at docs.datasette.io for those who want to go deeper with configuration, plugins, or custom deployments.

Copy-paste prompts

Prompt 1
I have a SQLite database of city budget data. Write a Datasette metadata.yml file that adds a title, description, and data source link so visitors know where the data came from.
Prompt 2
Show me how to deploy a Datasette instance with a local SQLite file to Google Cloud Run so I get a permanent public URL.
Prompt 3
Using Datasette Lite, embed a read-only view of a public SQLite dataset in a static HTML page with no server required.
Prompt 4
Write a Datasette custom SQL query that groups rows by month, counts entries per month, and formats the result as a chart using the built-in Vega plugin.
Prompt 5
I want to restrict certain Datasette tables to authenticated users only. Walk me through using the datasette-auth-passwords plugin to add login protection.
Open on GitHub → Explain another repo

← simonw on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.