Windmill Labs
Windmill

Windmill vs Retool

Eight questions teams ask during a bake-off, with an honest answer on each one for where Windmill or Retool is the better pick.

WindmillWindmill in one sentence

An open-source workflow engine and developer platform to build and orchestrate all your internal software: scripts, workflows, data pipelines, AI agents and internal apps. Made for engineers who want full code flexibility and local dev experience, both to build internal software and to manage the underlying infrastructure.

RetoolRetool in one sentence

A proprietary low-code platform for internal apps: drag-and-drop canvas, large component library, JavaScript queries on top of your databases and APIs, and AI-assisted app generation. Workflows and AI Agents are adjacent products on the same canvas.

01 · What you can build

Which internal software can you build and orchestrate?

Windmill centralizes scripts, workflows, data pipelines, full-code apps, AI agents and operator UIs on a single runtime, with shared resources, auth and observability. Retool is app-builder first, with Workflows and Agents layered on the same visual canvas. Strong for internal apps. Narrower for scripts-as-APIs, heavy data pipelines and code-first automations.

PrimitiveWindmillWindmillRetoolRetool
Drag-and-drop dashboards and admin tools with a built-in component library
Custom dashboards and admin tools built in React or Svelte
Chain steps into flows with branching, retries and approval steps
Standalone functions exposed as APIs, webhooks or cron jobs with their own UI
ETL, syncs and scheduled data jobs with parallel branches
Partial
Build agents that call tools, branch on outputs and run as workflows
Isolated environments with persistent volumes for running agents
Cron jobs with retries, error handling and alerting
02 · Target

Who is each platform built for?

Windmill is built for developer-led teams where engineers own the platform end-to-end. Retool is built for developers and low-code engineers who want a polished visual canvas for internal tools, with JavaScript and SQL for the glue logic.

Primary audience

WindmillWindmill

Developer-led teams. Engineers own the platform end-to-end: code, Git, local dev, workspace forks, code review, CI/CD, AI coding tools, infrastructure as code.

RetoolRetool

Developers and low-code engineers building internal tools. The canvas-first UX is designed for people who think visually and write short JavaScript or SQL for glue logic. Common audience: full-stack devs, data engineers, ops engineers, technical PMs.

How non-developers participate

WindmillWindmill

Non-developers consume through auto-generated UIs, custom apps and an operator role. They can build simple apps with AI assistance, but authoring scripts and flows still involves writing code.

RetoolRetool

The drag-and-drop app canvas is approachable for non-developers who can read a bit of JavaScript. Deeper flows and Workflows still require real code, so a purely no-code user hits a ceiling fast.

03 · Build experience

How do you build on each platform?

Windmill is code-first: scripts are real files in any of 20+ languages, runnable locally, and the whole workspace lives in Git. Retool is canvas-first: apps and workflows are built visually in a web IDE against live data, with JavaScript and SQL for glue code. Great for getting started fast, harder to treat like application code.

Build apps directly in the Windmill UI: a built-in IDE where the frontend wires to backend scripts and flows as runnables, with AI-assisted generation and one-click deploy with versioning.

Authoring

WindmillWindmill

Build scripts in 20+ languages in a dedicated script editor. Each script is a standalone primitive with its own UI, API endpoint and scheduler, no visual canvas required to run. The app builder gives you both a drag-and-drop canvas and a full-code React or Svelte option. Any public or private package is a first-class import with automatic dependency resolution.

RetoolRetool

Authoring happens on a visual canvas. Apps are built by dragging components and wiring them to queries (REST, SQL, JS transformers). Workflows use a separate canvas with blocks for code, queries, loops and branches. Code blocks accept JavaScript; Workflow code blocks also accept Python. App definitions live in Retool's database, not as files in your repo by default.

Local dev & IDE

WindmillWindmill

Full-code apps are real React or Svelte source trees in your repo: edit in VS Code, run a local dev server for hot-reload preview, and deploy via the CLI or Git sync. The backend scripts and flows that power your apps are authored the same way: edit and test locally with the VS Code extension, then wire them into the app as runnables. Native language tooling and AI coding tools (Claude Code, Codex) work against real source files, not a canvas.

RetoolRetool

A Retool CLI (Labs / educational) can scaffold apps, manage Retool DB, list and export apps, and create custom components from the command line. It is not a local-dev loop: editing pages still happens in Retool's web IDE against live data, the CLI does not run apps locally, and canvas changes do not round-trip through it. Query code is edited inline; longer JavaScript or Python lives in the canvas editor. No offline mode.

Language runtimes

WindmillWindmill

TypeScript (Deno, Bun, Node.js), Python, Go, Bash, SQL, PowerShell, PHP, Rust and more (20+ languages total). Any npm, PyPI, Go, Maven or Cargo package is a first-class import with automatic dependency resolution.

RetoolRetool

JavaScript for transformers, query post-processing and component event handlers. Python and SQL for backend queries. Additional languages require wrapping in a Retool Workflow or an external service call.

Data handling

WindmillWindmill

First-class data tables with SQL queries, versioning and a browse / edit UI as a persistent primitive separate from apps, plus native S3 integration for large payloads, files and persistent storage across scripts, flows and apps.

RetoolRetool

Retool Database is a hosted Postgres for app-backing data with a browse / edit UI, available on Free and above with row caps that scale by tier. External databases connect as Resources. Files and large binary data go through the File component and the AWS S3 resource.

Resources & secrets

WindmillWindmill

Resources (typed JSON for credentials, connection info, configs) and Variables (individual secrets) are first-class and reusable across scripts, flows and apps. They're encrypted at rest, scoped via folders and groups for access control, and versioned in Git. External secret backends (Vault, AWS Secrets Manager) are Enterprise only.

RetoolRetool

Resources (database and API connections) and environment variables are configured at the organization level. Values are encrypted at rest and not visible in app code. External secret managers (AWS Secrets Manager, Vault) are Enterprise only.

Git & CI

WindmillWindmill

Full IaC: scripts, flows, apps, resources, variables, secrets, schedules, folders, groups and permissions are all files in Git, deployed via the CLI and Git sync. Internal tooling runs like application code: PRs, reviews, rollbacks, CI/CD. Git sync is free for up to 2 users; beyond that is Enterprise only.

RetoolRetool

Retool Source Control syncs apps, workflows, resources and themes to GitHub, GitLab, Bitbucket, AWS CodeCommit or Azure Repos via pull requests. It is listed as Enterprise only on the pricing page. Lower tiers rely on App Release Versions inside Retool itself.

04 · Integrations

How does the platform integrate with your existing stack?

Windmill treats any public package (npm, PyPI, Go or Maven) or your own as a first-class import, so the effective integration catalog is the package ecosystems themselves. Retool ships 100+ polished connectors for the most common databases and SaaS tools. Easier out of the box for mainstream stacks. Tighter ceiling for the long tail.

Type `import stripe` in the script editor and run. Windmill detects the import, resolves the version and pins it in a per-script lockfile automatically. No venv, no pip install, no restart: the platform manages dependencies for you.

Connecting out

WindmillWindmill

Any npm, PyPI, Go or Maven package is a first-class import with automatic per-script dependency resolution and lockfiles, and no plugin layer in between: you call the vendor's real SDK with full type inference and auto-completion in the editor. 50+ pre-built resource types cover common databases (Postgres, Snowflake, BigQuery), SaaS (Slack, Stripe, GitHub, Notion, OpenAI) and infrastructure (S3, Redis, Kafka): paste an API key into a typed form and the resource is shared across scripts, flows and apps, encrypted at rest. A community Hub has reusable scripts and flows for common tasks.

RetoolRetool

80+ pre-built connectors for databases (Postgres, MySQL, Snowflake, BigQuery), SaaS (Salesforce, Stripe, HubSpot, Slack, Zendesk, Jira) and AI providers (OpenAI, Anthropic, Google Gemini). For anything not in the catalog, you fall back to a generic REST or GraphQL resource or a JavaScript code block.

Receiving events

WindmillWindmill

Native triggers for HTTP, cron, Kafka, NATS, Postgres CDC, SQS, MQTT, SMTP and WebSocket. Each trigger is a typed primitive in the UI: configure topic, subject or path, attach it to a script or flow, and Windmill handles the connection, replay and consumer-group state. Every script also gets an HTTP endpoint and a webhook URL for free, so most receive paths need zero glue code.

RetoolRetool

Three trigger types on Workflows: Scheduled (cron), Webhook, and Query (BETA, polls a database or SaaS query for new rows). Event-driven triggers beyond that (Kafka consumers, CDC, queue consumers) require polling workarounds or an external event bridge.

Extending

WindmillWindmill

A new integration is just a script with a new import. No plugin release cycle to wait on. Custom UI components can be added as React components.

RetoolRetool

Custom components exist but are limited compared to writing a standalone React app. Custom auth, custom connectors and advanced integrations often require dropping to a generic REST resource with hand-rolled JavaScript transformers.

05 · Migration & lock-in

How hard to get in, and how hard to get out?

Windmill keeps switching cost low. Step code is standard TS, Python, Go, Bash or SQL that runs anywhere, including after you leave Windmill. Retool has higher lock-in: apps are stored in a proprietary canvas format, and Git export is an Enterprise feature that still produces Retool-specific files.

Getting in

WindmillWindmill

Paste a function body into the script editor, Windmill infers args, generates a UI, handles dependencies. Drag-and-drop apps, triggers, schedules and variables migrate one by one. No learning curve around a proprietary canvas format.

RetoolRetool

Fast if you already think in terms of drag-and-drop apps wired to queries. Common CRUD UIs over a database can be live in under an hour. Migrating existing code-based internal tools usually means redrawing the UI component by component, since there is no import from React, HTML or other app formats.

Getting out

WindmillWindmill

Step logic is already standard code (TS, Python, Go, Bash, SQL) that runs anywhere. The CLI exports the full workspace as plain files. What you lose leaving Windmill is the runtime, not the step code.

RetoolRetool

Retool apps are stored in a proprietary canvas format. With Source Control enabled (Enterprise only), apps and workflows sync to Git as JSON, but the format is Retool-specific and not portable to another platform without a rewrite. JavaScript and SQL inside queries are portable; the visual layout and component bindings are not.

06 · Enterprise requirements

Audit logs, observability, security, performance

Both cover the enterprise basics. The difference is where those features sit on the price sheet. Windmill ships RBAC, SSO (up to 10 users), encrypted secrets and multi-workspace isolation in the free self-hosted core. Retool gates custom SSO, Git sync, independent workspaces and self-hosting behind Enterprise, with RBAC and audit logs starting at Business.

Observability

WindmillWindmill

Real-time streaming logs, per-run inputs / outputs / duration, built-in worker queue metrics and a Prometheus exporter. Trace ID on every job.

RetoolRetool

Workflow run logs with per-block timings and I/O. App-level usage analytics and query history. No native Prometheus exporter. OpenTelemetry export is available on self-hosted Enterprise deployments.

Audit logs

WindmillWindmill

Full trail of who ran / edited / deployed what. Extended retention is Enterprise only.

RetoolRetool

Audit logs track user and admin activity. Available on the Business plan and above, not on Free or Team.

Security

WindmillWindmill

SOC 2 Type II compliant. RBAC, SSO (up to 10 users), encrypted secrets at rest and sandboxed script execution in open source. Uncapped SSO, audit logs and advanced access controls (SCIM, SAML) are Enterprise only.

RetoolRetool

SOC 2 Type II, HIPAA and ISO 27001 compliant. Rich RBAC is on Business and above. Custom SSO (SAML, OpenID), SCIM, custom branding and independent workspaces are all Enterprise only. Google SSO is available on lower tiers.

Multi-tenancy & isolation

WindmillWindmill

Multiple isolated workspaces on the same instance, each with their own users, resources, secrets and access controls. Free tier is capped at 3 workspaces; unlimited is Enterprise only.

RetoolRetool

Independent workspaces (Retool's term for isolated tenants) are Enterprise only. Lower tiers share a single space. Environments (dev / staging / prod) for resources are available from Team upward.

Performance

WindmillWindmill

~10ms cold starts. Dedicated-worker mode Enterprise only keeps runtimes and dependencies pre-warmed. Published benchmarks against other orchestrators.

RetoolRetool

Performance is dominated by query and rendering time in apps, and by block startup in Workflows. No published performance benchmarks. Workflow runs are capped at 5,000/month on Team and Business. Higher volumes require Enterprise.

07 · Licensing & pricing

Open source, pricing, and self-hosting?

Windmill is open source (AGPLv3 core), free to self-host at any scale, with public per-seat and per-worker Enterprise pricing. Retool is proprietary and closed-source, priced per user. Self-hosting and most governance features require an Enterprise contract.

Open-source license

WindmillWindmill

AGPLv3 core, free and unlimited self-hosted. Enterprise features (SSO, dedicated workers, audit logs, external secret backends) ship in a separate proprietary codebase. Managed cloud available.

RetoolRetool

Proprietary and closed-source. There is no open-source edition. Self-hosting is Enterprise only. Free, Team and Business plans are cloud-only.

Enterprise pricing

WindmillWindmill

Public per-seat and per-worker pricing on the pricing page, starting at $120/month. Enterprise adds SSO, audit logs, dedicated workers, advanced worker groups.

RetoolRetool

Per-user pricing: builders at €9/Team, €46/Business, custom on Enterprise. End users at €5/Team, €14/Business. External-user tier available on Business+. Enterprise pricing not public. A sales conversation is required for custom SSO, Git sync, self-hosting and independent workspaces.

08 · Verdict

The verdict

Windmill and Retool answer the internal-app question with two different stances. Retool is a proprietary SaaS with a polished visual canvas, where apps, queries and component bindings live in Retool's database; authoring is browser-against-live-data, with a CLI in Labs for scaffolding. Windmill is an open-source AGPLv3 platform where apps are real React or Svelte source trees in your repo, scripts and flows are files in Git, and the whole workspace runs on infrastructure you control.

Retool can be a good fit if your internal-tool need is a drag-and-drop dashboard on top of a database or SaaS API, your team is comfortable authoring inside the canvas, and a proprietary runtime is acceptable. The component library is broader and more mature than Windmill's, the visual editor is more refined for non-developer authors, and AI-assisted app generation lands quickly on mainstream patterns.

Windmill matches the same low-code surface and adds a full-code React or Svelte option that Retool does not offer, with a real local-dev loop: edit apps and the backend scripts and flows that power them in your IDE, with native language tooling and AI coding tools working against real source files, then deploy via the CLI or whole-workspace Git sync. The runtime scope is wider too: the same platform that runs your apps also powers workflow orchestration, data pipelines, scripts as standalone APIs and AI agents, with shared auth, secrets and observability across all of them. The core is AGPLv3 and free to self-host without an Enterprise contract, and Enterprise pricing is published upfront on the pricing page.

The switching cost is also asymmetric. Retool apps live in a proprietary canvas format with no official export, so leaving Retool means rebuilding each app component-by-component, with queries and event handlers rewritten against another runtime. Windmill apps and scripts are plain source files in Git, so the per-app rewrite cost is much smaller, and the Git history travels with you. If you're deciding between the two, the fastest way to judge is to spend an afternoon in each.

Frequently asked questions

Build your internal platform on Windmill

Scripts, flows, apps, and infrastructure in one place.