Retool builds internal tools on top of existing databases and APIs. Luna Park builds complete applications, internal or customer-facing, with their own backend and database, and compiles them into code you own.

- **Standard code.** Vue and Node.js you can run without Luna Park.
- **Any audience.** Customer apps with your design, users, and domain.
- **Flat price.** One license, whatever your traffic or users.

![Sunset Park in the Luna Park editor](https://luna-park.app/static/assets/builder-DAXbtfYB.png "Sunset Park, a demo site built with Luna Park.")


## At a glance

Both build apps visually on a database. The main differences: audience, design, and pricing.

| | Luna Park | Retool |
|---|---|---|
| **Made for** | SaaS, portals, internal tools | Internal tools on existing data |
| **Interface** | Your own components, CSS, design tokens | Grid of ready-made components |
| **Logic** | Visual scripting graphs, front and back | SQL and API queries, JavaScript, event handlers |
| **Data** | PostgreSQL, APIs through `Fetch` | Many connectors, or Retool Database |
| **Code export** | [+Vue + Node.js source] (Pro) | [-Retool format only] ([source](https://docs.retool.com/apps/guides/app-management/import-export)) |
| **Hosting** | [+Anywhere] Managed hosting in late 2026 | [~Retool Cloud] Self-hosted on Enterprise ([source](https://retool.com/pricing)) |
| **Pricing** | Free, or Pro at €25/month or €300 once | Per builder and per user ([source](https://retool.com/pricing)) |

## Example: a waitlist form

Visitors enter their name, email, and favorite ride, and get a ticket number.

::: columns
### Luna Park

1. Place the fields and a button, in the site's design.
2. On click, a graph sends the fields to a backend route and shows the ticket.
3. The route inserts a row in the `Waitlist` table and returns its id.

Visitors need no account.

---

### Retool

1. Connect a database resource.
2. Drop a form component on the grid.
3. Write an insert query, triggered on submit.

External users are billed on higher plans.
:::

::: gallery
![The click logic of the waitlist form](https://luna-park.app/static/assets/logic-C66duI84.png "On click: read the fields, call the route, show the ticket.")

![The Join Waitlist backend route](https://luna-park.app/static/assets/route-DQo3hM8a.png "The route: receive the body, insert a row, return its id.")
:::

## Code export

Retool exports JSON or Toolscript, to import into another Retool instance. Luna Park exports a Vue frontend and a Node.js backend, with no Luna Park runtime.

![The waitlist component compiled to Vue](https://luna-park.app/static/assets/code-BUYWx0sG.png "The waitlist, compiled to Vue and TypeScript.")

## Other differences

- **Costs.** Retool bills per builder and per user. A Luna Park app costs what its server costs, at any number of users.
- **Customer-facing apps.** Portals, marketplaces, SaaS: your design, your [authentication](/docs/backend-data/auth), your domain.
- **Logic.** Queries, conditions, and loops are nodes, front and back. [TypeScript functions](/docs/logic/scripts#code-functions) remain available.
- **Plugins.** Official plugins add users and sessions, files, mail, Nuxt UI, or Tailwind.

![The plugins of the Libraries workspace](https://luna-park.app/static/assets/plugins-ByZEV6nU.png "Installed and available plugins.")

## Which one to choose?

::: columns
### Luna Park

- Your app is, or will be, customer-facing.
- You want your own design.
- You want flat costs at any number of users.
- You want to keep the code.

---

### Retool

- You need an admin panel on existing data, today.
- You rely on its connectors.
- Per-user pricing suits your team.
:::

## Before switching

- No connector catalog: call existing databases or APIs from a [route](/docs/backend-data/routes) with `Fetch` or an [npm](/docs/integrations/npm) client.
- Until [managed hosting](/pricing) launches in late 2026, you [host the backend](/docs/deployment/deployment).

## From Retool to Luna Park

| Retool | Luna Park |
|---|---|
| App | Project, with its [pages](/docs/interface/components#pages) |
| Component, module | [Component](/docs/interface/components) |
| Variable | [Variable](/docs/logic/variables), or [Store](/docs/logic/store) |
| Transformer | [Computed variable](/docs/logic/variables#computed-variables) |
| Event handler | Logic graph |
| Resource query | [Route](/docs/backend-data/routes) |
| REST API resource | `Fetch` node |
| Retool Database table | [Database](/docs/backend-data/database) table |
| Workflow | [Route](/docs/backend-data/routes) or [Cron](/docs/backend-data/cron) |

::: info
Based on Retool as of October 2026. See [retool.com](https://retool.com) for current features and prices.
:::
