Jotform is a hosted form builder with templates, payments, PDF documents, e-signatures, and approval workflows, shared as a link or embedded in a page. Fillo renders forms as native components inside your app and handles validation, uploads, and responses behind them.
At a glance
| Jotform | Fillo | |
|---|---|---|
| Where it renders | Jotform page, or a JavaScript, iFrame, pop-up, or lightbox embed. The JavaScript embed also loads the form inside an iframe (embed guide) | Native React or DOM components on your own route, or a Fillo-hosted page |
| Styling | Jotform's Form Designer, with custom CSS injected into classic forms (CSS guide) | Your CSS and components. The default stylesheet is optional |
| Form definition | Jotform builder and templates, or the Jotform API | Fillo editor, or a typed defineForm() schema in your repo |
| File uploads | About 10.6 MB per file by default, up to 1 GB, counted against the plan's upload space (file size guide) | 500 MB per file by default, configurable up to 5,000 MB, sent from the browser to your Google Drive, Box, S3, or R2 |
| Payments and documents | Payment gateways, PDF Editor, Jotform Sign, and Workflows | No payments, PDF documents, or approval workflows. A signature field stores a drawn signature with the response |
| HIPAA | HIPAA features on Gold and Enterprise | No HIPAA claim |
| Pricing | Plans cap monthly submissions, upload space, and total stored submissions. Starter allows 5 forms, 100 submissions a month, 100 MB of uploads, and 500 stored submissions (pricing) | 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. Files don't count against a Fillo quota once storage is connected |
| Integrations | Webhooks, a REST API, and app integrations | Signed webhooks, a Management API, native Slack, Notion, Google Sheets, HubSpot, and Discord destinations, plus Zapier and n8n apps |
When Fillo fits
- The form belongs inside your product and should render as native controls, not an iframe.
- Your design system should style every field, including focus and error states.
- The form definition lives in your repo and goes through code review.
- Files should go straight to storage you connect, with plan limits that count responses instead of megabytes.
- Unfinished answers should survive a reload. Save and resume works on every Fillo plan.
When Jotform is enough
- The form needs payments, generated PDF documents, or approval steps. Fillo doesn't provide these.
- The intake requires a HIPAA-enabled plan. Fillo makes no HIPAA claim.
Moving from Jotform
Fillo doesn't import Jotform forms or submissions, so a move is a rebuild.
- Download submissions and uploaded files from Jotform, and keep them as an archive.
- List each field with its conditions, hidden values, and destinations.
- Rebuild the form in the editor or as a
defineForm()schema, with stable field IDs. - Connect Google Drive, Box, S3, or R2 for uploads.
- Reconnect webhooks and integrations, then send a realistic test response.
- Replace one embed or link first, then the rest once deliveries look right.
Keep the old embed code ready to restore until the new form has handled real traffic.
Related
- Embed a Fillo form: Render the form with React, the DOM package, or a hosted page.
- Uploads and storage: Connect the storage your files go to.
- Why iframe form embeds break: What changes when the form leaves the iframe.
- Plans and limits: Response, upload, and branding limits.