An open source multi-tool for exploring and publishing data

PyPI Changelog Python 3.x License discord

Annotated version of this introductory video

Datasette is a tool for exploring and publishing data. It helps people take data of any shape, analyze and explore it, and publish it as an interactive website and accompanying API.

Datasette is aimed at data journalists, museum curators, archivists, local governments, scientists, researchers and anyone else who has data that they wish to share with the world. It is part of a wider ecosystem of 40 tools and 99 plugins dedicated to making working with structured data as productive as possible.

Try a demo and explore 33,000 power plants around the world, then follow the tutorial or take a look at some other examples of Datasette in action.

Then read how to get started with Datasette, subscribe to the monthly-ish newsletter and consider signing up for office hours for an in-person conversation about the project.

New: Datasette Desktop - a macOS desktop application for easily running Datasette on your own computer!

Exploratory data analysis

Import data from CSVs, JSON, database connections and more. Datasette will automatically show you patterns in your data and help you share your findings with your colleagues.

Instant data publishing

datasette publish lets you instantly publish your data to hosting providers like Google Cloud Run, Heroku or Vercel.

Rapid prototyping

Spin up a JSON API for any data in minutes. Use it to prototype and prove your ideas without building a custom backend.

Latest news

8th September 2022 #

Exploring the training data behind Stable Diffusion describes the process of building and deploying a 4GB searchable SQLite database using Datasette, starting with Parquet data that was used to train the Stable Diffusion image generation model. See also Exploring 12 Million of the 2.3 Billion Images Used to Train Stable Diffusion’s Image Generator.

21st August 2022 #

Analyzing ScotRail audio announcements with Datasette—from prototype to production provides a detailed walk-through of the process of constructing an initial rapid prototype using Datasette Lite, extending it with a custom plugin and then deploying it as a full Datasette instance using GitHub Actions and Vercel.

14th August 2022 #

Datasette 0.62 introduces compatibility with Pyodide for Datasette Lite, and incorporates a number of bug fixes, plugin hook upgrades and other improvements.

31st July 2022 #

New tutorial and accompanying ten minute video: Cleaning data with sqlite-utils and Datasette.

30th June 2022 #

s3-ocr is a new tool which can run OCR (via Amazon Textract) against every PDF file in an S3 bucket and write the results to a searchable SQLite database, ready to use with Datasette. Read more about it in s3-ocr: Extract text from PDF files stored in an S3 bucket.

5th May 2022 #

Datasette Lite is a new way to run Datasette: entirely in your browser, thanks to the Pyodide project which provides a full Python environment compiled to WebAssembly. You can use it to explore any SQLite database file hosted on a CORS-enabled static hosting provider, which includes GitHub and GitHub Pages. Read more about this project in Datasette Lite: a server-side Python web application running in a browser.

12th April 2022 #

Datasette for geospatial analysis describes how Datasette can be used in conjunction with SpatiaLite to work with geospatial data, including details of several geospatial plugins and tools from the Datasette ecosystem.

23rd March 2022 #

Datasette 0.61 introduces two potentially backwards-incompatible changes in preparation for the forthcoming 1.0 release: hashed URL mode has been moved to a new plugin, and the way URLs are generated to tables or databases containing special characters such as . or / has changed. Datasette 0.61.1 fixes a small bug in that release. See also the annotated release notes for these two versions.

27th February 2022 #

The first two of an ongoing series of official Datasette tutorials are now available: Exploring a database with Datasette introduces the Datasette web interface and shows how it can be used to explore a new database, and Learn SQL with Datasette provides an introduction to SQL using Datasette as a learning environment.

13th January 2022 #

Datasette 0.60 adds a new filters_from_request plugin hook, new internal methods for writing to the database, better performance and various faceting improvements. See also the annotated release notes.

5th December 2021 #

Observable notebooks recently added a SQL cell type, allowing SQL queries to be executed as part of an interactive notebook workflow. Alex Garcia built a Datasette Client for these which allows you to excute queries against any Datasette instance and explore and visualize the results using JavaScript code running in a notebook.

14th October 2021 #

Datasette 0.59 adds column descriptions in metadata, a new register_command plugin hook, enhanced --cors support and a bunch of other fixes and documentation improvements. See also the annotated release notes.

8th September 2021 #

Datasette Desktop is a new macOS desktop application version of Datasette, which supports opening SQLite files on your computer, importing CSV files and installing plugins. I wrote more about how it works in Datasette Desktop—a macOS desktop application for Datasette.

28th July 2021 #

The Baked Data architectural pattern describes a pattern commonly used with Datasette where the content for a site is bundled inside a SQLite database file and included alongside templates and application code in a deployment to a serverless hosting provider.

15th July 2021 #

Datasette 0.58 has new plugin hooks, a huge performance improvement for faceting, support for Unix domain sockets and several other improvements. Read the annotated release notes for extra background and context on the release.

All news

Latest releases

26th September 2022

datasette 0.63a0 - An open source multi-tool for exploring and publishing data

  • The prepare_jinja2_environment(env, datasette) plugin hook now accepts an optional datasette argument. Hook implementations can also now return an async function which will be awaited automatically. (#1809)
  • --load-extension option now supports entrypoints. Thanks, Alex Garcia. (#1789)
  • New tutorial: Cleaning data with sqlite-utils and Datasette.
  • Facet size can now be set per-table with the new facet_size table metadata option. (#1804)
  • truncate_cells_html setting now also affects long URLs in columns. (#1805)
  • Database(is_mutable=) now defaults to True. (#1808)
  • Non-JavaScript textarea now increases height to fit the SQL query. (#1786)
  • More detailed command descriptions on the CLI reference page. (#1787)
  • Datasette no longer enforces upper bounds on its depenedencies. (#1800)
  • Facets are now displayed with better line-breaks in long values. Thanks, Daniel Rech. (#1794)
  • The settings.json file used in Configuration directory mode is now validated on startup. (#1816)

16th September 2022

datasette-sandstorm-support 0.2 - Authentication and permissions for Datasette on Sandstorm

15th September 2022

s3-credentials 0.14 - A tool for creating credentials for accessing S3 buckets

  • s3-credentials put-objects command (docs) for uploading more than one file or directory to an S3 bucket at a time. #68
  • s3-credentials get-objects command (docs) for downloading multiple files from an S3 bucket. #78

shot-scraper 0.16 - A command-line utility for taking automated screenshots of websites

  • Fixed error message displayed when attempting to use --log-requests on a page that includes a redirect. #90
  • --log-requests output now includes a "status": 200 field indicating the HTTP status code returned by that response.

14th September 2022

datasette-edit-templates 0.1a0 - Plugin allowing Datasette templates to be edited within Datasette

  • Initial alpha release. #1

datasette-sandstorm-support 0.1 - Authentication and permissions for Datasette on Sandstorm

  • Initial release.

13th September 2022

shot-scraper 0.15.1 - A command-line utility for taking automated screenshots of websites

  • Fix error message shown when --log-requests tries to log a request with an unknown response size. #89

12th September 2022

shot-scraper 0.15

  • New --log-requests option for logging out newline-delimited JSON showing all requests made while rendering a page, including image and asset loads. #88
  • New shot-scraper pdf formatting options: --format, --width, --height, --scale and --print-background. Thanks, Eddie Chapman. #87
  • Removed -h shortcut for help - use --help instead. -h was clashing with the shorter version of --height. Thanks, Matthew Bafford. #84

9th September 2022

datasette-upload-dbs 0.1.2 - Upload SQLite database files to Datasette

  • Uploaded databases are now treated as mutable - previously they were incorrectly configured to be immutable. #6

8th September 2022

datasette-upload-csvs 0.8.2 - Datasette plugin for uploading CSV files and converting them to database tables

  • Removed debug print statement which would otherwise show up in log output.

datasette-upload-csvs 0.8.1

  • Fixed compatibility bug where running this plugin at the same time as datasette-upload-dbs could trigger errors. #30

datasette-upload-csvs 0.8

  • The user now gets to confirm the name of the table to be created before uploading the file. #17
  • Column types are automatically detected based on the uploaded data. Previously all columns were TEXT columns. #26
  • If a table with the desired name already exists, a suffix of _2 or higher is appended. #29
  • Fixed a bug where usage alongside a custom base.html template with extra_head content would be ignored. #27

4th September 2022

datasette-render-image-tags 0.1 - Turn any URLs ending in .jpg/.png/.gif into img tags with width 200

  • Initial release. Cells containing a URL that end in an image extension will be converted into image tags with a width of 200 pixels.

30th August 2022

datasette-sitemap 1.0 - Generate sitemap.xml for Datasette sites

datasette-block-robots 1.1 - Datasette plugin that blocks all robots using robots.txt

All releases