Datasette includes some pages and JSON API endpoints for introspecting the current instance. These can be used to understand some of the internals of Datasette and to see how a particular instance has been configured.

Each of these pages can be viewed in your browser. Add .json to the URL to get back the contents as JSON.


Shows the contents of the metadata.json file that was passed to datasette serve, if any. Metadata example:

    "license": "CC Attribution 4.0 License",
    "license_url": "",
    "source": "fivethirtyeight/data on GitHub",
    "source_url": "",
    "title": "Five Thirty Eight",
    "databases": {



Shows the version of Datasette, Python and SQLite. Versions example:

    "datasette": {
        "version": "0.60"
    "python": {
        "full": "3.8.12 (default, Dec 21 2021, 10:45:09) \n[GCC 10.2.1 20210110]",
        "version": "3.8.12"
    "sqlite": {
        "extensions": {
            "json1": null
        "fts_versions": [
        "compile_options": [
            "COMPILER=gcc-6.3.0 20170516",
        "version": "3.37.0"


Shows a list of currently installed plugins and their versions. Plugins example:

        "name": "datasette_cluster_map",
        "static": true,
        "templates": false,
        "version": "0.10",
        "hooks": ["extra_css_urls", "extra_js_urls", "extra_body_script"]

Add ?all=1 to include details of the default plugins baked into Datasette.


Shows the Settings for this instance of Datasette. Settings example:

    "default_facet_size": 30,
    "default_page_size": 100,
    "facet_suggest_time_limit_ms": 50,
    "facet_time_limit_ms": 1000,
    "max_returned_rows": 1000,
    "sql_time_limit_ms": 1000


Shows the configuration for this instance of Datasette. This is generally the contents of the datasette.yaml or datasette.json file, which can include plugin configuration as well. Config example:

    "settings": {
        "template_debug": true,
        "trace_debug": true,
        "force_https_urls": true

Any keys that include the one of the following substrings in their names will be returned as redacted *** output, to help avoid accidentally leaking private configuration information: secret, key, password, token, hash, dsn.


Shows currently attached databases. Databases example:

        "hash": null,
        "is_memory": false,
        "is_mutable": true,
        "name": "fixtures",
        "path": "fixtures.db",
        "size": 225280


Shows details of threads and asyncio tasks. Threads example:

    "num_threads": 2,
    "threads": [
            "daemon": false,
            "ident": 4759197120,
            "name": "MainThread"
            "daemon": true,
            "ident": 123145319682048,
            "name": "Thread-1"
    "num_tasks": 3,
    "tasks": [
        "<Task pending coro=<RequestResponseCycle.run_asgi() running at uvicorn/protocols/http/> cb=[set.discard()]>",
        "<Task pending coro=<Server.serve() running at uvicorn/> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x10365c3d0>()]> cb=[run_until_complete.<locals>.<lambda>()]>",
        "<Task pending coro=<LifespanOn.main() running at uvicorn/lifespan/> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x10364f050>()]>>"


Shows the currently authenticated actor. Useful for debugging Datasette authentication plugins.

    "actor": {
        "id": 1,
        "username": "some-user"


The debug tool at /-/messages can be used to set flash messages to try out that feature. See .add_message(request, message, type=datasette.INFO) for details of this feature.