Tess vs Payload
Code-first headless CMS (TypeScript, Next.js)
An open-source TypeScript CMS configured in code, which installs inside a Next.js application.
Side by side
| Criterion | Tess | Payload |
|---|---|---|
| Content models | Defined at runtime in the admin or API | Defined in TypeScript config files, deployed with the app |
| Runtime | Standalone Rust binary, any front-end stack | Runs inside a Next.js (Node.js) application |
| API | GraphQL generated from the models | REST, GraphQL and a local Node.js API |
| Databases | PostgreSQL, MySQL, SQLite, MongoDB, DynamoDB, RocksDB | MongoDB, PostgreSQL, SQLite |
| Extensibility | Sandboxed WebAssembly plugins | TypeScript hooks and plugins in the app |
| License | Community (personal use) / Enterprise (commercial use) | MIT |
Choose Payload if…
- Your project is a Next.js app and you want the schema in your repository as TypeScript.
Choose Tess if…
- Admins must evolve models without developers or redeploys.
- Your front ends are not all JavaScript, or you want the CMS separate from the app.
Moving from Payload to Tess
Payload collections and blocks map to Tess content types and components (blocks fields become DYNAMIC_ZONE). Translate the config into the tess-transfer YAML format, import it, and copy documents through the GraphQL APIs.
Facts checked on October 20, 2026 from Payload's public documentation (payloadcms.com). Products change quickly: check the vendor's site for the latest features and pricing.