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.

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: dynamicbuild: pnpm buildout: distassets:binding: ASSETSnot_found_handling: single-page-applicationrun_worker_first:- /api/*db:DB: defaultqueue:TASKS: taskscron:DIGEST: "0 9 * * 1-5"
kind: dynamicbuild: pnpm buildout: distassets:binding: ASSETSnot_found_handling: single-page-applicationrun_worker_first:- /api/*db:DB: defaultqueue:TASKS: taskscron: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
- Try Ploy free
- Read the Ploy docs and the self-host guide
- Next: Deploy a React (Vite) app on Ploy