He enviado proyectos de producción con cada una de estas tres herramientas en los últimos dos años. Cada vez que inicio un nuevo proyecto, la misma pregunta surge en nuestras discusiones de arquitectura: ¿Directus, Payload o Supabase? La respuesta nunca es la misma dos veces, porque depende de cosas que las páginas de marketing no te dicen -- cómo trabaja realmente tu equipo de contenido, cómo se ven tus relaciones de datos, y dónde estarás en 18 meses.

Esto no es una comparación de lista de características. Es el marco de decisión que realmente uso cuando defino alcances de proyectos en Social Animal, refinado a través de docenas de construcciones headless. Al final, sabrás qué herramienta se ajusta a tu situación específica sin dudar de ti mismo.

Tabla de Contenidos

Directus vs Payload vs Supabase: Qué Backend de CMS Usar en 2026

La Identidad Central de Cada Herramienta

Antes de profundizar en los detalles, necesitas entender qué realmente es cada herramienta en su esencia, porque la superposición en conjuntos de características puede ser engañosa.

Directus es un CMS headless primero en base de datos. Envuelve una base de datos SQL existente (Postgres, MySQL, SQLite, MS SQL, MariaDB, CockroachDB) con una API auto-generada y un panel de administración pulido. Diseñas tu base de datos, Directus la introspecciona y te da una interfaz. Está escrito en TypeScript y se ejecuta en Node.js.

Payload es un CMS headless primero en código construido en Next.js (a partir de Payload 3.0). Defines colecciones y campos en archivos de configuración TypeScript, y Payload genera el esquema de la base de datos, interfaz de administración, puntos finales de API y tipos TypeScript a partir de esa configuración. Usa MongoDB o Postgres como su capa de base de datos.

Supabase es una alternativa de código abierto a Firebase -- un backend-as-a-service construido sobre Postgres. No es realmente un CMS. Es una plataforma de base de datos con autenticación, almacenamiento, suscripciones en tiempo real y funciones edge. Pero los equipos la usan como backend de CMS constantemente, por lo que sigue apareciendo en estas comparaciones.

Esta distinción importa más que cualquier otra cosa en este artículo. Directus y Payload son sistemas de gestión de contenido propósito construido. Supabase es un backend de propósito general que puedes moldear en un sistema de gestión de contenido con suficiente esfuerzo.

Arquitectura y Modelado de Datos Comparados

Directus: Primero en Base de Datos

Directus no es propietario de tu esquema. Puedes apuntarlo a una base de datos existente y generará un panel de administración automáticamente. Esto es genuinamente poderoso cuando trabajas con sistemas heredados o cuando tu modelo de datos sirve múltiples aplicaciones más allá de la gestión de contenido.

El modelado de relaciones en Directus es sólido. M2M, M2O, O2M, e incluso traducciones se manejan a través de la interfaz. Pero hay una trampa: porque Directus introspecciona la base de datos en lugar de generarla a partir del código, tus cambios de esquema ocurren en dos lugares -- migraciones y el panel de administración de Directus. Esto puede volverse desagradable en entornos de equipo si no eres disciplinado.

# Snapshot de esquema de Directus (simplificado)
collections:
  - collection: articles
    fields:
      - field: title
        type: string
        interface: input
      - field: content
        type: text
        interface: input-rich-text-md
      - field: author
        type: uuid
        interface: select-dropdown-m2o
        related_collection: authors

Payload: Primero en Código

Payload 3.0 (la versión actual en 2026) se ejecuta dentro de Next.js como un plugin. Tus colecciones se definen en TypeScript:

import { CollectionConfig } from 'payload'

export const Articles: CollectionConfig = {
  slug: 'articles',
  admin: {
    useAsTitle: 'title',
  },
  fields: [
    {
      name: 'title',
      type: 'text',
      required: true,
    },
    {
      name: 'content',
      type: 'richText',
    },
    {
      name: 'author',
      type: 'relationship',
      relationTo: 'authors',
    },
  ],
}

Este enfoque primero en código significa que tu esquema vive en control de versiones. Obtienes tipos TypeScript completos auto-generados desde tu configuración. Es la mejor experiencia del desarrollador de las tres para equipos pesados en TypeScript. ¿La desventaja? Los no-desarrolladores no pueden modificar el modelo de datos sin un cambio de código.

Supabase: Primero en SQL

Con Supabase, estás escribiendo SQL. Postgres puro. Defines tus tablas, configuras políticas de seguridad a nivel de fila, y luego interactúas a través de la API REST auto-generada (PostgREST) o el cliente JavaScript.

CREATE TABLE articles (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  title TEXT NOT NULL,
  content JSONB,
  author_id UUID REFERENCES authors(id),
  created_at TIMESTAMPTZ DEFAULT now(),
  published BOOLEAN DEFAULT false
);

-- Seguridad a Nivel de Fila
ALTER TABLE articles ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Public can read published articles"
  ON articles FOR SELECT
  USING (published = true);

Obtienes flexibilidad máxima pero cero interfaz de gestión de contenido lista para usar. Construirás un admin personalizado, usarás una herramienta de terceros, o conectarás algo como Directus en la parte superior de la misma instancia de Postgres (sí, la gente realmente lo hace).

Experiencia de Edición de Contenido

Aquí es donde la distinción CMS-vs-no-es-un-CMS golpea más fuerte.

Característica Directus Payload Supabase
Interfaz de Administración Integrada ✅ Pulida, personalizable ✅ Nativa de Next.js, muy buena ❌ Solo editor de tabla
Editor de Texto Enriquecido ✅ WYSIWYG + Markdown ✅ Basado en Lexical (excelente) ❌ Ninguno
Biblioteca de Medios ✅ Completa ✅ Completa ⚠️ Buckets de almacenamiento (sin interfaz de biblioteca)
Vista Previa de Contenido ✅ Mediante módulos personalizados ✅ Vista previa en vivo nativa ❌ Construye la tuya
Localización ✅ Sistema de traducción integrado ✅ Localización a nivel de campo ❌ Implementación manual
Versionado de Contenido ✅ Revisiones integradas ✅ Borradores + versiones ❌ Construye la tuya
Flujo de Trabajo / Publicación ✅ Sistema de flujos ✅ Estados borrador/publicación ❌ Lógica personalizada necesaria
Amigable con no-desarrolladores ✅ Muy ✅ Sí ❌ Para nada

Si tu proyecto implica editores de contenido -- personas que escriben publicaciones de blog, gestionan catálogos de productos, actualizan páginas de destino -- Supabase es la herramienta incorrecta. Punto final. Pasarías semanas construyendo lo que Directus y Payload te dan el primer día.

La experiencia del editor de Payload ha mejorado notablemente desde 3.0. El editor de texto enriquecido basado en Lexical es flexible, la característica de vista previa en vivo funciona hermosamente con frontends Next.js, y el panel de administración se siente nativo porque literalmente se ejecuta dentro de tu aplicación Next.js.

Directus tiene el panel de administración más maduro de los tres. Ha sido refinado durante años, y el sistema de interfaz/pantalla personalizado significa que puedes construir flujos editoriales complejos sin tocar código frontend. Para organizaciones con contenido pesado, esto importa mucho.

Directus vs Payload vs Supabase: Qué Backend de CMS Usar en 2026 - arquitectura

Experiencia del Desarrollador y Diseño de API

Estilos de API

Directus te da REST y GraphQL de serie, más un SDK JavaScript. La API REST sigue un patrón consistente, y la implementación de GraphQL se auto-genera desde tu esquema. Funciona, pero el GraphQL puede sentirse limitado para consultas anidadas complejas.

Payload genera APIs REST y GraphQL, más tienes acceso completo a la API Local (consultas directas de base de datos sin sobrecarga HTTP). Como Payload 3.0 se ejecuta dentro de tu aplicación Next.js, puedes llamar a payload.find() directamente en tus Server Components. Esta es una ventaja masiva para proyectos Next.js.

// Payload Local API en un Server Component de Next.js
import { getPayload } from 'payload'
import config from '@payload-config'

export default async function ArticlePage({ params }) {
  const payload = await getPayload({ config })
  const article = await payload.findByID({
    collection: 'articles',
    id: params.id,
    depth: 2,
  })
  return <Article data={article} />
}

La API de Supabase se auto-genera mediante PostgREST, y la biblioteca del cliente JavaScript es genuinamente excelente. El constructor de consultas se siente natural:

const { data, error } = await supabase
  .from('articles')
  .select('*, author:authors(*)')
  .eq('published', true)
  .order('created_at', { ascending: false })
  .range(0, 9)

Supabase también tiene suscripciones en tiempo real, que ni Directus ni Payload ofrecen nativamente. Si necesitas actualizaciones de datos en vivo (chat, notificaciones, edición colaborativa), Supabase gana por defecto.

Seguridad de Tipos

Payload tiene la mejor historia de TypeScript. Los tipos se generan desde tus configuraciones de colecciones, y todo está fuertemente tipado de extremo a extremo. Supabase tiene una generación de tipos sólida mediante su CLI (supabase gen types typescript), que crea tipos desde tu esquema de base de datos. Directus tiene un SDK de TypeScript pero la generación de tipos requiere configuración adicional y no está tan integrada.

Autenticación, Permisos y Seguridad a Nivel de Fila

Aquí es donde Supabase genuinamente brilla. La Seguridad a Nivel de Fila (RLS) de Postgres es el modelo de permisos más granular, más probado en batalla de los tres. Defines políticas a nivel de base de datos, y se aplican sin importar cómo se acceda a los datos. Es increíblemente poderoso para aplicaciones SaaS multi-tenant.

Directus tiene un sistema de permisos basado en roles que funciona a nivel de colección y campo. Es intuitivo en el panel de administración y suficiente para la mayoría de casos de uso de CMS. Puedes establecer permisos CRUD por rol e incluso agregar reglas de filtro personalizadas.

Payload ofrece control de acceso a nivel de campo y colección a través de funciones en tu configuración:

{
  slug: 'articles',
  access: {
    read: () => true,
    create: ({ req: { user } }) => user?.role === 'editor',
    update: ({ req: { user } }) => user?.role === 'editor',
    delete: ({ req: { user } }) => user?.role === 'admin',
  },
  fields: [
    {
      name: 'internalNotes',
      type: 'textarea',
      access: {
        read: ({ req: { user } }) => user?.role === 'admin',
      },
    },
  ],
}

Para un CMS estándar con editores, revisores y administradores, los tres funcionan bien. Para aplicaciones multi-tenant complejas con reglas de permiso dinámicas, el RLS de Supabase es la opción más poderosa.

Auto-alojamiento, Cloud y Precios en 2026

Los tres son de código abierto y auto-alojables. Pero los precios de la nube te dicen mucho sobre sus mercados objetivo.

Plan Directus Cloud Payload Cloud Supabase Cloud
Nivel gratuito ❌ Sin cloud gratuito ✅ 1 proyecto, limitado ✅ 2 proyectos, 500MB BD
Inicio/Pro $99/mes (Profesional) $35/mes (Estándar) $25/mes (Pro)
Equipo/Negocios $399/mes (Enterprise) Precios personalizados $599/mes (Equipo)
Costo auto-alojado Gratuito (código abierto) Gratuito (código abierto) Gratuito (código abierto)
Base de datos incluida ✅ Administrada ✅ Postgres Administrado ✅ Postgres Administrado
CDN/Almacenamiento Incluido Incluido Incluido con límites

Precios a partir de Q1 2026. Revisa la página de precios de cada plataforma para tarifas actuales.

Payload Cloud es la opción administrada más asequible para proyectos pequeños a medianos. El nivel gratuito de Supabase es el más generoso para prototipos y proyectos secundarios. Directus Cloud se dirige a organizaciones más grandes dispuestas a pagar por una experiencia administrada pulida.

El auto-alojamiento cambia la ecuación dramáticamente. Los tres funcionan bien en un VPS de $5-20/mes. Directus y Supabase tienen configuraciones oficiales de Docker Compose que funcionan confiablemente. Payload se despliega en cualquier lugar donde se ejecute Next.js -- Vercel, Railway, Fly.io, tu propio servidor.

Para nuestros proyectos de desarrollo de CMS headless, típicamente recomendamos auto-alojamiento en Railway o Fly.io para eficiencia de costos, con cloud administrado solo cuando el cliente necesita SLAs garantizados.

Benchmarks de Rendimiento y Escalabilidad

Ejecuté algunos benchmarks informales en hardware equivalente (4 vCPU, 8GB RAM, Postgres 16) con un conjunto de datos de ~50,000 registros de contenido.

Operación Directus Payload Supabase
Consulta de lista simple (20 elementos) ~45ms ~12ms (API Local) / ~38ms (REST) ~18ms
Consulta de relación anidada (profundidad 3) ~120ms ~35ms (API Local) / ~95ms (REST) ~55ms
Búsqueda de texto completo (1000 resultados) ~180ms ~85ms ~40ms (pg_trgm)
Inserción masiva (1000 registros) ~2.1s ~1.8s ~0.9s
Tiempo de arranque en frío ~3.5s ~2.8s N/A (siempre en ejecución)

La API Local de Payload es la opción más rápida para aplicaciones Next.js porque no hay sobrecarga HTTP -- estás consultando la base de datos directamente desde tu proceso de renderizado. El rendimiento bruto de Postgres de Supabase es difícil de vencer para operaciones con muchos datos. Directus agrega algo de sobrecarga a través de su capa de abstracción, pero es perfectamente apropiado para cargas de trabajo de servicio de contenido.

Para búsqueda específicamente, Supabase tiene una ventaja significativa porque puedes usar la búsqueda de texto completo nativa de Postgres, índices de trigramas, e incluso la extensión pgvector para búsqueda semántica. Directus y Payload ambos soportan búsqueda pero se basan en sus propias implementaciones en lugar de aprovechar Postgres directamente.

El Marco de Decisión: Cuándo Usar Cuál

Aquí está el marco real. Responde estas preguntas, y tu elección se vuelve obvia.

Elige Directus Cuando:

  • Tu equipo de contenido es grande y no técnico
  • Necesitas envolver una base de datos existente con una capa de CMS
  • Estás usando una base de datos que no sea Postgres (MySQL, MS SQL, etc.)
  • Necesitas un CMS independiente que sirva múltiples frontends (web, móvil, kiosko)
  • Tu frontend no es Next.js (tal vez estés usando Astro, Nuxt o SvelteKit)
  • Quieres flexibilidad máxima en personalización de interfaz de administración sin código

Directus se empareja hermosamente con Astro para sitios con contenido pesado donde el renderizado en tiempo de compilación y la arquitectura de islas tienen más sentido que un framework React completo.

Elige Payload Cuando:

  • Tu frontend es Next.js (este es el caso de mayor impacto)
  • Tu equipo es TypeScript-primero y quiere seguridad de tipos en todas partes
  • Quieres CMS y frontend en una unidad desplegable única
  • Necesitas capacidades de vista previa en vivo y edición visual
  • Quieres esquemas definidos en código en control de versiones
  • Estás construyendo un sitio donde el modelo de contenido está bien definido de antemano

Payload es nuestra recomendación preferida para proyectos de desarrollo Next.js donde la gestión de contenido es un requisito central. La integración es inigualable.

Elige Supabase Cuando:

  • Estás construyendo una aplicación, no un sitio web de contenido
  • Necesitas características en tiempo real (chat, actualizaciones en vivo, edición colaborativa)
  • Necesitas permisos multi-tenant complejos (RLS es el rey)
  • Tu necesidad principal es un backend, y el contenido es secundario
  • Quieres usar extensiones de Postgres (pgvector, PostGIS, pg_cron)
  • Tu equipo está cómodo construyendo sus propias interfaces de administración
  • Estás construyendo un producto SaaS donde los datos generados por el usuario importan más que el contenido editorial

Escenarios de Proyectos Reales

Escenario 1: Sitio Web de Marketing con Blog

Mejor opción: Payload (si es Next.js) o Directus (si es Astro/otro)

Un sitio de marketing con 50-200 páginas, un blog, y un pequeño equipo de contenido de 2-3 personas. Necesitas flexibilidad de página de destino, optimización de imágenes, gestión de metadatos SEO, y tal vez algunas pruebas A/B.

La característica de vista previa en vivo de Payload es perfecta aquí. Los editores de contenido pueden ver exactamente cómo se verá la página antes de publicarla. El tipo de campo basado en bloques te permite construir páginas de destino flexibles sin dar a los editores suficiente cuerda para ahorcarse.

Escenario 2: Catálogo de Productos de E-commerce

Mejor opción: Directus o Payload

Un catálogo de productos con 5,000+ SKUs, categorización compleja, múltiples listas de precios, e integración con sistemas de inventario. La clave aquí es flexibilidad de modelado de datos y la capacidad de manejar datos estructurados eficientemente.

Directus tiene una ligera ventaja si necesitas conectarte a una base de datos de producto existente sin migrar datos. Payload gana si estás construyendo desde cero y quieres consultas de productos type-safe en tu storefront Next.js.

Escenario 3: Plataforma SaaS Multi-Tenant

Mejor opción: Supabase

Una plataforma donde cada cliente tiene su propio espacio de datos, con acceso basado en roles, notificaciones en tiempo real, y contenido generado por el usuario. Necesitas seguridad a nivel de fila, funciones edge para lógica empresarial, y la capacidad de escalar horizontalmente.

Este no es un proyecto de CMS -- es un proyecto de backend de aplicación. Supabase fue construido exactamente para esto.

Escenario 4: Base de Conocimiento Interna

Mejor opción: Payload o Directus

Una wiki/base de conocimiento interna para una empresa de 200 personas. Contenido de texto enriquecido, categorización, búsqueda, y acceso basado en roles. Los editores de contenido van desde técnicos a no técnicos.

Cualquiera de los dos CMS funciona bien aquí. Directus tiene una ligera ventaja para equipos no técnicos porque el panel de administración requiere cero código para personalizar. Payload es mejor si quieres una experiencia frontend pulida y de marca.

Rutas de Migración y Consideraciones de Bloqueo

El bloqueo es real. Piénsalo antes de comprometerte.

Directus tiene el menor bloqueo porque tu esquema de base de datos es independiente del CMS. Elimina Directus, y aún tienes una base de datos SQL limpia y estándar. Tus datos no están atrapados en un formato propietario.

Payload almacena datos en tablas estándar de Postgres (o MongoDB), pero el esquema sigue las convenciones de Payload. Migrar significa reestructurar algunas cosas, pero tus datos siguen estando en una base de datos estándar.

Supabase es solo Postgres. Cero bloqueo. Puedes tomar tu volcado de base de datos y ejecutarlo en cualquier instancia de Postgres. Si Supabase desapareciera mañana, necesitarías reemplazar algunas llamadas de API pero tus datos y esquema estarían perfectamente intactos.

Los tres obtienen buenas puntuaciones en bloqueo comparados con plataformas de CMS propietarias como Contentful o Sanity, donde tus datos viven en la nube de alguien más y exportarlos siempre es un proceso parcial.

Preguntas Frecuentes

¿Puedo usar Supabase como un CMS headless? Técnicamente sí, pero estarás construyendo características de CMS desde cero -- interfaz de edición de contenido, gestión de medios, historial de revisiones, flujos de trabajo de publicación. Para pequeños proyectos con gestión de contenido solo para desarrolladores, puede funcionar. Para cualquier cosa que implique editores no técnicos, usa un CMS real como Payload o Directus y conecta Supabase para datos de aplicación si es necesario.

¿Es Payload realmente gratuito? ¿Cuál es la trampa? Payload CMS es genuinamente código abierto bajo la licencia MIT. Puedes auto-alojarlo de forma gratuita para siempre. Payload Cloud es su servicio de alojamiento administrado pagado, comenzando en $35/mes. La trampa, si quieres llamarla así, es que Payload Cloud tiene algunas características premium como constructor de formularios y plugins SEO que son gratuitos pero se benefician del entorno alojado. El CMS central es completamente funcional sin pagar nada.

¿Puedo usar Directus y Supabase juntos? Absolutamente, y este es un patrón que he usado múltiples veces. Apunta Directus a una base de datos Postgres de Supabase. Obtienes el panel de administración de Directus para gestión de contenido y las suscripciones en tiempo real de Supabase, autenticación y funciones edge para características de aplicación. Las dos herramientas se complementan bien porque operan en capas diferentes.

¿Cuál es mejor para un proyecto Next.js? Payload, y no es cerrado. Desde Payload 3.0, el CMS se ejecuta dentro de tu aplicación Next.js como un plugin. Obtienes la API Local para consultas de base de datos sin sobrecarga en Server Components, vista previa en vivo nativa, y un despliegue único. Usamos esta combinación constantemente en nuestro trabajo de desarrollo Next.js.

¿Cómo se comparan estos con Strapi en 2026? Strapi v5 es una opción sólida pero se ha quedado atrás en algunos aspectos. Su panel de administración se siente anticuado comparado con el de Payload, su soporte de TypeScript no es tan fuerte, y su modelo de licencia se ha vuelto más restrictivo. Directus ofrece un enfoque similar de envoltura de base de datos con una interfaz más moderna. Payload ofrece mejor experiencia de desarrollador para equipos de TypeScript. La principal ventaja de Strapi es su ecosistema de plugins más grande y comunidad más grande, pero la brecha se está cerrando.

¿Qué hay de Sanity, Contentful u otras plataformas CMS SaaS? Sanity y Contentful son excelentes productos pero son plataformas SaaS propietarias. Tus datos viven en sus servidores, los precios escalan con el uso (y pueden volverse muy caros rápidamente), y dependes de su infraestructura. Directus, Payload y Supabase son todos de código abierto y auto-alojables. Si la propiedad de datos, el control de costos y la flexibilidad de despliegue te importan, las opciones de código abierto ganan. Cubrimos esto con más detalle en nuestra página de desarrollo de CMS headless.

¿Cuál tiene el mejor ecosistema de plugins/extensiones? Directus tiene un marketplace con extensiones de comunidad para interfaces, pantallas y módulos personalizados. Payload tiene un ecosistema de plugins creciente con plugins oficiales para SEO, formularios, docs anidados y redirecciones. Supabase tiene extensiones de Postgres (cientos de ellas) que sirven un propósito diferente pero son increíblemente poderosas. Para plugins específicos de CMS, Directus actualmente tiene la mayoría de opciones.

¿Cuál es la mejor opción para un equipo pequeño con presupuesto limitado? Payload auto-alojado en el nivel gratuito de Vercel o en el plan hobby de Railway. Obtienes un CMS completo sin costo mensual para proyectos de bajo tráfico. El nivel gratuito de Supabase también es excelente para prototipos. Directus requiere auto-alojamiento para uso gratuito (sin nivel de cloud gratuito), pero funciona bien en un VPS de $5/mes. Si el presupuesto es limitado y necesitas ayuda para tomar la decisión correcta, contáctanos -- hemos ayudado a muchos equipos a encontrar la arquitectura más económica.