Build custom
internal tools faster.
Build an app to flip feature flags, in 4 minutes.Build an app to manage dog walkers, in 5 minutes.Build an app to dynamically change flight prices, in 5 minutes.Build an app to approve sign-ups, in 2 minutes.Build an app to label text,
in 3 minutes.
Custom internal tools have the same building blocks. Retool gives you those building blocks, so you can build them much faster.
Docs

As an engineer, I love Retool. My team now builds much-needed tools for customer support instantly. Also love how it's so hackable - there's little we can't do.
David Boskovic
Platform Architect
The tools we've been able to quickly build with Retool have allowed us to empower and scale our local operators, all while reducing the dependency on engineering.
Rohan Chopra
Director of Engineering
Engineers tell me it'll take a day, but it always takes a week. Retool gives me every tool I want, in just a few hours. It's changed the trajectory of our business.
Duncan Winter
Director of Product
TEXTINPUT
TABLE
DROPDOWN
BUTTON
1. Assemble your tool
Assemble our building blocks into your custom tool.
Let's build an app to search and approve users. We'll start by assembling the tool first, with our building blocks. We probably want a TextInput to search, a Table to show results, and a Button to approve users.
Using our drag and drop editor, you can assemble those building blocks into any shape you want.
2. Search your users
Data, meet TextBox. Table, meet data.
Retool connects to anything: APIs, databases, etc. To pull in data, you write queries in an interface you're familiar with: GUIs for HTTP APIs, SQL for Postgres.
These queries can refer to other components. So in the SQL query, we use the value of a TextBox. And whenever TextBox changes, the SQL query automatically updates.
Then we connect the Table to the SQL query. And because the SQL query depends on the TextBox, typing in it filters the Table itself.
3. Write data back
Approve the selected user via API.
Lets make our tool approve the selected user too. See that Button we dragged on before? Let's hook it up to an API call, which'll approve the user. And inside the API call, just as in the SQL query, we'll refer to another component.
This time, we'll refer to the selected row of the Table. Whenever we change the selected row, the HTTP URL will change. And so when we hit approve, it'll make the PUT and approve only the selected user.
Demos
Approve sign-ups
Let's say we're a startup, and we have a product out in private beta. Users can sign up, and we want a tool to approve certain users.
View Demo
Upload photos to S3
Build a tool to upload images to S3, and save their URLs to an API.
View Demo
Insert CSVs into a database
You've got a CSV of records, and you want to insert some of them into your database. We'll build a tool to selectively upload rows from a CSV into our API, in 5 minutes.
View Demo
Manage dog walkers
Let's say we're a dog-walking company, and we want to inform our walkers that their walks tomorrow are cancelled due to an incoming snowstorm.
View Demo
Tag images for machine learning
Let's say we're a self-driving car company, and need to label a ton of images. We'll build a tool where we take a list of image URLs, let the end-user draw bounding boxes around each image, and save the results.
View Demo
Flip feature flags
Let's say we have a complex product, with a ton of features. We want a tool to manage these features on a per-user basis.
View Demo
Approve sign-ups
Let's say we're a startup, and we have a product out in private beta. Users can sign up, and we want a tool to approve certain users.
View Demo
Upload photos to S3
Build a tool to upload images to S3, and save their URLs to an API.
View Demo
Insert CSVs into a database
You've got a CSV of records, and you want to insert some of them into your database. We'll build a tool to selectively upload rows from a CSV into our API, in 5 minutes.
View Demo
Manage dog walkers
Let's say we're a dog-walking company, and we want to inform our walkers that their walks tomorrow are cancelled due to an incoming snowstorm.
View Demo
Tag images for machine learning
Let's say we're a self-driving car company, and need to label a ton of images. We'll build a tool where we take a list of image URLs, let the end-user draw bounding boxes around each image, and save the results.
View Demo
Flip feature flags
Let's say we have a complex product, with a ton of features. We want a tool to manage these features on a per-user basis.
View Demo

Flexible Components
All the building blocks, for any internal tool.
Whether you're building an app to approve beta signups, or an app to manage deliveries, they all have the same building blocks. Tables, TextBoxes, Dropdowns, etc.
Retool gives you these building blocks, which you can assemble into any custom internal tool.
Connect to anything
Read and write data, wherever it is.
Read data from Postgres, write back via an API. Read some more data from Google Sheets, query it via SQL, then join it to data from Stripe. We support many databases, and any HTTP API.
Because we manage the data fetching and UI, all you have to do is write the stuff that's actually custom to your internal tool. Like the SQL query itself, or the literal POST request. Don't worry about storing isFetching in Redux, debouncing duplicate button clicks, etc. We'll handle it.
Micromanage your Tools
Track, monitor, and even host all your tools.
We manage authentication, authorization, and audit logs, all for you. That's the kind of stuff every internal tool should have.
If you're concerned about data security, you can host Retool on-premise, behind your own VPN, in your own VPC. You can even block all inbound and outbound network connections. Contact us for more information.

Ready to go?
Get started in less than 10 minutes today.