
DBSnapper
A command-line agent and cloud service that dumps a PostgreSQL or MySQL database, cuts it down to a related subset, masks sensitive columns with your SQL, and shares the result with developers as a snapshot they can load locally.
- What it is
- Database clients and design tools
- Type
- Commercial product
- Made by
- Scharfnado LLC
- License
- Proprietary (free standalone agent and Starter plan; paid Pro and Enterprise plans)
- Facts checked
- 23 October 2026
What it is
DBSnapper gives developers a copy of production data that is small and safe enough to work with. The agent, a single dbsnapper binary or Docker image, reads a YAML file of targets, each with a source database URL. dbsnapper build dumps the source with the database’s own tools (pg_dump for PostgreSQL, mysqldump for MySQL) into a compressed snapshot file; dbsnapper load drops and recreates a destination database and restores a snapshot into it. Only PostgreSQL and MySQL are supported.
Two steps sit between build and load. Subsetting copies only part of the data: you list tables to cut down with a where clause or a percentage of rows, tables to copy whole and tables to leave out, and the agent follows foreign keys so the rows those rows refer to come along. You can add relationships the schema doesn’t declare, or ignore ones it does. Sanitizing runs a SQL file of your own, such as UPDATE users SET email = …, against a restored copy and snapshots the result. That copy can be a database you name or an ephemeral one: a temporary Docker container on its own network that is removed when the job ends.
Without an account the agent runs in standalone mode with snapshots on local disk. DBSnapper Cloud, launched in January 2022, stores target definitions centrally with credentials encrypted, and writes snapshots to your own bucket on Amazon S3, Cloudflare R2, MinIO or DigitalOcean Spaces; teammates then find and download sanitized snapshots through presigned URLs, from the CLI, a VS Code extension or the API. Group-based sharing with Okta single sign-on, a Terraform provider and a GitHub Action round it out. The last release is a preview of version 3.0 from August 2025, which adds an MCP server so AI assistants can list, build, sanitize and load snapshots.
Why teams pick it
- Subsets keep referential integrity: rows that a kept row points to come along, so the copy loads and the app works
- Sanitization is plain SQL you write and review, run on a copy, and can run in a throwaway container
- Raw data stays in your environment and snapshots go to your own bucket; the cloud service handles sharing and access
- Uses the databases’ standard dump tools, and a free standalone mode needs no account
Watch out for
- Only PostgreSQL and MySQL
- Masking is only as good as your SQL: the docs describe no automatic detection of personal data, so a column the query misses ships unmasked
- Closed source from a small company; team sharing, SSO, advanced subsetting and the Terraform provider need a paid plan
- No release since the 3.0 preview of August 2025, which is still marked as a pre-release
Alternatives
What all database clients and design tools have in common →Compare side by side →
ChartDBDormantOpen sourceAn open-source, browser-based ER diagram editor that builds a diagram from the JSON output of one query you run yourself, so it never needs a database password, and can export the schema as DDL for another database.
DB PilotCommercialA Mac database client that combines a table browser, a SQL editor and SQL-plus-Python notebooks with an AI assistant, and embeds DuckDB and chDB for querying local files.How it fits with other technologies
What DBSnapper uses
- DBSnappersnapshots and restores, with pg_dump,PostgreSQL
- DBSnappersnapshots and restores, with mysqldump,MySQL
- DBSnapperstores snapshots inAmazon S3
- DBSnappercan store snapshots inCloudflare R2
- DBSnappercan store snapshots inMinIO
- DBSnappersanitizes in ephemeral containers onDocker
- DBSnapperinstalls its agent with an action inGitHub Actions
- DBSnapperhas a provider forTerraform
- DBSnappershares snapshots through an extension forVisual Studio Code
A target with a subset and a sanitizing step (from the DBSnapper docs) · yaml
targets:
sakila:
name: sakila
snapshot:
src_url: mysql://root:mysql@localhost:13306/sakila?tls=false
dst_url: mysql://root:mysql@localhost:3306/sakila_snap?tls=false
subset:
src_url: mysql://root:mysql@localhost:13306/sakila?tls=false
dst_url: mysql://root:mysql@localhost:3306/sakila_subset?tls=false
subset_tables:
- table: sakila.film
where: "film_id < 20"
- table: sakila.actor
percent: 20
copy_tables:
- sakila.store
excluded_tables:
- sakila.staff
added_relationships:
- fk_table: sakila.address
fk_columns: city_id
ref_table: sakila.city
ref_columns: id
sanitize:
dst_url: mysql://root:mysql@localhost:3306/sakila_sanitized?tls=false
query_file: sakila-sanitize.sqlSee it in a real stack
No architecture uses DBSnapper yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2021–2025
DBSnapper is the work of Joe Scharf, whose company Scharfnado LLC sells it. His argument was that hand-built test fixtures are “painstaking, time-consuming, and error prone” and go brittle, and that developers should work against sanitized copies of real data instead. It began as a command-line tool, first on GitHub in early 2021, where every setup kept its own local configuration file and snapshots stayed on local disk.
In January 2022 DBSnapper Cloud added central target definitions with encrypted credentials and storage profiles that put snapshots in your own cloud bucket; the standalone agent stayed free. Version 2.0, in February 2024, added subsetting, “smaller, relationally complete” snapshots, and switched PostgreSQL extraction to the COPY protocol. Okta single sign-on followed in June 2024, and a 3.0 preview with an MCP server for AI assistants in August 2025.
Why it’s built this way
- Use each database’s own dump and restore tools
pg_dumpandmysqldumpalready capture schema, indexes and data correctly, so the agent orchestrates them instead of writing its own export format.- Sanitize with your own SQL on a copy
- Each schema stores sensitive data differently. Running a reviewed SQL file against a restored copy, then snapshotting that, lets teams mask exactly their columns without touching production.
- Keep the data in the customer’s environment and bucket
- Handing production data to a third party was the main worry. The agent processes data where it runs, and the cloud service only coordinates targets, access and presigned links to your own storage.
Timeline
- 2021
Joe Scharf publishes the first DBSnapper CLI on GitHub in January
- 2022
DBSnapper Cloud launches in January; agent 1.0 is released in November
- 2024
Version 2.0 adds subsetting in February; Okta SSO follows in June
- 2025
2.9 adds PostgreSQL schema filtering in July; a 3.0 preview adds an MCP server in August
- DBSnapper blog: The DBSnapper Cloud has arrived (Joe Scharf, January 2022)
- DBSnapper blog: DBSnapper 2.0 with subsetting released (Joe Scharf, February 2024)
- DBSnapper blog: DBSnapper + Okta = SSO! (June 2024)
- GitHub: joescharf/snapper (the original DBSnapper CLI, 2021)
- GitHub: dbsnapper/dbsnapper releases (1.0.0 to 3.0.0-pr1)
Sources10 · facts checked 23 October 2026
- DBSnapper website (features, plans, Scharfnado LLC)
- DBSnapper docs: Welcome (PostgreSQL and MySQL, storage, integrations)
- DBSnapper docs: How it works (pg_dump, mysqldump, data stays in your environment)
- DBSnapper docs: Snapshot configuration (targets, subset, sanitize)
- DBSnapper docs: Sanitization introduction
- DBSnapper docs: Ephemeral databases
- DBSnapper docs: Installation (Docker, Homebrew, packages, standalone mode)
- DBSnapper docs: Release notes (2.0 to 2.7)
- GitHub: dbsnapper/dbsnapper releases (3.0.0-pr1, August 2025)
- DBSnapper blog: The DBSnapper Cloud has arrived (January 2022)