Open-source forms that sync to Google Sheets

Build forms, link a Google Sheet, and publish. Every response becomes a new row — no export step.

Try free with Google · Self-host from GitHub · MIT · 0 GitHub stars

Just want to fill a form? See the sample form

Published form with sky gradient theme

Link a Google Sheet once

New responses append as rows. Your team keeps working in the same spreadsheet.

Google Sheet with waitlist responses synced from a Recto form

Build forms from your phone

Change questions, themes, and settings from your phone. Same editor, smaller screen.

Mobile form editor — question list
Mobile form editor — editing a question

Try the editor on our hosted demo · See sample form

Forms that don't look like Google Forms

Set colors, fonts, and layout in the editor. Publish when it looks right.

Sky theme — photo background with blue sky and clouds
Sky
Dark theme — charcoal background with gold accent
Dark
Rose theme — deep burgundy background with warm accent
Rose

Every question type included

NPS, matrix, file upload, signatures, and more. Nothing locked behind a paywall.

Short text

Use when Names, titles, short answers, IDs, or one-word responses.

Example Full Name

Short text question type

Run it on your own server

One docker compose up for local dev. Postgres, storage, and the app included. Google OAuth and Sheets setup for production. See the README.

local dev
# Local dev (contributors)
pnpm install && docker compose up -d db minio
cp .env.example .env   # fill AUTH_SECRET, Google creds
pnpm db:migrate && pnpm dev

# Open http://localhost:3000
docker
# Production-ish (full stack)
cp .env.example .env   # required: AUTH_SECRET, GOOGLE_*, S3_*
docker compose up -d --build

# Open http://localhost:3000

Want hosted Recto?

Managed hosting isn't live yet. If you'd rather not run your own server, join the waitlist and we'll email you when cloud signup opens.

FAQ

Build a form in minutes

Sign in with Google, create a form, link a Sheet, and publish. Free on our hosted demo — accounts and data may be cleared without notice.

Only filling out a form? See the sample form