Overview
Datasette is an open source multi-tool for exploring and publishing data. You point it at a SQLite database file and it starts a web server that turns that file into a website: every table gets a browsable page with sorting and filtering, every query gets a shareable URL, and every page has a matching JSON endpoint. Nothing has to be modelled or configured first — the schema already in the file is the interface.
The second half of the tool is publishing. Datasette ships commands that package a database together with the server and deploy it to a host such as Heroku or Google Cloud Run, so a dataset that was a local file becomes a public, linkable site. A metadata file carries licence and source attribution alongside the data, which is the part that matters for journalism and archival work. Datasette Lite goes further and runs the whole thing as WebAssembly in the browser, with no server at all.
Datasette is maintained by Simon Willison and needs Python 3.8 or later. A large plugin ecosystem extends it with authentication, visualisations, extra output formats and more, and it sits at the centre of a family of related tools — sqlite-utils for building and reshaping the databases it reads, and the Dogsheep personal-analytics projects built on top of both. Its audience is data journalists, museum curators, archivists and researchers, and in LLM work it is a convenient way to browse a scraped or logged corpus before that corpus is embedded or evaluated.
What it does
- Serve any SQLite database as a website where each table is a browsable, sortable, filterable page
- Get a JSON API for every table and every custom SQL query, with no extra code
- Publish a database to Heroku or Google Cloud Run with a single publish command
- Attach licence and source attribution to a dataset through a metadata file
- Run entirely in the browser through Datasette Lite, a WebAssembly build that needs no server
- Extend the server with plugins for authentication, charts, extra export formats and custom pages
Getting started
Install from PyPI or Homebrew, then point the server at a database file. Datasette requires Python 3.8 or higher.
Install Datasette
Available on PyPI and in Homebrew; Docker images and other options are covered in the installation docs.
pip install datasette
# or on macOS
brew install datasetteServe a database
Start the local web server against a SQLite file. It listens on port 8001 by default.
datasette serve path/to/database.dbRead the JSON API
Every page has a JSON twin — append .json to a table or query URL to get the same data back as JSON.
curl 'http://localhost:8001/database/table.json'Publish it
The publish commands bundle the database with the server and deploy it to a hosting provider.
datasette publish cloudrun path/to/database.db --service my-data
datasette publish heroku path/to/database.dbCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Publish a public, linkable copy of a dataset with its licence and source recorded alongside it
- Explore an unfamiliar SQLite file in a browser instead of writing throwaway SQL scripts
- Give a dataset a read-only JSON API so other tools and notebooks can query it over HTTP
- Browse and spot-check a scraped or logged corpus before embedding, sampling or evaluating it for LLM work
How Datasette compares
Datasette alongside other open-source data wrangling tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Hugging Face Datasets | ★ 22k | An Apache Arrow-backed Python library that loads datasets from the Hugging Face Hub or local files in one line and maps, filters and streams them without holding them in RAM. |
| sqlite-utils | ★ 2.2k | A Python CLI and library that turns JSON, CSV and TSV into SQLite databases, creating schemas automatically and adding full-text search, table transforms and migrations. |
| Datasette | — | Turn a SQLite file into a browsable website with a JSON API |