Fill Figma with real data — and see exactly what didn't fit.
Rowbind populates component instances from Google Sheets, CSV or JSON. Variants switch. Images load. Every row that fails tells you which row, which field, and why.
The Figma Community listing is in review.
Why this one
The hard cases are the whole point
Switch by column
A column drives a variant property — Size=XL — checked against the component set.
No silent fall back to the first variant when a value doesn't exist.
Fills from a URL
Image URLs are fetched and placed as real image fills. A dead link becomes a numbered issue, not a blank rectangle you find three days later.
Update in place
Populated nodes are stamped, so syncing refreshes what's already there, adds new rows, and removes deleted ones — instead of duplicating the whole set again.
Big sheets don't freeze
Work runs in chunks and yields between them, so the editor stays responsive and a long run can be cancelled part-way.
Missing fonts warn
Every font on a text node is loaded before writing. A font that isn't available falls back and says so, rather than dropping the text.
No silent skips
The run report is the product. If Rowbind couldn't do something, it appears in the list with a row number — including the parts that make us look bad.
Pricing
Free has no row limit. Pay for the hard parts.
Free
no account needed
Text columns, any number of rows, and the complete run report.
- Unlimited rows — 12 or 12,000
- Google Sheets, CSV, JSON
- Full issue reporting, every row
$6 / month
Rowbind Pro
The three things the free plugins can't do. Cancel any time — access runs to the end of the period you paid for.
- Component variants, validated per row
- Image fills from URLs
- Re-sync: update in place, don't re-duplicate
- 14-day refund, no questions
Your data
Pasted data never leaves your machine
Sheet, JSON and image URLs are fetched through this server, because Figma can't reach them from a plugin directly. Their contents stream straight through — never stored, never logged, and the web server records paths without query strings so your sheet URLs aren't retained either. Full detail on the privacy page.