Ploy vs Netlify: beyond static hosting

Ploy and Netlify both deploy static sites and Next.js from Git with preview URLs. The difference is what comes after: Ploy is open source, self-hostable, and includes SQLite databases, queues, cron, durable workflows, auth, and an AI gateway.

Abstract indigo glow on a dark background representing a Ploy versus Netlify comparison

Netlify made "push to Git, get a URL" normal for static sites, and it still does that well. The gap shows up when a static site becomes an app: you need a database, a job that runs after a form submit, a scheduled task, and user accounts, and each one is a function, an add-on, or a third-party service wired in by hand.

Ploy is an open-source serverless cloud that starts from the same push-to-deploy flow and includes those pieces as platform features declared in ploy.yaml. It can also be self-hosted, free. This is a comparison of the two for teams deciding where an app, not just a site, should live. We build Ploy, so we have tried to be careful about what we claim for Netlify; check their current docs for specifics.

The short version

Topic Ploy Netlify
Source Open source (AGPLv3) Proprietary
Self-hosting Yes, free No
Deploy from Git GitHub, or Ploy Git with no GitHub account GitHub, GitLab, Bitbucket, Azure DevOps
Preview deployments Every branch Deploy Previews per pull request and branch
Static sites kind: static Core product
Next.js kind: dynamic with @meetploy/nextjs Netlify Next.js runtime
Serverless compute Workers with fetch, queue, cron, and workflow handlers Netlify Functions and Edge Functions
Database SQLite per project, migrations applied on deploy, included Netlify DB and third-party integrations
Queues Included Background Functions (async, no queue API)
Cron Included, 5- or 6-field expressions Scheduled Functions
Durable workflows Included, step retries and resume Not a platform feature
Authentication Included (auth: in ploy.yaml) Via integrations
AI gateway Included, OpenAI-compatible Not a platform feature
Entry price Free; Pro $10/month; self-host free Free tier; paid plans per member

Where Ploy is the better fit

The app needs a real backend

A Ploy project describes its backend in the same file as its build:

kind: dynamic
build: pnpm build
out: dist
assets:
binding: ASSETS
not_found_handling: single-page-application
run_worker_first:
- /api/*
db:
DB: default
queue:
TASKS: tasks
cron:
DIGEST: "0 9 * * 1-5"

That is a Vite SPA with a worker serving /api/*, a SQLite database whose .sql migrations are applied on deploy, a queue for work that can wait, and a weekday-morning cron. Durable workflows (workflow:), managed auth (auth:), file storage, sandboxes, and the AI gateway (ai: true) are added the same way. One deployment, one preview URL per branch, one local emulator.

On Netlify, functions and scheduled functions are first-class, but a queue with retries, a durable workflow, and auth are things you assemble from a database provider and other services.

You want to self-host

Ploy's source is public and the platform runs on your own servers with Docker Compose. Self-hosting is free, has no usage limits, and keeps code, environment variables, and databases inside your infrastructure. Netlify has no self-hosted offering.

Flat pricing

Hosted Ploy is free for up to 3 repositories and 1 concurrent deployment; Pro is $10 per month with unlimited repositories and custom domains. There is no per-member charge.

Where Netlify is the better fit

Pure static sites with a big plugin ecosystem

For a documentation site or marketing site with no backend, Netlify's build plugins, forms, redirects, and years of community recipes are hard to beat. Ploy deploys static sites with three lines of ploy.yaml, but its ecosystem is smaller.

You deploy from GitLab or Bitbucket

Ploy deploys from GitHub or from its own hosted Git (push with any client, no GitHub needed). Netlify connects to more Git providers directly.

You want a managed-only service

If self-hosting is not interesting and you want the most familiar managed static host, Netlify is a safe choice.

Moving a site from Netlify to Ploy

For a static site, add kind: static, build, and out to ploy.yaml, connect the repository, and push. Netlify's _redirects and netlify.toml are not read by Ploy, so routing rules move to the worker or to your framework's config. For a Next.js site, follow Deploy Next.js on Ploy.

Frequently Asked Questions

Does Ploy have Deploy Previews like Netlify?

Yes. Every push to a non-production branch gets its own preview URL, and deleted branches are cleaned up. Commits with [skip deploy] are skipped.

Does Ploy run Netlify Functions?

No. Ploy runs workers with a fetch handler, or framework servers such as Next.js and TanStack Start. Most function code ports to a fetch handler with small changes.

Is there a form handling feature?

Not as a platform feature. Handle a form with a route in your worker and store it with the db binding, which takes about as many lines as configuring a form integration.

Can I use a different database?

Yes. Bindings are optional; connect to any external database from your worker as usual.

Get started