# selfstore vs Dexie Source: https://selfstore.dev/compare/dexie Dexie makes IndexedDB queryable; selfstore makes app state durable, portable and syncable. Different layers, often complementary. ## What Dexie is The reference IndexedDB wrapper: a pleasant promise-based API over tables, indexes and range queries, mature, widely deployed, actively maintained. If your app holds tens of thousands of records and needs `where('age').above(25)` to return in milliseconds without loading everything into memory, Dexie is exactly the right tool and this page will not pretend otherwise. ## What Dexie does not set out to be A durability story - and it does not claim to be one. Dexie presents itself as an IndexedDB wrapper: tables, indexes, queries. Backups, an export format, encryption, multi-device convergence and a persistence status for your UI are outside the job it takes on. (Dexie Cloud adds sync as a hosted, account-based service, a fine product and a different philosophy: your users' data syncs through their servers.) Check its current feature list yourself rather than trusting this page on it. Both projects move, and a page that speaks for someone else ages badly. ## What selfstore is The loop around the data: an IndexedDB working copy behind two functions you write, portable AES-256-GCM encrypted ZIP backups with an [independent spec](https://selfstore.dev/docs/format), durable homes the **user** owns (disk, Google Drive, WebDAV, S3), and serverless deterministic merge. No accounts, no hosted anything. | | Dexie | selfstore | | --- | --- | --- | | Layer | Query IndexedDB | Whole-app persistence loop | | Data model | Tables + indexes | Named collections + files, plain JSON | | Query engine | Yes, excellent | No, deliberately (snapshots) | | Scale sweet spot | Large queryable sets | App state, MB scale | | Backup file | DIY | Spec'd encrypted ZIP, built in | | Sync | Dexie Cloud (hosted, accounts) | Serverless merge over user storage | | License / cost | Apache-2.0; Cloud is a paid service | MIT, everything | ## Use Dexie when - Query performance over large local datasets is the requirement. - You are happy with (or want) a hosted sync service with user accounts. ## Use selfstore when - The requirement is durable, private, portable app state: survive cleared browser data, hand users a real file, converge a laptop and a phone, without operating or renting a sync backend. ## Use both when Your app has a big catalog **and** precious user state. Keep the catalog in Dexie tables; let selfstore own the user's own data. `gather()` can even read from Dexie: selfstore does not care where your snapshot comes from. Map of this site for a model: https://selfstore.dev/llms.txt Every page in one file: https://selfstore.dev/llms-full.txt