Avatar

So... pickleDB Has 1000+ Stars and I’m Not Sure Why

2025-11-29T04:59:11Z · by Harrison Erd

Let’s talk about something weird.

Years ago — like multiple laptops ago — I wrote this tiny thing called PickleDB. It was supposed to be a stupid-simple key-value store powered by pickle and the vague hope that someone, somewhere, needed a database that was neither fast nor scalable but didn’t make them think too hard.

And then I kinda forgot about it.

But apparently the internet didn’t, because it now has over 1,000 stars on GitHub, and people are still using it in real projects like it’s not just a glorified dictionary with a file path.

What It Is (Now)

Once upon a time it was a synchronous, flat-file key-value store. No dependencies, no fuss, and weird features like separate methods for lists, dicts, and things like that.

And then, for some reason I can’t explain, I gave it async support, orjson and actual file locking. Now we have two classes:

  • PickleDB: Classic sync, still dumb and lovable
  • AsyncPickleDB: The glow-up version with proper async/await, atomic file saves, and context manager support

Example:


# sync
from pickledb import PickleDB

db = PickleDB("my.db")
db.set("foo", 42)
print(db.get("foo"))  # 42
db.save()

# async
from pickledb import AsyncPickleDB

async with AsyncPickleDB("my.db") as db:
    await db.aset("foo", 42)
    print(await db.aget("foo"))  # 42

It still writes to a JSON file. It still doesn't scale. It still has no concept of schema, types, or durability guarantees. But now it can do all that without blocking your event loop — which honestly puts it ahead of, like, 30% of production systems.

Do I Recommend It?

Listen. No. But also, kind of?

  • For small projects? Sure.
  • For CLI tools, prototypes, bots, teaching, automation? Yes.
  • For replacing Redis in prod? No. What’s wrong with you.
  • For confusing future maintainers? Absolutely.

PickleDB is the kind of tool you reach for when you need just enough persistence to not feel guilty, but not so much that you need a real database.

Final Thoughts

I don’t maintain it much. It’s stable — not in the "battle-tested" sense, but in the “no one wants to add features because it might actually become good” sense.

And yet, people still use it. Which is weird. But also kind of sweet.

So if you're one of the thousands of devs who found PickleDB useful: thanks. I hope it helped you ship something. Or at least procrastinate on something else.

If not, well... maybe try it. It’s like a JSON file with a .get() method. What could go wrong? Shoutout to the weird little tools that accidentally survive us.

← Back to posts