HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
simonw
datasette-lite
CSS2022–2025
simonw / datasette-lite

datasette-lite

Datasette running in your browser using WebAssembly and Pyodide

8Distinct people
18Mentions
0Explicit recommenders
413GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Datasette running in your browser using WebAssembly and Pyodide

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:03:16 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year18 dated mentions

Observed mentions: 2022-05-04 20:07:21 UTC to 2025-12-26 18:24:34 UTC.

02462022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC606
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC404
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC606
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202

What Hacker News says

18 sources
This seems to be about hosting an Sqlite database on a static website like GitHub Pages - this can be a great plan, there is also Datasette in a browser now: https://github.com/simonw/datasette-lite But that's different from how you collect the data in a git repository in the first place - or are you suggesting just putting a Sqlite file in a git repository? If so I can think of one big reason against that.
In Package managers keep using Git as a database, it never works out
TIL that Apache Echarts can generate WAI-ARIA accessible textual descriptions for charts and supports WebGL. https://echarts.apache.org/en/feature.html#aria apache/echarts: https://github.com/apache/echarts Marimo notebook has functionality like rxpy and ipyflow to auto-reexecute input cell dependencies fwiu: https://news.ycombinator.com/item?id=41404681#41406570 .. https://github.com/marimo-team/marimo/releases/tag/0.8.4 : > With this release, it's now possible to create standalone notebook files that have package requirements embedded in them as a comment, using PEP 723's inline metadata marimo-team/marimo: https://github.com/marimo-team/marimo ipywidgets is another way to build event-based UIs in otherwise Reproducible notebooks. datasette-lite doesn't yet work with jupyterlite and emscripten-forge yet FWIU; but does build SQLite in W
Read the rest
ASM with pyodide. https://github.com/simonw/datasette-lite pygwalker: https://github.com/Kanaries/pygwalker .. https://news.ycombinator.com/item?id=35895899 How do you record manual interactions with ui controls and spreadsheet grids to code for reproducibility? > "Generate code from GUI interactions; State restoration & Undo" https://github.com/Kanaries/pygwalker/issues/90 > The Scientific Method is testing, so testing (tests, assertions, fixtures) should be core to any scientific workflow system. ipytest has a %%ipytest cell magic to run functions that start with test_ and subclasses of unittest.TestCase with the pytest test runner. https://github.com/chmp/ipytest How can test functions with assertions be written with Probly?
In Show HN: Probly – Spreadsheets, Python, and AI in the browser
So the IPFS part is instead of a CDN? Does it replace asset URLs in templates with e.g. cf IPFS gateway URLs with SRI hashes? datasette-lite > "Could this use the SQLite range header trick?" https://github.com/simonw/datasette-lite/issues/28 From xeus-sqlite-kernel > "Loading SQLite databases from a remote URL" https://github.com/jupyterlite/xeus-sqlite-kernel/issues/6#i... re: "Loading partial SQLite databases over HTTP": > sql.js-httpvfs: https://github.com/phiresky/sql.js-httpvfs > sqlite-wasm-http: https://github.com/mmomtchev/sqlite-wasm-http >> This project is inspired from @phiresky/sql.js-httpvfs but uses the new official SQLite WASM distribution. Datasette creates a JSON API from a SQLite database, has an optional SQL query editor with canned queries, multi DB query support, docs; https://docs.datasette.io/en/stable/sql_queries.
Read the rest
html#cross-d... : > SQLite has the ability to run queries that join across multiple databases. Up to ten databases can be attached to a single SQLite connection and queried together.
In Show HN: TeaTime – distributed book library powered by SQLite, IPFS and GitHub
> Do static sites built with sphinx-build or jupyter-book or hugo or other jamstack static site generators work with TeaTime? I guess it depends on what you mean by "work with TeaTime". TeaTime itself is a static site, generated using Nuxt. Nothing that it does cannot be achieved with another stack - at the end it's just HTML, CSS and JS. I haven't tried sphinx-build or jupyter-book, but there isn't a technical reason why Hugo wouldn't be able to build a TeaTime like website, using the same databases. > datasette-lite > Loading SQLite databases: https://github.com/simonw/datasette-lite#loading-sqlite-data... I haven't seen datasette before. What are the biggest benefits you think it has over sql.js-httpvfs (which I'm using now)? Is it about the ability to also use other formats, in addition to SQLite? I got the impression that sql.js-http
Read the rest
vfs was a bit more of a POC, and later some possibly better solutions came out, but I haven't really went that rabbit hole to figure out which one would be best. Edit: looking a little more into datasette-lite, it seems like one of the nice benefits of sql.js-httpvfs is that it doesn't download the whole SQLite database in order to query it. This makes it possible have a 2GB database but still read it in chunks, skipping around efficiently until you find your data.
In Show HN: TeaTime – distributed book library powered by SQLite, IPFS and GitHub
Do static sites built with sphinx-build or jupyter-book or hugo or other jamstack static site generators work with TeaTime? sphinx-build: https://www.sphinx-doc.org/en/master/man/sphinx-build.html There may need to be a different Builder or an extension of sphinxcontrib.serializinghtml.JSONHTMLBuilder which serializes a doctree (basically a DOM document object model) to the output representation: https://www.sphinx-doc.org/en/master/usage/builders/#sphinxc... datasette and datasette-lite can load CSV, JSON, Parquet, and SQLite databases; supports Full-Text Search; and supports search Faceting. datasette-lite is a WASM build of datasette with the pyodide python distribution. datasette-lite > Loading SQLite databases: https://github.com/simonw/datasette-lite#loading-sqlite-data... jupyter-lite is a WASM build of jupyter which also support
Read the rest
s sqlite in notebooks in the browser with `import sqlite3` with the python kernel and also with a sqlite kernel: https://jupyter.org/try-jupyter/lab/ jupyterlite/xeus-sqlite-kernel: https://github.com/jupyterlite/xeus-sqlite-kernel (edit) xeus-sqlite-kernel > "Loading SQLite databases from a remote URL" https://github.com/jupyterlite/xeus-sqlite-kernel/issues/6#i... %FETCH <url> <filename> https://github.com/jupyter-xeus/xeus-sqlite/blob/ce5a598bdab... xlite.cpp > void fetch(const std::string url, const std::string filename) https://github.com/jupyter-xeus/xeus-sqlite/blob/main/src/xl...
In Show HN: TeaTime – distributed book library powered by SQLite, IPFS and GitHub
From "Show HN: WhatTheDuck – open-source, in-browser SQL on CSV files" https://news.ycombinator.com/item?id=39836220 : > datasette-lite can load [remote] sqlite and Parquet but not yet DuckDB (?) with Pyodide in WASM, and there's also JupyterLite as a datasette plug-in: https://github.com/simonw/datasette-lite https://news.ycombinator.com/user?id=simonw https://news.ycombinator.com/from?site=simonwillison.net JSON-LD with https://schema.org/Person records with wikipedia/dbpedia RDF URIs would make it easy to query on whichever datasets can be joined on common RDFS properties like schema: :identifier and rdfs:subPropertyOf sub-properties, https://schema.org/url, :sameAs, Plato in RDF from dbpedia: https://dbpedia.org/page/Plato Today there are wikipedia URLs, DOI URN URIs, shorturls in QR codes, ORCID specifically to search published :Sc
Read the rest
holarlyArticle by optional :author, and now there are W3C DIDs Decentralized Identifiers for signing, identifying, and searching of unique :Thing and skos:Concept that can be generated offline and optionally registered centrally, or centrally generated and assigned like DOIs but they're signing keys. Given uncertainty about time intervals, plot concepts over time with charts for showing graph growth over time. Maybe philosophy skos:Concept intervals (and relations, links) from human annotations thereof and/or from LLM parsing and search snippets of Wikipedia, dbpedia RDF, wikidata RDF, and ranked Stanford Encyclopedia of Philosophy terminological occurrence frequency.
In The most cited authors in the Stanford Encyclopedia of Philosophy
Similar tools for running SQL queries over CSVs in Python: - pandas.dataframe.read_csv(), dask.dataframe.read_csv(), dask_cudf.read_csv(); .read_parquet() - DuckDB / DuckDB-WASM: https://news.ycombinator.com/item?id=36502107 https://github.com/duckdb/duckdb https://github.com/duckdb/duckdb-wasm - sqlite-utils > "Running queries directly against CSV or JSON" https://sqlite-utils.datasette.io/en/stable/cli.html#running... and optionally datasette / datasette-lite ?csv= for a GUI: https://github.com/simonw/datasette-lite#loading-csv-data
In [dead]
Here's a way to scrape URLs to JSON/YAML and then build static HTML with Hugo in a GitHub Action: https://github.com/jackyzha0/hugo-obsidian datasette is a webapp and CLI built on SQLite and Python. datasette-lite is the pyodide + WebAssembly build of datasette which can be served as static HTML, JS, and WASM SQlite. datasette: https://github.com/simonw/datasette : > Datasette is a tool for exploring and publishing data. It helps people take data of any shape or size and publish that as an interactive, explorable 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. From "Deploying a live Datasette demo when the tests pass" (2022) https://til.simonwillison.net/github-actions/deploy-
Read the rest
live-dem... : datasette publish vercel fixtures.db [...] The `datasette publish` command supports Google Cloud Run, Heroku, Vercel, Fly, [Full Container or Serverless] https://docs.datasette.io/en/stable/publish.html datasette-lite: https://github.com/simonw/datasette-lite : > You can use this tool to open any SQLite database file that is hosted online and served with a `access-control-allow-origin: ` CORS header. Files served by GitHub Pages automatically include this header, as do database files that have been published online using `datasette publish`.* > [...] You can paste in the "raw" URL to a file, but Datasette Lite also has a shortcut: if you paste in the URL to a page on GitHub or a Gist it will automatically convert it to the "raw" URL for you > To load a Parquet file, pass a URL to `?parquet=` > [...] https://lite.datasette.io/?parquet=https://github.com/Terada...* There are various *-to-sqlite utilities that load data into a SQLite database for use with e.g. datasette. E.g. Pandas with `dtype_backend='arrow'` saves to Parquet. datasette plugins are written in Python and/or JS w/ pluggy: https://docs.datasette.io/en/stable/plugins.html https://datasette.io/plugins datasette-scraper scrapes sitemaps.xml and crawls though it could surely be repurposed to instead scrape a list of code.json URLs within the datasette process, which is powered by asyncio and the asynchronous uvicorn ASGI HTTP web server. datasette-scraper/#architecture: https://github.com/cldellow/datasette-scraper/#architecture (TIL datasette-scraper parses HTML with selectolax; and Selectolax with Modest or Lexbor is ~25x faster at HTML parsing than BeautifulSoup in the selectolax benchmark: https://github.com/rushter/selectolax#simple-benchmark ) (Apache Nutch is a Java-based web crawler which supports e.g. CommonCrawl (which backs various foundational LLMs)) https://en.wikipedia.org/wiki/Apache_Nutch#Search_engines_bu... . But extruct extracts more types of metadata and data than Nutch AFAIU: https://github.com/scrapinghub/extruct ) datasette-graphql adds a GraphQL HTTP API to a SQLite database: https://datasette.io/plugins/datasette-graphql plugins?q=sqlite: https://datasette.io/plugins?q=sqlite datasette-sqlite-fts4: https://datasette.io/plugins/datasette-sqlite-fts4 ; Full-Text Search with SQLite datasette-ripgrep: "deploy a regular expression search engine for your source code": https://github.com/simonw/datasette-ripgrep Seeing as there's already a JSONLD @context (schema) for code.json, CSVW as JSONLD and/or YAMLLD would be an easy way merge Linked Data graphs of tabular data: https://github.com/semantalytics/awesome-semantic-web#csvw A GitHub Action would run regularly, fetch each code.json, save each to a git repo, and then upsert each into a SQLite database to be published with e.g. datasette or datasette-lite.
In Code-gov: A collection point for all Code.gov repositories
#. SQLite WAL mode From https://www.sqlite.org/isolation.html https://news.ycombinator.com/item?id=32247085 : > [sqlite] WAL mode permits simultaneous readers and writers. It can do this because changes do not overwrite the original database file, but rather go into the separate write-ahead log file. That means that readers can continue to read the old, original, unaltered content from the original database file at the same time that the writer is appending to the write-ahead log #. superfly/litefs: a FUSE-based file system for replicating SQLite https://github.com/superfly/litefs #. sqldiff: https://www.sqlite.org/sqldiff.html https://news.ycombinator.com/item?id=31265005 #. dolthub/dolt: https://github.com/dolthub/dolt : > Dolt is a SQL database that you can fork, clone, branch, merge, push and pull just like a Git repository. [...] > D
Read the rest
olt can be set up as a replica of your existing MySQL or MariaDB database using standard MySQL binlog replication. Every write becomes a Dolt commit. This is a great way to get the version control benefits of Dolt and keep an existing MySQL or MariaDB database. #. github/gh-ost: https://github.com/github/gh-ost : > Instead, gh-ost uses the binary log stream to capture table changes, and asynchronously applies them onto the ghost table. gh-ost takes upon itself some tasks that other tools leave for the database to perform. As result, gh-ost has greater control over the migration process; can truly suspend it; can truly decouple the migration's write load from the master's workload. #. vlcn-io/cr-sqlite: https://github.com/vlcn-io/cr-sqlite : > Convergent, Replicated SQLite. Multi-writer and CRDT support for SQLite > CR-SQLite is a run-time loadable extension for SQLite and libSQL. It allows merging different SQLite databases together that have taken independent writes. > In other words, you can write to your SQLite database while offline. I can write to mine while offline. We can then both come online and merge our databases together, without conflict. > In technical terms: cr-sqlite adds multi-master replication and partition tolerance to SQLite via conflict free replicated data types (CRDTs) and/or causally ordered event logs. yjs also does CRDTs (Jupyter RTC,) #. pganalyze/libpg_query: https://github.com/pganalyze/libpg_query : > C library for accessing the PostgreSQL parser outside of the server environment #. Ibis + Substrait [ + DuckDB ] https://ibis-project.org/blog/ibis_substrait_to_duckdb/ : > ibis strives to provide a consistent interface for interacting with a multitude of different analytical execution engines, most of which (but not all) speak some dialect of SQL. > Today, Ibis accomplishes this with a lot of help from `sqlalchemy` and `sqlglot` to handle differences in dialect, or we interact directly with available Python bindings (for instance with the pandas, datafusion, and polars backends). > [...] `Substrait` is a new cross-language serialization format for communicating (among other things) query plans. It's still in its early days, but there is already nascent support for Substrait in Apache Arrow, DuckDB, and Velox. #. ibis-project/ibis-substrait: https://github.com/ibis-project/ibis-substrait #. tobymao/sqlglot: https://github.com/tobymao/sqlglot : > SQLGlot is a no-dependency SQL parser, transpiler, optimizer, and engine. It can be used to format SQL or translate between 19 different dialects like DuckDB, Presto, Spark, Snowflake, and BigQuery. It aims to read a wide variety of SQL inputs and output syntactically and semantically correct SQL in the targeted dialects. > It is a very comprehensive generic SQL parser with a robust test suite. It is also quite performant, while being written purely in Python. > You can easily customize the parser, analyze queries, traverse expression trees, and programmatically build SQL. > Syntax errors are highlighted and dialect incompatibilities can warn or raise depending on configurations. However, it should be noted that SQL validation is not SQLGlot’s goal, so some syntax errors may go unnoticed. #. benbjohnson/postlite: https://github.com/benbjohnson/postlite : > postlite is a network proxy to allow access to remote SQLite databases over the Postgres wire protocol. This allows GUI tools to be used on remote SQLite databases which can make administration easier. > The proxy works by translating Postgres frontend wire messages into SQLite transactions and converting results back into Postgres response wire messages. Many Postgres clients also inspect the pg_catalog to determine system information so Postlite mirrors this catalog by using an attached in-memory database with virtual tables. The proxy also performs minor rewriting on these system queries to convert them to usable SQLite syntax. > Note: This software is in alpha. Please report bugs. Postlite doesn't alter your database unless you issue INSERT, UPDATE, DELETE commands so it's probably safe. If anything, the Postlite process may die but it shouldn't affect your database. #. > "Hosting SQLite Databases on GitHub Pages" (2021) re: sql.js-httpvfs, DuckDB https://news.ycombinator.com/item?id=28021766 #. >> - bittorrent/sqltorrent https://github.com/bittorrent/sqltorrent >> Sqltorrent is a custom VFS for sqlite which allows applications to query an sqlite database contained within a torrent. Queries can be processed immediately after the database has been opened, even though the database file is still being downloaded. Pieces of the file which are required to complete a query are prioritized so that queries complete reasonably quickly even if only a small fraction of the whole database has been downloaded. #. simonw/datasette-lite: https://github.com/simonw/datasette-lite datasette, *-to-sqlite, dogsheep "Loading SQLite databases" [w/ datasette] https://github.com/simonw/datasette-lite#loading-sqlite-data... #. awesome-db-tools: https://github.com/mgramin/awesome-db-tools Lots of neat SQLite/vtable/pg/replication things
In SQLedge: Replicate Postgres to SQLite on the Edge
From https://github.com/simonw/datasette-lite/issues/26 : > Micropip or Mambalite or picomamba or Zig. > "Better integration with conda/conda-forge for building packages" [pyodide/pyodide#795]( https://github.com/pyodide/pyodide/issues/795) > Emscripten-forge > Adding packages: https://github.com/emscripten-forge/recipes#adding-packages > - https://github.com/emscripten-forge/recipes/tree/main/recipe... > -- emscripten-forge/recipes/blob/main/recipes/recipes_emscripten/picomamba/recipe.yaml: https://github.com/emscripten-forge/recipes/blob/main/recipe... > --- mamba-org/picomamba: https://github.com/mamba-org/picomamba From emscripten-forge/recipes https://github.com/emscripten-forge/recipes : > Build wasm/emscripten packages with conda/mamba/boa. This repository consists of recipes for conda packages for emscripten. Most of the recipe
Read the rest
s have been ported from pyodide. > While we already have a lot of packages built, this is still a big work in progress.
In A 116kb WASM of Blink that lets you run x86_64 Linux binaries in the browser
I think there may be a space for super-large multi-GB files served from static storage being accessible from SQlite as well. Another one would be this full-text search of a 43GB SQLite database of Wikipedia's full text search: http://static.wiki/ . Hearing there's official support for this is awesome and I hope they also might add some nice stuff for those sticking with POSIX/Emscripten as well; maybe some optimizations to access patterns or other stuff like indexing or split DBs? There are some amazing things for SQLite in the browser especially if you're looking for ways to host queryable data for cheap. The example I have below costs $0.42 cents a month to host. For 28GB. Insane. I have a hacked up POC experimental version of the datasette-lite Python UI which runs in Emscripten to be able to look at multi-GB databases at https://githu
Read the rest
b.com/simonw/datasette-lite/pull/49. It uses a hacked up chunk'd lazyFile implementation from emscripten and others to grab pages from Cloudflare R2. Here's a test/demo with california's unclaimed property records (https://www.sco.ca.gov/upd_download_property_records.html) of a 28GB searching up that guy who owns Twitter: https://datasette-lite-lab.mindflakes.com/index.html?url=htt...
In SQLite in the browser with WASM/JS
There's a web browser version of datasette called datasette-lite which runs on Python ported to WASM with Pyodide which can load SQLite databases. I grafted the enhanced lazyFile implementation from emscripten and then from this implementation to datasette-lite relatively recently as a curious test. Threw in a 18GB CSV from CA's unclaimed property records here https://www.sco.ca.gov/upd_download_property_records.html into a FTS5 Sqlite Database which came out to about 28GB after processing: POC, non-merging Log/Draft PR for the hack: https://github.com/simonw/datasette-lite/pull/49 You can run queries through to datasette-lite if you URL hack into it and just get to the query dialog, browsing is kind of a dud at the moment since datasette runs a count(*) which downloads everything. Example: https://datasette-lite-lab.mindflakes.com/index.
Read the rest
html?url=htt... Still, not bad for a $0.42/mo hostable cached CDN'd read-only database. It's on Cloudflare R2, so there's no BW costs.
In Hosting SQLite databases on any static file hoster (2021)

Showing the 15 most recent of 18 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.