Skip to content

MikroORM

MikroORM is a TypeScript ORM for Node.js based on the Data Mapper, Unit of Work and Identity Map patterns. It is open source under the MIT license and maintained by Martin Adámek. The docs list v7 as the current major version.

By Martin AdámekOpen sourceORM

Facts checked on against the sources listed at the end of this page.

Pricing
Open sourceFree plan: Yes: free and open source. Sponsorship is accepted through GitHub Sponsors.
Open source
YesMIT

A good fit for

  • Domain-driven designs that rely on a Unit of Work and an Identity Map
  • TypeScript projects on Node.js that want typed queries and populate hints
  • Teams that use PostgreSQL, MongoDB or SQLite and want one API across them
  • Apps on Cloudflare D1, Turso or PGlite that need a Node-based ORM with those drivers

Not a good fit for

  • Teams that want a generated client and schema file rather than entity classes
  • Developers who prefer a thin query layer to a change-tracking ORM
  • Non-Node runtimes, since the docs describe it as a TypeScript ORM for Node.js

MikroORM pricing

MikroORM is free and open source under the MIT license. The maintainer accepts sponsorship through GitHub Sponsors.

Prices in USD, checked on 9 October 2026. Current prices on github.com.

Main features

Unit of Work
Automatic change tracking with batched queries, flushed in an implicit transaction.
Identity Map
One instance per entity row within a context.
Migrations and schema tools
A schema generator for prototyping, migrations for versioning and an entity generator that reads an existing database.
Query builder
A metadata-aware query builder, plus integration with the Kysely query builder.
Entity definitions
Define entities with defineEntity, decorators or EntitySchema.
Filters and soft delete
Global and entity-level filters, including soft delete.
Events and seeding
Lifecycle hooks and seeding with entity factories.

About MikroORM

MikroORM tracks changes to loaded entities through a Unit of Work and batches the resulting queries when you call em.flush(), wrapping them in an implicit transaction. An Identity Map keeps one instance per row within a request context.

Each database has its own driver package, such as @mikro-orm/postgresql or @mikro-orm/mysql, installed next to @mikro-orm/core. Supported databases include PostgreSQL, MySQL, MariaDB, SQLite, MongoDB, MS SQL, libSQL, CockroachDB, Oracle, Turso, Cloudflare D1 and PGlite.

Made by
Martin Adámek
Free plan
Yes: free and open source. Sponsorship is accepted through GitHub Sponsors.
Available on
Node.js

MikroORM alternatives

Questions about MikroORM

Is MikroORM open source?

Yes. The repository is under the MIT license.

Who maintains MikroORM?

The site and the repository credit Martin Adámek, with copyright from 2018 to the present.

Which databases does MikroORM support?

PostgreSQL, MySQL, MariaDB, SQLite, MongoDB, MS SQL, libSQL, CockroachDB, Oracle, Turso, Cloudflare D1 and PGlite, each through its own driver package.

How do I install MikroORM?

Install @mikro-orm/core and the driver for your database. The home page shows npm install @mikro-orm/postgresql for PostgreSQL.

Does MikroORM support migrations?

Yes. It has a migrations package, a schema generator for prototyping and an entity generator for existing databases.

Sources and links

Work on MikroORM? Claim this listing. Something wrong or out of date? Suggest a correction. Stats come from the public GitHub and npm APIs and update every day.

MikroORM: pricing, features and alternatives (2026) | ScratchDB