{"slug": "sqlite", "name": "SQLite", "category": "databases", "category_name": "Databases", "description": "Embedded, serverless SQL database engine that stores a full database in a single file.", "recommenders": 87, "commenters": 151, "warners": 6, "score": 87.37, "rising": -1.25, "first": "2025-11-01", "latest": "2026-10-22", "why": "Commenters like SQLite for being a zero-config database that is just a file, for robust storage that resists corruption, and as a fast-enough backend for small web apps and local tools.", "why_is_quote": false, "has_verdict": true, "sentiment": {"recommend": 95, "neutral": 54, "compare": 8, "warn": 7}, "spark": [3, 13, 8, 5, 3, 15, 8, 2, 16, 12, 5, 5], "listed": true, "loved": ["Simplicity", "Web app backends"], "caveat": "High availability", "short_quote": "I've started using SQLite years ago for its use of a single file to store data. Along the way, I found more reasons to like it.", "icon": true, "domain": "sqlite.org", "github_repo": null, "official_url": "https://sqlite.org", "pricing": "open source", "aliases": ["SQLite", "Althttpd", "althttpd"], "verdict": [{"text": "Commenters like SQLite for being a zero-config database that is just a file", "cites": [{"id": 783256689, "item_id": 48953543, "url": "https://news.ycombinator.com/item?id=48953543", "by": "abrookewood", "date": "2026-07-17", "stance": "recommend", "quote": "SQLite is just a file and often, that is enough.", "excerpt": "Honestly, I love PostgreSQL, but now I have another server or service to run. SQLite is just a file and often, that is enough.", "context": "", "use_case": "lightweight database", "switched_from": "", "story": "Learning a few things about running SQLite"}, {"id": 768819937, "item_id": 48051246, "url": "https://news.ycombinator.com/item?id=48051246", "by": "imrozim", "date": "2026-05-07", "stance": "recommend", "quote": "I wish it was as simple as sqlite. No config just works.", "excerpt": "I use postgresql for my startup but every time i needed a quick local testing i wish it was as simple as sqlite. No config just works.", "context": "startup founder", "use_case": "quick local testing", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}, {"id": 786150080, "item_id": 49134380, "url": "https://news.ycombinator.com/item?id=49134380", "by": "mattm", "date": "2026-08-01", "stance": "recommend", "quote": "I just use sqlite on the instance for my database.", "excerpt": "Yeah this is what I did. All my personal services are running on one EC2 instance and I use subdomains to separate them. If I need more memory it's easy to scale up. I just use sqlite on the instance for my database. You don't need a postgres service if it's just for you. Hosted services are only great for setup and scaling. You're not going to need scaling. Infra setup can now be done easily with AI and terraform.", "context": "runs personal services on one instance", "use_case": "personal services database", "switched_from": "", "story": "Software for One"}]}, {"text": ", for robust storage that resists corruption", "cites": [{"id": 801088816, "item_id": 50068051, "url": "https://news.ycombinator.com/item?id=50068051", "by": "arc-in-space", "date": "2026-10-13", "stance": "recommend", "quote": "You're less likely to end up with corrupted files with sqlite.", "excerpt": "One of the reasons is high resilience, practically state of the art as far as writing to a single storage device allows. You're less likely to end up with corrupted files with sqlite. This is much more difficult to get right when manipulating files yourself than you might think. For your consideration (I'll add that I used to think similarly as you, and I still wouldn't use sqlite for everything, but it's shockingly ", "context": "", "use_case": "reliable data storage", "switched_from": "", "story": "apsw: Another Python SQLite Wrapper"}, {"id": 763811840, "item_id": 47738240, "url": "https://news.ycombinator.com/item?id=47738240", "by": "podlp", "date": "2026-04-12", "stance": "recommend", "quote": "It\u2019s an incredibly robust piece of software that\u2019s often cost me pennies per month to serve 100k+ monthly users.", "excerpt": "I love SQLite and have ran it even on networked drives with queued writes for read-heavy applications. It\u2019s an incredibly robust piece of software that\u2019s often cost me pennies per month to serve 100k+ monthly users. But there\u2019s definitely a time and place for solid, dedicated database servers like Postgres.", "context": "", "use_case": "read-heavy app database", "switched_from": "", "story": "I run multiple $10K MRR companies on a $20/month tech stack"}, {"id": 768728080, "item_id": 48045505, "url": "https://news.ycombinator.com/item?id=48045505", "by": "tombert", "date": "2026-05-06", "stance": "recommend", "quote": "I'm grateful SQLite exists.", "excerpt": "On a recent project I have needed to use exFAT. exFAT is terrible for a number of reasons, but in my case the thing I had to deal with was the lack of journaling, which had the possibility to corrupt files if there were a power interruption or something. I initially was writing a series of files and doing some quasi-append-only things with new files and compacting the old one to sort of reinvent journaling. What I di", "context": "", "use_case": "safe journaled storage on exFAT", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}]}, {"text": ", and as a fast-enough backend for small web apps and local tools.", "cites": [{"id": 784895408, "item_id": 49055963, "url": "https://news.ycombinator.com/item?id=49055963", "by": "faangguyindia", "date": "2026-07-26", "stance": "recommend", "quote": "I mostly use Go + SQLite for all the things I used to use Rails, JavaScript, or Python for.", "excerpt": "I mostly use Go + SQLite for all the things I used to use Rails, JavaScript, or Python for. I find python django wastes too much resources, just look at memory usage. One of my web app backend (go) is serving approx 100 req/s right now and i look at pprof i see it's not bottlenecked by CPU but mostly IO and i love this. Writing concurrent code in Go is easy, the code i wrote 10yrs ago still compiles with no issue! Th", "context": "", "use_case": "web app databases", "switched_from": "", "story": "Some more things about Django I've been enjoying"}, {"id": 775627297, "item_id": 48476706, "url": "https://news.ycombinator.com/item?id=48476706", "by": "faangguyindia", "date": "2026-06-10", "stance": "recommend", "quote": "Most of my apps are now simply HTMX + Go + SQLite. I've found it's enough for most projects.", "excerpt": "Most of my apps are now simply HTMX + Go + SQLite. I've found it's enough for most projects. One of my sites is image heavy and serves 10 TB of traffic per month. For this, I use the following setup: 1. S3 (I wanted reliable data storage) 2. In front of it, I have Cloudflare (with Tiered Cache enabled, which makes POPs prefer pulling from Cloudflare rather than the origin). I've set rules to cache everything on both ", "context": "runs an image-heavy site serving 10 TB/month", "use_case": "web app database", "switched_from": "", "story": "Building an HTML-first site doubled our users overnight"}, {"id": 803159041, "item_id": 50197440, "url": "https://news.ycombinator.com/item?id=50197440", "by": "cj00", "date": "2026-10-22", "stance": "recommend", "quote": "Search is via FTS5 in SQLite and works great on an 8 year old MacBook Pro.", "excerpt": "I used the same concept to build a searchable database of YouTube thumbnails in my watch history. I always end up trying to remember a video I didn't finish from a week or two ago and YouTube's history search plain sucks. So I built an app that tracks all my watch history across all devices, downloads the thumbnails and runs them through a local Gemma model to write a paragraph description and OCR any text in the thu", "context": "", "use_case": "full-text search of watch history", "switched_from": "", "story": "Semantic search across major museums"}, {"id": 784907072, "item_id": 49056692, "url": "https://news.ycombinator.com/item?id=49056692", "by": "Kubuxu", "date": "2026-07-26", "stance": "recommend", "quote": "This is fast enough using SQLite to just dump all commands into it and query on each typed letter.", "excerpt": "I use SQLite history to have context aware line suggestion in my shell. So the command that gets ghost displayed (and can be expanded with right arrow) depends on the current working directory, its parents and recency. This is fast enough using SQLite to just dump all commands into it and query on each typed letter. The DB is at this point 10years old. I use it to evaluate my work habits and patterns. More recently I", "context": "", "use_case": "shell history storage", "switched_from": "", "story": "Stinkpot: SQLite-Backed Shell History"}]}, {"text": " The most common caveats are weaker replication and high-availability options than Postgres", "cites": [{"id": 785531856, "item_id": 49095741, "url": "https://news.ycombinator.com/item?id=49095741", "by": "mikeocool", "date": "2026-07-29", "stance": "recommend", "quote": "I love SQLite, and I really want to run it in production", "excerpt": "I love SQLite, and I really want to run it in production, but my clients expect minimal data loss and downtime when one of my servers goes down. The answer to that being running it on top of LiteFS or LiteStream seems like starts to make the setup a lot less simple and lot less battle tested, which kind of starts to negate the advantages over just running Postgres.", "context": "has clients expecting minimal data loss and downtime", "use_case": "production database", "switched_from": "", "story": "SQLite in Production: Optimizing WAL Mode, Concurrency, and VFS Layers"}, {"id": 783135552, "item_id": 48945972, "url": "https://news.ycombinator.com/item?id=48945972", "by": "mikeocool", "date": "2026-07-17", "stance": "recommend", "quote": "I love SQLite, but my clients expect minimal data loss and downtime when one of my servers goes down.", "excerpt": "I love SQLite, but my clients expect minimal data loss and downtime when one of my servers goes down. How are people solving that issue with SQLite? Everytime I\u2019ve investigated it, it seems like the state of the art is not very battle tested WAL shipping solutions. If I\u2019m setting something like that up, suddenly running Postgres with its battle tested replication starts to look not so much more complicated in compari", "context": "runs servers for clients", "use_case": "application database", "switched_from": "", "story": "SQLite Is All You Need"}]}, {"text": ", plus lock contention with concurrent writers and loose default column typing.", "cites": [{"id": 763829905, "item_id": 47739369, "url": "https://news.ycombinator.com/item?id=47739369", "by": "the__alchemist", "date": "2026-04-12", "stance": "warn", "quote": "I have not found WAL mode is an antidote to SQLite locks during multiple concurrent writes.", "excerpt": "I concur with some of the commenters that this read as a bit of a brain dump. It has a thread connecting several loosely-related topics. Observation #1: You can also solve the tech stack problem with Heroku. I think the author's stack probably has a steeper learning curve, but is a cheaper option. I think it's a bit of an odd comparison (I won't say straw-man, as I don't doubt some people do this) to go from a fully-", "context": "", "use_case": "web app database", "switched_from": "", "story": "I run multiple $10K MRR companies on a $20/month tech stack"}, {"id": 789787984, "item_id": 49361749, "url": "https://news.ycombinator.com/item?id=49361749", "by": "replwoacause", "date": "2026-08-19", "stance": "recommend", "quote": "I use SQLite for everything, and I'm perfectly happy with it.", "excerpt": "I use SQLite for everything, and I'm perfectly happy with it. I'm aware of the concurrent writer issues, but at my scale it doesn't even matter.", "context": "", "use_case": "general data storage", "switched_from": "", "story": "PostgreSQL for Everything"}, {"id": 789134818, "item_id": 49320926, "url": "https://news.ycombinator.com/item?id=49320926", "by": "tyre", "date": "2026-08-16", "stance": "warn", "quote": "SQLite\u2019s default of non-strict typing is, to me, bananas.", "excerpt": "All of my personal apps use Postgres because: - types are lovely. We love types. SQLite\u2019s default of non-strict typing is, to me, bananas. - SELECT DISTINCT ON is my ride-or-die - most importantly, I\u2019m very comfortable in Postgres and the setup cost is basically zero (like SQLite) because Claude does it.", "context": "", "use_case": "", "switched_from": "", "story": "Does anyone run Postgres without PgBouncer?"}, {"id": 768766608, "item_id": 48047913, "url": "https://news.ycombinator.com/item?id=48047913", "by": "llagerlof", "date": "2026-05-07", "stance": "warn", "quote": "One time, the database got corrupted and all the data was lost. That was the day I stopped using SQLite.", "excerpt": "I used SQLite for a few applications several years ago. One time, the database got corrupted and all the data was lost. That was the day I stopped using SQLite. Also, the lack of enforced column data types was always a negative for me.", "context": "", "use_case": "application databases", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}]}], "praise": [{"label": "Simplicity", "summary": "A single file with no separate server or config is enough for many projects.", "quotes": [{"id": 783256689, "item_id": 48953543, "url": "https://news.ycombinator.com/item?id=48953543", "by": "abrookewood", "date": "2026-07-17", "stance": "recommend", "quote": "SQLite is just a file and often, that is enough.", "excerpt": "Honestly, I love PostgreSQL, but now I have another server or service to run. SQLite is just a file and often, that is enough.", "context": "", "use_case": "lightweight database", "switched_from": "", "story": "Learning a few things about running SQLite"}, {"id": 768819937, "item_id": 48051246, "url": "https://news.ycombinator.com/item?id=48051246", "by": "imrozim", "date": "2026-05-07", "stance": "recommend", "quote": "I wish it was as simple as sqlite. No config just works.", "excerpt": "I use postgresql for my startup but every time i needed a quick local testing i wish it was as simple as sqlite. No config just works.", "context": "startup founder", "use_case": "quick local testing", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}, {"id": 786150080, "item_id": 49134380, "url": "https://news.ycombinator.com/item?id=49134380", "by": "mattm", "date": "2026-08-01", "stance": "recommend", "quote": "I just use sqlite on the instance for my database.", "excerpt": "Yeah this is what I did. All my personal services are running on one EC2 instance and I use subdomains to separate them. If I need more memory it's easy to scale up. I just use sqlite on the instance for my database. You don't need a postgres service if it's just for you. Hosted services are only great for setup and scaling. You're not going to need scaling. Infra setup can now be done easily with AI and terraform.", "context": "runs personal services on one instance", "use_case": "personal services database", "switched_from": "", "story": "Software for One"}]}, {"label": "Web app backends", "summary": "Commonly paired with Go, Rust or PHP on a single server for web apps.", "quotes": [{"id": 791080048, "item_id": 49442503, "url": "https://news.ycombinator.com/item?id=49442503", "by": "nzoschke", "date": "2026-08-26", "stance": "recommend", "quote": "Single Go binary + SQLite database all the way.", "excerpt": "Single Go binary + SQLite database all the way. I've been doing this architecture on single tenant VMs for like 6+ years now and it has so many advantages for deployments, security and scaling. Pretty much every new tool and agent computer I set up uses this pattern. I've blogged about it and created a template repo. https://housecat.com/blog/the-hugs-stack-hypermedia-unix-go-sqlite https://github.com/housecat-inc/sc", "context": "runs single tenant VMs for 6+ years", "use_case": "single-binary deployments", "switched_from": "", "story": "One Go binary, one YAML file, one SQLite database: I wrote my monitoring tool"}, {"id": 775627297, "item_id": 48476706, "url": "https://news.ycombinator.com/item?id=48476706", "by": "faangguyindia", "date": "2026-06-10", "stance": "recommend", "quote": "Most of my apps are now simply HTMX + Go + SQLite. I've found it's enough for most projects.", "excerpt": "Most of my apps are now simply HTMX + Go + SQLite. I've found it's enough for most projects. One of my sites is image heavy and serves 10 TB of traffic per month. For this, I use the following setup: 1. S3 (I wanted reliable data storage) 2. In front of it, I have Cloudflare (with Tiered Cache enabled, which makes POPs prefer pulling from Cloudflare rather than the origin). I've set rules to cache everything on both ", "context": "runs an image-heavy site serving 10 TB/month", "use_case": "web app database", "switched_from": "", "story": "Building an HTML-first site doubled our users overnight"}, {"id": 784895408, "item_id": 49055963, "url": "https://news.ycombinator.com/item?id=49055963", "by": "faangguyindia", "date": "2026-07-26", "stance": "recommend", "quote": "I mostly use Go + SQLite for all the things I used to use Rails, JavaScript, or Python for.", "excerpt": "I mostly use Go + SQLite for all the things I used to use Rails, JavaScript, or Python for. I find python django wastes too much resources, just look at memory usage. One of my web app backend (go) is serving approx 100 req/s right now and i look at pprof i see it's not bottlenecked by CPU but mostly IO and i love this. Writing concurrent code in Go is easy, the code i wrote 10yrs ago still compiles with no issue! Th", "context": "", "use_case": "web app databases", "switched_from": "", "story": "Some more things about Django I've been enjoying"}]}, {"label": "Speed", "summary": "Commenters say it is fast enough for full-text search, per-keystroke queries and app data.", "quotes": [{"id": 803159041, "item_id": 50197440, "url": "https://news.ycombinator.com/item?id=50197440", "by": "cj00", "date": "2026-10-22", "stance": "recommend", "quote": "Search is via FTS5 in SQLite and works great on an 8 year old MacBook Pro.", "excerpt": "I used the same concept to build a searchable database of YouTube thumbnails in my watch history. I always end up trying to remember a video I didn't finish from a week or two ago and YouTube's history search plain sucks. So I built an app that tracks all my watch history across all devices, downloads the thumbnails and runs them through a local Gemma model to write a paragraph description and OCR any text in the thu", "context": "", "use_case": "full-text search of watch history", "switched_from": "", "story": "Semantic search across major museums"}, {"id": 784907072, "item_id": 49056692, "url": "https://news.ycombinator.com/item?id=49056692", "by": "Kubuxu", "date": "2026-07-26", "stance": "recommend", "quote": "This is fast enough using SQLite to just dump all commands into it and query on each typed letter.", "excerpt": "I use SQLite history to have context aware line suggestion in my shell. So the command that gets ghost displayed (and can be expanded with right arrow) depends on the current working directory, its parents and recency. This is fast enough using SQLite to just dump all commands into it and query on each typed letter. The DB is at this point 10years old. I use it to evaluate my work habits and patterns. More recently I", "context": "", "use_case": "shell history storage", "switched_from": "", "story": "Stinkpot: SQLite-Backed Shell History"}, {"id": 789938224, "item_id": 49371139, "url": "https://news.ycombinator.com/item?id=49371139", "by": "renegat0x0", "date": "2026-08-19", "stance": "recommend", "quote": "I used this approach to drive entire app, and it works.", "excerpt": "I used this approach to drive entire app, and it works. Nearly all data are fetched from SQLite. User can select a database, which can change app views, and the data. In my experience it is quite fast. My example for android app: https://f-droid.org/pl/packages/io.github.rumcajs.offlinewebsearch/ Note that I am not android experienced programmer, and I am still learning.", "context": "developer of an Android app", "use_case": "Android app data store", "switched_from": "", "story": "PostgreSQL for Everything"}]}, {"label": "Reliability", "summary": "Praised as robust and resilient against file corruption.", "quotes": [{"id": 801088816, "item_id": 50068051, "url": "https://news.ycombinator.com/item?id=50068051", "by": "arc-in-space", "date": "2026-10-13", "stance": "recommend", "quote": "You're less likely to end up with corrupted files with sqlite.", "excerpt": "One of the reasons is high resilience, practically state of the art as far as writing to a single storage device allows. You're less likely to end up with corrupted files with sqlite. This is much more difficult to get right when manipulating files yourself than you might think. For your consideration (I'll add that I used to think similarly as you, and I still wouldn't use sqlite for everything, but it's shockingly ", "context": "", "use_case": "reliable data storage", "switched_from": "", "story": "apsw: Another Python SQLite Wrapper"}, {"id": 763811840, "item_id": 47738240, "url": "https://news.ycombinator.com/item?id=47738240", "by": "podlp", "date": "2026-04-12", "stance": "recommend", "quote": "It\u2019s an incredibly robust piece of software that\u2019s often cost me pennies per month to serve 100k+ monthly users.", "excerpt": "I love SQLite and have ran it even on networked drives with queued writes for read-heavy applications. It\u2019s an incredibly robust piece of software that\u2019s often cost me pennies per month to serve 100k+ monthly users. But there\u2019s definitely a time and place for solid, dedicated database servers like Postgres.", "context": "", "use_case": "read-heavy app database", "switched_from": "", "story": "I run multiple $10K MRR companies on a $20/month tech stack"}, {"id": 768728080, "item_id": 48045505, "url": "https://news.ycombinator.com/item?id=48045505", "by": "tombert", "date": "2026-05-06", "stance": "recommend", "quote": "I'm grateful SQLite exists.", "excerpt": "On a recent project I have needed to use exFAT. exFAT is terrible for a number of reasons, but in my case the thing I had to deal with was the lack of journaling, which had the possibility to corrupt files if there were a power interruption or something. I initially was writing a series of files and doing some quasi-append-only things with new files and compacting the old one to sort of reinvent journaling. What I di", "context": "", "use_case": "safe journaled storage on exFAT", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}]}, {"label": "Easy backups", "summary": "Backups are simple via the .backup command or Litestream.", "quotes": [{"id": 801052480, "item_id": 50065780, "url": "https://news.ycombinator.com/item?id=50065780", "by": "brainless", "date": "2026-10-13", "stance": "recommend", "quote": "SQLite backups are easy. I really like how I am building web apps these days.", "excerpt": "I remember CGI days and I have written tiny web \"features\" with Perl and C many years ago. All my product backends are now in Rust and SQLite but I use frameworks and libraries. Like Tokio, Auxum/Actix Web, Diesel. I am not sure I like the idea that the binary will be called by nginx on each request. I prefer the backend binary to have state. A 256 MiB virtual instance is enough for any software shared between friend", "context": "builds product backends in Rust", "use_case": "web app backend database", "switched_from": "", "story": "A Modern Web App in C"}, {"id": 783146369, "item_id": 48946648, "url": "https://news.ycombinator.com/item?id=48946648", "by": "discordance", "date": "2026-07-17", "stance": "recommend", "quote": "SQLite also has a .backup command:", "excerpt": "Good call. I use Litestream for offsite backups. SQLite also has a .backup command: sqlite3 /path/to/db '.backup /path/to/backup' or sqlite3 /path/to/db \"VACUUM INTO '/path/to/backup'\"", "context": "", "use_case": "database backup", "switched_from": "", "story": "SQLite Is All You Need"}, {"id": 792026896, "item_id": 49501681, "url": "https://news.ycombinator.com/item?id=49501681", "by": "sighansen", "date": "2026-08-30", "stance": "recommend", "quote": "sqlite as Database backen on ephemeral pods", "excerpt": "I use the same stack to run my apps! sqlite as Database backen on ephemeral pods. On initialisation, the pod restores the current litestream backup from object storage. No persistent volumes needed. No issues so far.", "context": "", "use_case": "app database on Kubernetes", "switched_from": "", "story": "Running SQLite Apps on Docker and Kubernetes with Litestream"}]}, {"label": "App file format", "summary": "Recommended as an application file format in place of raw files, CSVs or zip containers.", "quotes": [{"id": 794443792, "item_id": 49652737, "url": "https://news.ycombinator.com/item?id=49652737", "by": "alterom", "date": "2026-09-11", "stance": "recommend", "quote": "I used SQLite because it makes a lot of sense to use as an application file format", "excerpt": ">It almost always does. People put so much effort into building layers of abstractions to avoid using SQL, while just writing it directly would be much faster, easier, more readable, easier to maintain, modify, and debug. I do not get it. When your data is literally hierarchical and all you need to do is read/write one Big Object, \"just using SQL\" makes no sense. I used SQLite because it makes a lot of sense to use a", "context": "", "use_case": "application file format", "switched_from": "", "story": "SQLite as a Document Database (2020)"}, {"id": 785796352, "item_id": 49112272, "url": "https://news.ycombinator.com/item?id=49112272", "by": "zie", "date": "2026-07-30", "stance": "recommend", "quote": "My advice: Just use SQLite. Don't use PG if you don't need it.", "excerpt": "My advice: Just use SQLite. Don't use PG if you don't need it. I mean PG is awesome. I use it all the time, but I also use SQLite all the time too. SQLite is also a replacement for fopen()[0]. if you need to read/write data files, I recommend using SQLite instead. Replace your CSV's with SQLite, etc. 0: https://sqlite.org/whentouse.html", "context": "", "use_case": "data storage, replacing CSV files", "switched_from": "", "story": "Self-contained highly-portable Python distributions"}, {"id": 790826448, "item_id": 49426653, "url": "https://news.ycombinator.com/item?id=49426653", "by": "genxy", "date": "2026-08-24", "stance": "recommend", "quote": "I think it is the next logical extension over using zip as the container (jar/ooxml/epub).", "excerpt": "I love your idea, 40% of which is because I had the same one. I think it is the next logical extension over using zip as the container (jar/ooxml/epub). https://sqlite.org/draft/appfileformat.html There is little reason that ELF needs to be so complex. My motivation was to bundle multiple wasm modules together along with data.", "context": "", "use_case": "application file format", "switched_from": "", "story": "Executable Is a SQLite Database"}]}], "caveats": [{"label": "High availability", "summary": "Replication for minimal downtime and data loss relies on add-ons that some consider less battle-tested than Postgres replication.", "quotes": [{"id": 785531856, "item_id": 49095741, "url": "https://news.ycombinator.com/item?id=49095741", "by": "mikeocool", "date": "2026-07-29", "stance": "recommend", "quote": "I love SQLite, and I really want to run it in production", "excerpt": "I love SQLite, and I really want to run it in production, but my clients expect minimal data loss and downtime when one of my servers goes down. The answer to that being running it on top of LiteFS or LiteStream seems like starts to make the setup a lot less simple and lot less battle tested, which kind of starts to negate the advantages over just running Postgres.", "context": "has clients expecting minimal data loss and downtime", "use_case": "production database", "switched_from": "", "story": "SQLite in Production: Optimizing WAL Mode, Concurrency, and VFS Layers"}, {"id": 783135552, "item_id": 48945972, "url": "https://news.ycombinator.com/item?id=48945972", "by": "mikeocool", "date": "2026-07-17", "stance": "recommend", "quote": "I love SQLite, but my clients expect minimal data loss and downtime when one of my servers goes down.", "excerpt": "I love SQLite, but my clients expect minimal data loss and downtime when one of my servers goes down. How are people solving that issue with SQLite? Everytime I\u2019ve investigated it, it seems like the state of the art is not very battle tested WAL shipping solutions. If I\u2019m setting something like that up, suddenly running Postgres with its battle tested replication starts to look not so much more complicated in compari", "context": "runs servers for clients", "use_case": "application database", "switched_from": "", "story": "SQLite Is All You Need"}]}, {"label": "Concurrent writes", "summary": "Multiple concurrent writers can hit locks, even with WAL mode.", "quotes": [{"id": 763829905, "item_id": 47739369, "url": "https://news.ycombinator.com/item?id=47739369", "by": "the__alchemist", "date": "2026-04-12", "stance": "warn", "quote": "I have not found WAL mode is an antidote to SQLite locks during multiple concurrent writes.", "excerpt": "I concur with some of the commenters that this read as a bit of a brain dump. It has a thread connecting several loosely-related topics. Observation #1: You can also solve the tech stack problem with Heroku. I think the author's stack probably has a steeper learning curve, but is a cheaper option. I think it's a bit of an odd comparison (I won't say straw-man, as I don't doubt some people do this) to go from a fully-", "context": "", "use_case": "web app database", "switched_from": "", "story": "I run multiple $10K MRR companies on a $20/month tech stack"}, {"id": 789787984, "item_id": 49361749, "url": "https://news.ycombinator.com/item?id=49361749", "by": "replwoacause", "date": "2026-08-19", "stance": "recommend", "quote": "I use SQLite for everything, and I'm perfectly happy with it.", "excerpt": "I use SQLite for everything, and I'm perfectly happy with it. I'm aware of the concurrent writer issues, but at my scale it doesn't even matter.", "context": "", "use_case": "general data storage", "switched_from": "", "story": "PostgreSQL for Everything"}]}, {"label": "Loose typing", "summary": "Non-strict column typing by default bothers some users.", "quotes": [{"id": 789134818, "item_id": 49320926, "url": "https://news.ycombinator.com/item?id=49320926", "by": "tyre", "date": "2026-08-16", "stance": "warn", "quote": "SQLite\u2019s default of non-strict typing is, to me, bananas.", "excerpt": "All of my personal apps use Postgres because: - types are lovely. We love types. SQLite\u2019s default of non-strict typing is, to me, bananas. - SELECT DISTINCT ON is my ride-or-die - most importantly, I\u2019m very comfortable in Postgres and the setup cost is basically zero (like SQLite) because Claude does it.", "context": "", "use_case": "", "switched_from": "", "story": "Does anyone run Postgres without PgBouncer?"}, {"id": 768766608, "item_id": 48047913, "url": "https://news.ycombinator.com/item?id=48047913", "by": "llagerlof", "date": "2026-05-07", "stance": "warn", "quote": "One time, the database got corrupted and all the data was lost. That was the day I stopped using SQLite.", "excerpt": "I used SQLite for a few applications several years ago. One time, the database got corrupted and all the data was lost. That was the day I stopped using SQLite. Also, the lack of enforced column data types was always a negative for me.", "context": "", "use_case": "application databases", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}]}, {"label": "Network filesystems", "summary": "Running it on a distributed cloud file system caused race conditions at scale.", "quotes": [{"id": 783138288, "item_id": 48946143, "url": "https://news.ycombinator.com/item?id=48946143", "by": "f3b5", "date": "2026-07-17", "stance": "warn", "quote": "I still like sqlite but I'd be wary of using it again for a usecase like mine.", "excerpt": "I was such a big sqlite fan that I used it for my data-intensive startup. Once I actually started scaling it up I ran into crippling file system race conditions. This was because we were hosted on a distributed file system in the cloud which I learned is very very bad for sqlite. So I had to migrate the production db under live load from sqlite to mysql which was a quite ...intense week. I still like sqlite but I'd b", "context": "data-intensive startup founder", "use_case": "startup production database", "switched_from": "", "story": "SQLite Is All You Need"}]}, {"label": "Corruption report", "summary": "One commenter lost all data to a corrupted database.", "quotes": [{"id": 768766608, "item_id": 48047913, "url": "https://news.ycombinator.com/item?id=48047913", "by": "llagerlof", "date": "2026-05-07", "stance": "warn", "quote": "One time, the database got corrupted and all the data was lost. That was the day I stopped using SQLite.", "excerpt": "I used SQLite for a few applications several years ago. One time, the database got corrupted and all the data was lost. That was the day I stopped using SQLite. Also, the lack of enforced column data types was always a negative for me.", "context": "", "use_case": "application databases", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}]}], "who": [{"by": "brainless", "context": "builds product backends in Rust", "url": "https://news.ycombinator.com/item?id=50065780", "date": "2026-10-13"}, {"by": "Imustaskforhelp", "context": "runs Go static binaries on a 500mb/1gb RAM server", "url": "https://news.ycombinator.com/item?id=49881727", "date": "2026-09-28"}, {"by": "dkn", "context": "works in large, old codebases", "url": "https://news.ycombinator.com/item?id=49856487", "date": "2026-09-26"}, {"by": "qingcharles", "context": ".NET developer", "url": "https://news.ycombinator.com/item?id=49737627", "date": "2026-09-17"}, {"by": "nzoschke", "context": "runs single tenant VMs for 6+ years", "url": "https://news.ycombinator.com/item?id=49442503", "date": "2026-08-26"}, {"by": "renegat0x0", "context": "developer of an Android app", "url": "https://news.ycombinator.com/item?id=49371139", "date": "2026-08-19"}, {"by": "thatwasunusual", "context": ".NET developer", "url": "https://news.ycombinator.com/item?id=49362632", "date": "2026-08-19"}, {"by": "alexjplant", "context": "building a FOSS forum", "url": "https://news.ycombinator.com/item?id=49238193", "date": "2026-08-09"}, {"by": "mattm", "context": "runs personal services on one instance", "url": "https://news.ycombinator.com/item?id=49134380", "date": "2026-08-01"}, {"by": "mikeocool", "context": "has clients expecting minimal data loss and downtime", "url": "https://news.ycombinator.com/item?id=49095741", "date": "2026-07-29"}, {"by": "bradfitz", "context": "works at Tailscale", "url": "https://news.ycombinator.com/item?id=48782221", "date": "2026-07-03"}, {"by": "faangguyindia", "context": "runs an image-heavy site serving 10 TB/month", "url": "https://news.ycombinator.com/item?id=48476706", "date": "2026-06-10"}], "tags": ["for small web apps", "for personal projects", "for local development", "for local-first apps", "for .NET developers"], "use_cases": ["embedded database", "storage", "backend database", "storage backend", "application file format", "persistence layer"], "compared": [{"slug": "postgresql", "name": "PostgreSQL", "co": 38, "switched_from": 3, "switched_to": 0}, {"slug": "duckdb", "name": "DuckDB", "co": 14, "switched_from": 0, "switched_to": 2}, {"slug": "turso", "name": "Turso", "co": 8, "switched_from": 0, "switched_to": 0}, {"slug": "litestream", "name": "Litestream", "co": 7, "switched_from": 0, "switched_to": 0}, {"slug": "mysql", "name": "MySQL", "co": 4, "switched_from": 0, "switched_to": 1}, {"slug": "claude-code", "name": "Claude Code", "co": 6, "switched_from": 0, "switched_to": 0}, {"slug": "tantivy", "name": "Tantivy", "co": 3, "switched_from": 0, "switched_to": 1}, {"slug": "pglite", "name": "PGlite", "co": 3, "switched_from": 1, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=49361279", "title": "PostgreSQL for Everything", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=48905491", "title": "SQLite Is All You Need", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=48326802", "title": "SQLite is all you need for durable workflows", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=48042434", "title": "SQLite Is a Library of Congress Recommended Storage Format", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=47778086", "title": "Do You Even Need a Database?", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=47616704", "title": "Modern SQLite: Features You Didn't Know It Had", "mentions": 4}], "sentiment_by_month": {"2025-11": {"recommend": 3, "neutral": 5, "compare": 1}, "2025-12": {"recommend": 13, "neutral": 2, "compare": 1, "warn": 1}, "2026-01": {"neutral": 7, "recommend": 8}, "2026-02": {"recommend": 5, "neutral": 4, "warn": 1, "compare": 1}, "2026-03": {"recommend": 3, "neutral": 3}, "2026-04": {"recommend": 15, "neutral": 3, "warn": 2}, "2026-05": {"neutral": 4, "recommend": 8, "warn": 1}, "2026-06": {"neutral": 4, "recommend": 2}, "2026-07": {"recommend": 16, "neutral": 8, "warn": 1, "compare": 2}, "2026-08": {"recommend": 12, "neutral": 7, "compare": 2, "warn": 1}, "2026-09": {"recommend": 5, "neutral": 2}, "2026-10": {"neutral": 5, "compare": 1, "recommend": 5}}, "quotes": [{"id": 803159041, "item_id": 50197440, "url": "https://news.ycombinator.com/item?id=50197440", "by": "cj00", "date": "2026-10-22", "stance": "recommend", "quote": "Search is via FTS5 in SQLite and works great on an 8 year old MacBook Pro.", "excerpt": "I used the same concept to build a searchable database of YouTube thumbnails in my watch history. I always end up trying to remember a video I didn't finish from a week or two ago and YouTube's history search plain sucks. So I built an app that tracks all my watch history across all devices, downloads the thumbnails and runs them through a local Gemma model to write a paragraph description and OCR any text in the thu", "context": "", "use_case": "full-text search of watch history", "switched_from": "", "story": "Semantic search across major museums"}, {"id": 803123841, "item_id": 50195240, "url": "https://news.ycombinator.com/item?id=50195240", "by": "aivarsk", "date": "2026-10-22", "stance": "neutral", "quote": "relaxed durability on SQLite to reach 3500+ ingest requests per second", "excerpt": "I am old and grumpy developer, I used to grep, split and join logs for decades and grep/awk to extract some stats out of that. While OTEL adds some nice things, I hate using my browser to scan through the logs. During SREcon EMEA observed how vendors compete to ingest more, reduce storage size and price. I decided to try another way and create an old-grumpy-dev version of OTEL that is simple and just stores everythin", "context": "", "use_case": "log storage", "switched_from": "", "story": null}, {"id": 803114499, "item_id": 50194656, "url": "https://news.ycombinator.com/item?id=50194656", "by": "sksksk", "date": "2026-10-22", "stance": "neutral", "quote": "The parsed data is added to a SQLite database.", "excerpt": "I'm always a bit wary about doing write up on things like this, as I kind of just muddle things together and definitely don't follow best practices. I used OpenClaw a while back, I did find it useful, but it wasn't as reliable. This time around, I found hermes a lot easier to use and configure. One thing I think has improved it is building apps to \"pre-compute\" data. For example, with my email, instead of accessing m", "context": "", "use_case": "travel and purchase tracking", "switched_from": "", "story": "Claude Duet"}, {"id": 801088816, "item_id": 50068051, "url": "https://news.ycombinator.com/item?id=50068051", "by": "arc-in-space", "date": "2026-10-13", "stance": "recommend", "quote": "You're less likely to end up with corrupted files with sqlite.", "excerpt": "One of the reasons is high resilience, practically state of the art as far as writing to a single storage device allows. You're less likely to end up with corrupted files with sqlite. This is much more difficult to get right when manipulating files yourself than you might think. For your consideration (I'll add that I used to think similarly as you, and I still wouldn't use sqlite for everything, but it's shockingly ", "context": "", "use_case": "reliable data storage", "switched_from": "", "story": "apsw: Another Python SQLite Wrapper"}, {"id": 801052480, "item_id": 50065780, "url": "https://news.ycombinator.com/item?id=50065780", "by": "brainless", "date": "2026-10-13", "stance": "recommend", "quote": "SQLite backups are easy. I really like how I am building web apps these days.", "excerpt": "I remember CGI days and I have written tiny web \"features\" with Perl and C many years ago. All my product backends are now in Rust and SQLite but I use frameworks and libraries. Like Tokio, Auxum/Actix Web, Diesel. I am not sure I like the idea that the binary will be called by nginx on each request. I prefer the backend binary to have state. A 256 MiB virtual instance is enough for any software shared between friend", "context": "builds product backends in Rust", "use_case": "web app backend database", "switched_from": "", "story": "A Modern Web App in C"}, {"id": 801019730, "item_id": 50063733, "url": "https://news.ycombinator.com/item?id=50063733", "by": "sdevonoes", "date": "2026-10-12", "stance": "recommend", "quote": "I miss the tools I used in the past (gcc, linux, sqlite,\u2026)", "excerpt": "It\u2019s a shame I cannot inspect the tool. It\u2019s a shame I cannot modify it as I see fit. It\u2019s a shame that I need to pay $200/month to use it. But hey, I am a 3X engineer and my boss likes it, so I guess it should be fine? Not really, but I still get to pay the bills (for now) I miss the tools I used in the past (gcc, linux, sqlite,\u2026)", "context": "", "use_case": "", "switched_from": "", "story": "AI is a tool and using it well takes skill"}, {"id": 800944017, "item_id": 50059001, "url": "https://news.ycombinator.com/item?id=50059001", "by": "aynyc", "date": "2026-10-12", "stance": "recommend", "quote": "SQLite does a great job to support single writer and multiple readers.", "excerpt": "It doesn't. That's the issue. DuckDB for us is a pure read-only service pipe. We need other tools to ingest and write to parquet, which has its own limitation. SQLite does a great job to support single writer and multiple readers. That's what we use for aggregation right now. DuckDB is purely post analytics.", "context": "", "use_case": "aggregation", "switched_from": "", "story": "Postgres isn't slow, your storage is"}, {"id": 800797937, "item_id": 50049871, "url": "https://news.ycombinator.com/item?id=50049871", "by": "somat", "date": "2026-10-12", "stance": "compare", "quote": "thought it would be nice to have it a little more self contained and allow for a sqlite db if wanted", "excerpt": "It's not even that good for switching to different engines. My normal mode of operation is via postgres(I like the functions better than sqlite) But for a recent little program thought it would be nice to have it a little more self contained and allow for a sqlite db if wanted. Ignoring the the sql differences(Remember, I use postgres for it's functions, so there were many) sqlite uses a different parameter style(I e", "context": "", "use_case": "self-contained optional database", "switched_from": "", "story": "apsw: Another Python SQLite Wrapper"}, {"id": 800506945, "item_id": 50031684, "url": "https://news.ycombinator.com/item?id=50031684", "by": "richardbaxter", "date": "2026-10-10", "stance": "neutral", "quote": "Writing data to a SQlite database to keep context relevant", "excerpt": "I built this using basically 20 years of experience in working with small and large websites - the bit you're getting charged for is data collection - analysis - recommendations. Writing data to a SQlite database to keep context relevant, it has a crawler, Google search console integration and other services like dataforseo so you know there's demand for the thing you're doing. I've been using it and developing it fo", "context": "", "use_case": "storing SEO context data", "switched_from": "", "story": "Agency in an MCP: all the tools you need to do your own SEO work"}, {"id": 800492051, "item_id": 50030753, "url": "https://news.ycombinator.com/item?id=50030753", "by": "1024bits", "date": "2026-10-10", "stance": "neutral", "quote": "Everything is stored in SQLite and Markdown as well", "excerpt": "I'm working on Totem [0], feel free to give it a try! I try to post about it in the \"What are you working on\" thread monthly but haven't mustered the courage to do a \"launch\" yet. It's cross-platform, Rust core with native UIs (Rust UI for Desktop, I'm using Iced [1]). I built it due to similar problems, and because I got tired of waiting on nvUltra [2]. Totem is meant to be more of a team/collaboration app in truth,", "context": "", "use_case": "storage", "switched_from": "", "story": "I tried to move my notes out of Emacs. I failed. Again"}, {"id": 799055248, "item_id": 49940953, "url": "https://news.ycombinator.com/item?id=49940953", "by": "codedump", "date": "2026-10-03", "stance": "neutral", "quote": "I think SQLite is good enough, but in the current agent era, it doesn\u2019t seem good enough anymore.", "excerpt": "Personally, I think SQLite is good enough, but in the current agent era, it doesn\u2019t seem good enough anymore. For example, while I was writing semquery (https://github.com/lichuang/semquery), I kept looking for an embedded database that could simultaneously support SQL queries, vector queries, and graph database functionality. SQLite makes this a bit difficult. Maybe this Turso is worth looking into.", "context": "", "use_case": "embedded database", "switched_from": "", "story": "Supabase is acquiring Turso"}, {"id": 798107632, "item_id": 49881727, "url": "https://news.ycombinator.com/item?id=49881727", "by": "Imustaskforhelp", "date": "2026-09-28", "stance": "recommend", "quote": "sqlite (which is also more scalable than people think!)", "excerpt": "Curious to know what does actually scale according to your opinion (if not postgres) and what is the scale that we are talking about when mentioning some of the largest databases ever built (I hope you can talk more about it!) There seems to be many many options at attempting/trying to scale postgresql, what are your opinions of them? Also It is my sort of opinion that you really have a good problem if postgresql isn", "context": "runs Go static binaries on a 500mb/1gb RAM server", "use_case": "database for small server apps", "switched_from": "", "story": "MongoDB CEO resigns to join Meta"}, {"id": 797703794, "item_id": 49856487, "url": "https://news.ycombinator.com/item?id=49856487", "by": "dkn", "date": "2026-09-26", "stance": "neutral", "quote": "loads it into a SQLite database for querying", "excerpt": "I have had a ton of success in exposing AST-based tools to agents when working in large, old codebases. Without them, not only do agents get simple things like function call counts wrong, they tend to return different results. I use this as an example when showing people how the tooling works. Grep is fine for simple use cases. A step up from that is ast-grep and I need to explore this tool more. But I had the most s", "context": "works in large, old codebases", "use_case": "querying code graph", "switched_from": "", "story": "One Month Without AI"}, {"id": 797605377, "item_id": 49850336, "url": "https://news.ycombinator.com/item?id=49850336", "by": "gcoakes", "date": "2026-09-25", "stance": "recommend", "quote": "The standard that I want to hold myself is derived from the open source world like SQLite.", "excerpt": "I used to feel this way, but now, I want more people to send me AI slop because I'm tired of human slop. I am tired of parsing through two word git commits where the author didn't care enough to tell Claude to write the commit message for them. Sure, I would prefer to read your personal thoughts on the change, but if the choice is between no meaningful information and an agent's mostly coherent if a bit verbose descr", "context": "", "use_case": "code quality benchmark", "switched_from": "", "story": "Too AI; Didn't Read"}, {"id": 795846994, "item_id": 49740437, "url": "https://news.ycombinator.com/item?id=49740437", "by": "capydev42", "date": "2026-09-17", "stance": "neutral", "quote": "FastAPI + SQLite for the backend", "excerpt": "Hi there, I am the creator of DrillFlow, I would like to share my thoughts behind the creation of DrillFlow. Nowadays my job shifted from implementing of solutions to planning/understanding/explaining software solutions. So i got used to create diagrams on the fly while explaining or listening to others. My problem was to fit the most important abstractions and also details on the same canvas and keep it still readab", "context": "", "use_case": "backend database", "switched_from": "", "story": "Show HN: DrillFlow \u2013 a diagram editor where every node opens into a sub-diagram"}, {"id": 795802032, "item_id": 49737627, "url": "https://news.ycombinator.com/item?id=49737627", "by": "qingcharles", "date": "2026-09-17", "stance": "recommend", "quote": "These days I just use EF with Sqlite on 99% of my projects.", "excerpt": "I can't even remember the last time I used MSSQL with .NET. I'm embarrassed that I worked on projects now that were paying huge sums for licenses when .NET works so absolutely well with every other DB. These days I just use EF with Sqlite on 99% of my projects.", "context": ".NET developer", "use_case": "database for .NET projects", "switched_from": "Microsoft SQL Server", "story": "Performance Improvements in .NET 11"}, {"id": 795091649, "item_id": 49693228, "url": "https://news.ycombinator.com/item?id=49693228", "by": "mirekrusin", "date": "2026-09-14", "stance": "recommend", "quote": "sqlite3 instead of k8s-style complexity blowup", "excerpt": "https://mirekrusin.com/cave Palantir like system \u2013 data, ontology, logic, actions, security, operational workflows \u2013 packaged as single cli, local first, git friendly text .cave files and sqlite3 instead of k8s-style complexity blowup. Working on the weekends. Next is probably extension of the language to integrate something like https://github.com/mirek/ast for arbitrary ast traversals/modification/generation/better", "context": "", "use_case": "storage backend", "switched_from": "", "story": "Ask HN: What are you working on? (September 2026)"}, {"id": 794443792, "item_id": 49652737, "url": "https://news.ycombinator.com/item?id=49652737", "by": "alterom", "date": "2026-09-11", "stance": "recommend", "quote": "I used SQLite because it makes a lot of sense to use as an application file format", "excerpt": ">It almost always does. People put so much effort into building layers of abstractions to avoid using SQL, while just writing it directly would be much faster, easier, more readable, easier to maintain, modify, and debug. I do not get it. When your data is literally hierarchical and all you need to do is read/write one Big Object, \"just using SQL\" makes no sense. I used SQLite because it makes a lot of sense to use a", "context": "", "use_case": "application file format", "switched_from": "", "story": "SQLite as a Document Database (2020)"}, {"id": 792026896, "item_id": 49501681, "url": "https://news.ycombinator.com/item?id=49501681", "by": "sighansen", "date": "2026-08-30", "stance": "recommend", "quote": "sqlite as Database backen on ephemeral pods", "excerpt": "I use the same stack to run my apps! sqlite as Database backen on ephemeral pods. On initialisation, the pod restores the current litestream backup from object storage. No persistent volumes needed. No issues so far.", "context": "", "use_case": "app database on Kubernetes", "switched_from": "", "story": "Running SQLite Apps on Docker and Kubernetes with Litestream"}, {"id": 791904882, "item_id": 49494055, "url": "https://news.ycombinator.com/item?id=49494055", "by": "Kuyawa", "date": "2026-08-29", "stance": "recommend", "quote": "Drop a SQLite db if you want a quick portable app", "excerpt": "I use a 1MB Rust shell with a webview (wry and winit). It works wonders Drop a SQLite db if you want a quick portable app, or postgresql if something more robust on your server. Tell your AI of choice [2] to create a TODO rust app [1] in html, css and js using wry and winit and you'll see what I mean, a thing of beauty [1] https://github.com/kuyawa/todo-rust [2] https://github.com/kuyawa/todo-rust/blob/main/prompt.tx", "context": "", "use_case": "portable app database", "switched_from": "", "story": "Ask HN: Any true alternatives to electron JavaScript?"}, {"id": 791818032, "item_id": 49488627, "url": "https://news.ycombinator.com/item?id=49488627", "by": "boyter", "date": "2026-08-29", "stance": "neutral", "quote": "Its what I used to migrate to the 6 TB sqlite database", "excerpt": "Its what I used to migrate to the 6 TB sqlite database... so yes? Depends on your definition of backup. In my case I wanted a way to restore in the case of data loss, so yes. Im sure some pedantic sql admin will disagree with me here.", "context": "", "use_case": "6 TB database", "switched_from": "", "story": "Sloc Cloc and Code 4.0 (scc) \u2013 Finding the files that need the most attention"}, {"id": 791781633, "item_id": 49486352, "url": "https://news.ycombinator.com/item?id=49486352", "by": "trueno", "date": "2026-08-29", "stance": "recommend", "quote": "i use this stack quite a bit too", "excerpt": "i use this stack quite a bit too. i made the claude do some load bearing 360 backflips, gate and seam a whole buncha smoking guns, and bolt go-starlark on top of this so i can just declare little web apps like its streamlit but it doesn't feel sucky like streamlit. i get to just write little blurbs of python-looking code and i get these fully reactive tools. probably my favorite and most used abstraction that came fr", "context": "", "use_case": "database for web apps", "switched_from": "", "story": "Htmx 4.0"}, {"id": 791248176, "item_id": 49453011, "url": "https://news.ycombinator.com/item?id=49453011", "by": "Fervicus", "date": "2026-08-26", "stance": "neutral", "quote": "I use sqlite for a lot of my personal projects.", "excerpt": "People using DuckDB, what's your use case? I use sqlite for a lot of my personal projects. What's a good use case for using DuckDB?", "context": "", "use_case": "personal projects", "switched_from": "", "story": "AWS Acquires DuckLabs"}, {"id": 791130624, "item_id": 49445664, "url": "https://news.ycombinator.com/item?id=49445664", "by": "larodi", "date": "2026-08-26", "stance": "recommend", "quote": "I love SQL, and respect SQLite and DuckDB for what they are.", "excerpt": ">I\u2019m amazed how much collapses into a single domain: SQL. perhaps is more correct to say \"all data, including code, is table-representable, even though being a graph\" or \"everything falls back to tables\" or even \"relational algebra is all u need\", but I strongly disagree SQL being a domain on its all, and that it (all) collapses into such domain. One can collapse segment tables likewise into DATALOG, which is also a ", "context": "", "use_case": "", "switched_from": "", "story": "Actually Queryable Executables"}, {"id": 791080048, "item_id": 49442503, "url": "https://news.ycombinator.com/item?id=49442503", "by": "nzoschke", "date": "2026-08-26", "stance": "recommend", "quote": "Single Go binary + SQLite database all the way.", "excerpt": "Single Go binary + SQLite database all the way. I've been doing this architecture on single tenant VMs for like 6+ years now and it has so many advantages for deployments, security and scaling. Pretty much every new tool and agent computer I set up uses this pattern. I've blogged about it and created a template repo. https://housecat.com/blog/the-hugs-stack-hypermedia-unix-go-sqlite https://github.com/housecat-inc/sc", "context": "runs single tenant VMs for 6+ years", "use_case": "single-binary deployments", "switched_from": "", "story": "One Go binary, one YAML file, one SQLite database: I wrote my monitoring tool"}, {"id": 790826448, "item_id": 49426653, "url": "https://news.ycombinator.com/item?id=49426653", "by": "genxy", "date": "2026-08-24", "stance": "recommend", "quote": "I think it is the next logical extension over using zip as the container (jar/ooxml/epub).", "excerpt": "I love your idea, 40% of which is because I had the same one. I think it is the next logical extension over using zip as the container (jar/ooxml/epub). https://sqlite.org/draft/appfileformat.html There is little reason that ELF needs to be so complex. My motivation was to bundle multiple wasm modules together along with data.", "context": "", "use_case": "application file format", "switched_from": "", "story": "Executable Is a SQLite Database"}, {"id": 790449824, "item_id": 49403114, "url": "https://news.ycombinator.com/item?id=49403114", "by": "andersmurphy", "date": "2026-08-22", "stance": "recommend", "quote": "Project into sqlite on your app server is the main trick I use.", "excerpt": "Project into sqlite on your app server is the main trick I use. Denormalize if you have to. Hell, for a lot of projects you don't even need to get that fancy. Run a single server with an embedde database, running Go or Java and you're good to go.", "context": "", "use_case": "fast app server data access", "switched_from": "", "story": "There's no reason for software to be slow anymore"}, {"id": 789938224, "item_id": 49371139, "url": "https://news.ycombinator.com/item?id=49371139", "by": "renegat0x0", "date": "2026-08-19", "stance": "recommend", "quote": "I used this approach to drive entire app, and it works.", "excerpt": "I used this approach to drive entire app, and it works. Nearly all data are fetched from SQLite. User can select a database, which can change app views, and the data. In my experience it is quite fast. My example for android app: https://f-droid.org/pl/packages/io.github.rumcajs.offlinewebsearch/ Note that I am not android experienced programmer, and I am still learning.", "context": "developer of an Android app", "use_case": "Android app data store", "switched_from": "", "story": "PostgreSQL for Everything"}, {"id": 789810114, "item_id": 49363132, "url": "https://news.ycombinator.com/item?id=49363132", "by": "JaggerFoo", "date": "2026-08-19", "stance": "neutral", "quote": "I've used Postgres, Sqlite, Duckdb", "excerpt": "Use case matters. I use a SQL databases as needed. I've used Postgres, Sqlite, Duckdb, Json files with AWS Athena, Oracle enterprise for ERP systems (a multitude of schemas and objects with interoperability), and others. I'm currently, deploying Duckdb with AWS S3 Tables (Iceberg) to see how it fits for a use case I have. IT is great and always changing. Keep trying new things. Cheers", "context": "", "use_case": "", "switched_from": "", "story": "PostgreSQL for Everything"}, {"id": 789802112, "item_id": 49362632, "url": "https://news.ycombinator.com/item?id=49362632", "by": "thatwasunusual", "date": "2026-08-19", "stance": "recommend", "quote": "I can get away with SQLite for local development, prototyping (and even staging)", "excerpt": "It's the other way around for me: as 99% of the stuff I develop is .NET (and I use EF Core for database stuff), I can get away with SQLite for local development, prototyping (and even staging), and then just \"flip a switch\" for it to run on production PostgreSQL. Both are amazing technologies.", "context": ".NET developer", "use_case": "local development and prototyping", "switched_from": "", "story": "PostgreSQL for Everything"}, {"id": 789787984, "item_id": 49361749, "url": "https://news.ycombinator.com/item?id=49361749", "by": "replwoacause", "date": "2026-08-19", "stance": "recommend", "quote": "I use SQLite for everything, and I'm perfectly happy with it.", "excerpt": "I use SQLite for everything, and I'm perfectly happy with it. I'm aware of the concurrent writer issues, but at my scale it doesn't even matter.", "context": "", "use_case": "general data storage", "switched_from": "", "story": "PostgreSQL for Everything"}, {"id": 789612064, "item_id": 49350754, "url": "https://news.ycombinator.com/item?id=49350754", "by": "heikkilevanto", "date": "2026-08-18", "stance": "neutral", "quote": "has recently migrated to a sqlite backend", "excerpt": "I keep an old phone in the bathroom, and every morning I use it to file my weight and my peak flow (for asthma tracking) on a web page I host on my home server. The server just appends the numbers into two text files, and plots some nice curves. In case of errors or other problems, I can just go and edit those files. The basic tracker took about an afternoon to code, by hand, long before we had LLMs. I have a more ad", "context": "", "use_case": "backend for personal tracker", "switched_from": "", "story": "Ask HN: Ive quit six systems for tracking my illness. What works?"}, {"id": 789134818, "item_id": 49320926, "url": "https://news.ycombinator.com/item?id=49320926", "by": "tyre", "date": "2026-08-16", "stance": "warn", "quote": "SQLite\u2019s default of non-strict typing is, to me, bananas.", "excerpt": "All of my personal apps use Postgres because: - types are lovely. We love types. SQLite\u2019s default of non-strict typing is, to me, bananas. - SELECT DISTINCT ON is my ride-or-die - most importantly, I\u2019m very comfortable in Postgres and the setup cost is basically zero (like SQLite) because Claude does it.", "context": "", "use_case": "", "switched_from": "", "story": "Does anyone run Postgres without PgBouncer?"}, {"id": 789058625, "item_id": 49316164, "url": "https://news.ycombinator.com/item?id=49316164", "by": "linesofcode", "date": "2026-08-15", "stance": "recommend", "quote": "I love this trend of pushing SQLite for advanced scenarios and new architectures. It\u2019s so much more powerful than people give it credit for.", "excerpt": "Fantastic stuff. I love this trend of pushing SQLite for advanced scenarios and new architectures. It\u2019s so much more powerful than people give it credit for.", "context": "", "use_case": "advanced database scenarios", "switched_from": "", "story": "BriskDB"}, {"id": 788589649, "item_id": 49286853, "url": "https://news.ycombinator.com/item?id=49286853", "by": "marginalia_nu", "date": "2026-08-13", "stance": "neutral", "quote": "I have a 400 GB sqlite database with samples of rendered root document DOMs", "excerpt": "Interesting project. Website discovery is indeed in a pretty dire spot, definitely a space that needs innovation. An auto-labeled website directory isn't that silly of an idea. I have a 400 GB sqlite database with samples of rendered root document DOMs I use for ad detection in Marginalia Search I've been meaning to explore similar ideas using.", "context": "", "use_case": "storing rendered DOM samples", "switched_from": "", "story": "I Built a 500k-Domain Search Engine for Makers in a Weekend for $10"}, {"id": 787811088, "item_id": 49238193, "url": "https://news.ycombinator.com/item?id=49238193", "by": "alexjplant", "date": "2026-08-09", "stance": "neutral", "quote": "Think phpBB but written in Rust with modern UI niceties and a SQLite backend.", "excerpt": "I'm going whole-hog on LLM-driven development to build out an old-school FOSS forum that can run in resource-constrained environments with a minimum of fuss. Think phpBB but written in Rust with modern UI niceties and a SQLite backend. My hope is that interested parties will be able to deploy this on random SBCs or Unikraft and use cloudflared to expose their service to interested parties. Watching old forums that I ", "context": "building a FOSS forum", "use_case": "forum backend database", "switched_from": "", "story": "Ask HN: What are you working on? (August 2026)"}, {"id": 787507025, "item_id": 49219189, "url": "https://news.ycombinator.com/item?id=49219189", "by": "repsilat", "date": "2026-08-07", "stance": "compare", "quote": "When I use Sqlite I miss many of its upsides--better data migrations and better concurrency being two.", "excerpt": "Faster is better than slower. Postgres is amazing. When I use Sqlite I miss many of its upsides--better data migrations and better concurrency being two. But queries are not free, and sometimes are slower than I'd like even with the right indexes. And for OLAP-like queries like the one in TFA you might say \"well, just don't use postgres for that,\" but wouldn't it be better if you could? If you could use one database ", "context": "", "use_case": "embedded database", "switched_from": "", "story": "Making Postgres 300x faster for analytics: batching, operator fusion, and SIMD"}, {"id": 787459361, "item_id": 49216210, "url": "https://news.ycombinator.com/item?id=49216210", "by": "patkepa", "date": "2026-08-07", "stance": "compare", "quote": "making it an alternative to SQLite/turso?", "excerpt": "Question, does having it in pure rust, opens possibility of embedding pgrust directly into binary, making it an alternative to SQLite/turso?", "context": "", "use_case": "embedded database", "switched_from": "", "story": "Making Postgres 300x faster for analytics: batching, operator fusion, and SIMD"}, {"id": 786413266, "item_id": 49150829, "url": "https://news.ycombinator.com/item?id=49150829", "by": "sahil2412", "date": "2026-08-02", "stance": "neutral", "quote": "SQLite for storage", "excerpt": "I am currently working on Clippy Vision, which is a fully local screen watcher that watches your screen continuously and builds context over time so you don't have to re-explain context like you do have to in case of Claude or ChatGPT. Currently, its reactive, i.e a simple ReAct loop which calls function to retrieve data from memory and answers question when asked. Everything runs locally (Ollama + a local vision mod", "context": "", "use_case": "storage", "switched_from": "", "story": "Ask HN: What are you working on? (August 2026)"}, {"id": 786150080, "item_id": 49134380, "url": "https://news.ycombinator.com/item?id=49134380", "by": "mattm", "date": "2026-08-01", "stance": "recommend", "quote": "I just use sqlite on the instance for my database.", "excerpt": "Yeah this is what I did. All my personal services are running on one EC2 instance and I use subdomains to separate them. If I need more memory it's easy to scale up. I just use sqlite on the instance for my database. You don't need a postgres service if it's just for you. Hosted services are only great for setup and scaling. You're not going to need scaling. Infra setup can now be done easily with AI and terraform.", "context": "runs personal services on one instance", "use_case": "personal services database", "switched_from": "", "story": "Software for One"}, {"id": 785531856, "item_id": 49095741, "url": "https://news.ycombinator.com/item?id=49095741", "by": "mikeocool", "date": "2026-07-29", "stance": "recommend", "quote": "I love SQLite, and I really want to run it in production", "excerpt": "I love SQLite, and I really want to run it in production, but my clients expect minimal data loss and downtime when one of my servers goes down. The answer to that being running it on top of LiteFS or LiteStream seems like starts to make the setup a lot less simple and lot less battle tested, which kind of starts to negate the advantages over just running Postgres.", "context": "has clients expecting minimal data loss and downtime", "use_case": "production database", "switched_from": "", "story": "SQLite in Production: Optimizing WAL Mode, Concurrency, and VFS Layers"}, {"id": 784907072, "item_id": 49056692, "url": "https://news.ycombinator.com/item?id=49056692", "by": "Kubuxu", "date": "2026-07-26", "stance": "recommend", "quote": "This is fast enough using SQLite to just dump all commands into it and query on each typed letter.", "excerpt": "I use SQLite history to have context aware line suggestion in my shell. So the command that gets ghost displayed (and can be expanded with right arrow) depends on the current working directory, its parents and recency. This is fast enough using SQLite to just dump all commands into it and query on each typed letter. The DB is at this point 10years old. I use it to evaluate my work habits and patterns. More recently I", "context": "", "use_case": "shell history storage", "switched_from": "", "story": "Stinkpot: SQLite-Backed Shell History"}, {"id": 784895408, "item_id": 49055963, "url": "https://news.ycombinator.com/item?id=49055963", "by": "faangguyindia", "date": "2026-07-26", "stance": "recommend", "quote": "I mostly use Go + SQLite for all the things I used to use Rails, JavaScript, or Python for.", "excerpt": "I mostly use Go + SQLite for all the things I used to use Rails, JavaScript, or Python for. I find python django wastes too much resources, just look at memory usage. One of my web app backend (go) is serving approx 100 req/s right now and i look at pprof i see it's not bottlenecked by CPU but mostly IO and i love this. Writing concurrent code in Go is easy, the code i wrote 10yrs ago still compiles with no issue! Th", "context": "", "use_case": "web app databases", "switched_from": "", "story": "Some more things about Django I've been enjoying"}, {"id": 783256689, "item_id": 48953543, "url": "https://news.ycombinator.com/item?id=48953543", "by": "abrookewood", "date": "2026-07-17", "stance": "recommend", "quote": "SQLite is just a file and often, that is enough.", "excerpt": "Honestly, I love PostgreSQL, but now I have another server or service to run. SQLite is just a file and often, that is enough.", "context": "", "use_case": "lightweight database", "switched_from": "", "story": "Learning a few things about running SQLite"}, {"id": 783135552, "item_id": 48945972, "url": "https://news.ycombinator.com/item?id=48945972", "by": "mikeocool", "date": "2026-07-17", "stance": "recommend", "quote": "I love SQLite, but my clients expect minimal data loss and downtime when one of my servers goes down.", "excerpt": "I love SQLite, but my clients expect minimal data loss and downtime when one of my servers goes down. How are people solving that issue with SQLite? Everytime I\u2019ve investigated it, it seems like the state of the art is not very battle tested WAL shipping solutions. If I\u2019m setting something like that up, suddenly running Postgres with its battle tested replication starts to look not so much more complicated in compari", "context": "runs servers for clients", "use_case": "application database", "switched_from": "", "story": "SQLite Is All You Need"}, {"id": 775627297, "item_id": 48476706, "url": "https://news.ycombinator.com/item?id=48476706", "by": "faangguyindia", "date": "2026-06-10", "stance": "recommend", "quote": "Most of my apps are now simply HTMX + Go + SQLite. I've found it's enough for most projects.", "excerpt": "Most of my apps are now simply HTMX + Go + SQLite. I've found it's enough for most projects. One of my sites is image heavy and serves 10 TB of traffic per month. For this, I use the following setup: 1. S3 (I wanted reliable data storage) 2. In front of it, I have Cloudflare (with Tiered Cache enabled, which makes POPs prefer pulling from Cloudflare rather than the origin). I've set rules to cache everything on both ", "context": "runs an image-heavy site serving 10 TB/month", "use_case": "web app database", "switched_from": "", "story": "Building an HTML-first site doubled our users overnight"}, {"id": 768819937, "item_id": 48051246, "url": "https://news.ycombinator.com/item?id=48051246", "by": "imrozim", "date": "2026-05-07", "stance": "recommend", "quote": "I wish it was as simple as sqlite. No config just works.", "excerpt": "I use postgresql for my startup but every time i needed a quick local testing i wish it was as simple as sqlite. No config just works.", "context": "startup founder", "use_case": "quick local testing", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}, {"id": 768766608, "item_id": 48047913, "url": "https://news.ycombinator.com/item?id=48047913", "by": "llagerlof", "date": "2026-05-07", "stance": "warn", "quote": "One time, the database got corrupted and all the data was lost. That was the day I stopped using SQLite.", "excerpt": "I used SQLite for a few applications several years ago. One time, the database got corrupted and all the data was lost. That was the day I stopped using SQLite. Also, the lack of enforced column data types was always a negative for me.", "context": "", "use_case": "application databases", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}, {"id": 768728080, "item_id": 48045505, "url": "https://news.ycombinator.com/item?id=48045505", "by": "tombert", "date": "2026-05-06", "stance": "recommend", "quote": "I'm grateful SQLite exists.", "excerpt": "On a recent project I have needed to use exFAT. exFAT is terrible for a number of reasons, but in my case the thing I had to deal with was the lack of journaling, which had the possibility to corrupt files if there were a power interruption or something. I initially was writing a series of files and doing some quasi-append-only things with new files and compacting the old one to sort of reinvent journaling. What I di", "context": "", "use_case": "safe journaled storage on exFAT", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}, {"id": 763829905, "item_id": 47739369, "url": "https://news.ycombinator.com/item?id=47739369", "by": "the__alchemist", "date": "2026-04-12", "stance": "warn", "quote": "I have not found WAL mode is an antidote to SQLite locks during multiple concurrent writes.", "excerpt": "I concur with some of the commenters that this read as a bit of a brain dump. It has a thread connecting several loosely-related topics. Observation #1: You can also solve the tech stack problem with Heroku. I think the author's stack probably has a steeper learning curve, but is a cheaper option. I think it's a bit of an odd comparison (I won't say straw-man, as I don't doubt some people do this) to go from a fully-", "context": "", "use_case": "web app database", "switched_from": "", "story": "I run multiple $10K MRR companies on a $20/month tech stack"}, {"id": 763811840, "item_id": 47738240, "url": "https://news.ycombinator.com/item?id=47738240", "by": "podlp", "date": "2026-04-12", "stance": "recommend", "quote": "It\u2019s an incredibly robust piece of software that\u2019s often cost me pennies per month to serve 100k+ monthly users.", "excerpt": "I love SQLite and have ran it even on networked drives with queued writes for read-heavy applications. It\u2019s an incredibly robust piece of software that\u2019s often cost me pennies per month to serve 100k+ monthly users. But there\u2019s definitely a time and place for solid, dedicated database servers like Postgres.", "context": "", "use_case": "read-heavy app database", "switched_from": "", "story": "I run multiple $10K MRR companies on a $20/month tech stack"}]}