Skip to main content

Fillo vs Typeform

How Typeform and Fillo differ on where the form renders, styling, uploads, and pricing, and how to move a Typeform to Fillo.

Typeform is a hosted form builder known for one-question-at-a-time forms that you share as a link or embed. Fillo renders forms as native components inside your app and handles validation, uploads, and responses behind them.

At a glance

TypeformFillo
Where it rendersTypeform page, or an iframe placed by the Embed SDK as inline, popup, slider, popover, or side tabNative React or DOM components on your own route, or a Fillo-hosted page
StylingTypeform themes. Embedded forms don't accept custom CSS (Typeform community)Your CSS and components. The default stylesheet is optional
Form definitionTypeform builder, or the Create APIFillo editor, or a typed defineForm() schema in your repo
File uploads10 MB per file, kept with the Typeform response (File Upload question)500 MB per file by default, configurable up to 5,000 MB, sent from the browser to your Google Drive, Box, S3, or R2
LogicBranching, scores, and calculationsVisibility rules, page jumps, early completion, and numeric calculated fields
PaymentsStripe payment questions on paid plansNo payment field
Pricing100, 1,000, or 10,000 responses a month on Basic, Plus, or Business, shared across all forms (pricing). At the limit, forms go private until the next month or an upgrade (response limits)Free includes 200 completed responses a month. Everything starts at €35 or $39 a month for 5,000, with 25,000 and 100,000 tiers. Going over the allowance never stops a form or adds a charge
IntegrationsWebhooks, a Responses API, and app integrationsSigned webhooks, a Management API, native Slack, Notion, Google Sheets, HubSpot, and Discord destinations, plus Zapier and n8n apps

When Fillo fits

  • The form sits inside a signed-in product flow and should look like the rest of the app.
  • Your own components render the fields, with no iframe between them and your page.
  • The form definition lives in your repo and goes through code review.
  • Respondents send files over 10 MB, and the files belong in your own storage.
  • Each response should carry your app's user ID, verified by your server.

When Typeform is enough

  • You collect payments inside the form. Fillo has no payment field.
  • Different answers lead to different ending screens. A Fillo form has one completion screen or redirect, so answer-based routing happens in your app after submit.

Moving from Typeform

Fillo doesn't import Typeform forms or responses, so a move is a rebuild. Numeric calculations such as totals carry over as calculated fields.

  1. Export responses as CSV and file uploads as a .zip (Typeform export).
  2. Map each Typeform question to a stable Fillo field ID with the table below.
  3. Rebuild the form in the editor or as a defineForm() schema.
  4. Connect storage and reconnect every webhook and integration.
  5. Run the same test answers through both forms and compare what's stored.
  6. Replace one embed or link first, then the rest once deliveries look right.
Typeform questionFillo fieldCheck
Text and number questionsshort_text, long_text, email, phone, number, dateRequired state and value format
Choice questionsselect, multi_select, or dropdownStable option IDs
One question per screenOne field per page, or related fields grouped on one pageKeyboard flow and mobile height
Branching and hidden fieldsvisibleIf, page next rules, hidden fields, and prefillEvery path and URL parameter
File uploadfile_uploadConnected storage, file types, and size
Numeric calculationcalculatedSame operands and rounding
Several endingsOne completion screen, then routing in your appWhere each path ends up

Before you switch traffic, confirm:

  • Responses and files are exported, with the question map stored beside them
  • Every branch, prefill value, and validation rule matches the original
  • Storage and each destination received a realistic test response
  • The old embed or link is ready to restore if something breaks

Old Typeform responses stay in your export. They can't be imported as Fillo responses.

This page for agents: /docs/compare/typeform.md · index at /llms.txt

Updated

Was this page helpful?