Skip to content
Open beta — everything’s free right now, and your rate is locked when it ends.

Pasting into the grid: what lands, what refuses

Paste a block from Excel or Sheets: one paste adds up to 5,000 new records, values that don't parse leave the cell alone, and it all undoes in one step.

Updated October 2026

Copy a block of cells in Excel or Sheets, click a cell in Tabla, press Cmd+V. The clipboard's rows and columns land as a block starting at that cell — and everything Tabla can't honestly interpret is left alone rather than guessed at. This page is the exact rules.

Copy works the other way too: a selected range copies out as plain tab-separated text, so a Tabla grid pastes cleanly back into a spreadsheet.

Where it lands

The pasted block starts at the selection's top-left corner, and the table grows in both directions to hold it.

Rows grow silently: ten clipboard rows onto the last three rows of the table fill those three and add seven, so the block lands whole. One paste adds up to 5,000 rows; a bigger one is refused before anything is written, and import is the door for a file that size.

Columns ask first. A paste four columns wider than the table offers to add four text fields, and pastes what fits if you decline. It asks because a row and a column are not equally easy to take back: Cmd+Z removes records a paste created, but a field is a real database column, and undo doesn't reach it yet. Empty trailing columns — the ones a spreadsheet copy often carries — are ignored rather than turned into fields.

One value fills a selection. Copy a single cell, select a run of cells — click the first, Shift-click the last — and paste: every selected cell gets the value, as one undo step, and the strip says how many (Filled 28 cells.). It works across several columns at once; a column that can't take the value is skipped and named. Copy an empty cell and the same paste clears the run. The fill handle and Cmd+D do the same job without the clipboard.

What each field type accepts

The principle everywhere: a value that doesn't parse for its field's type leaves the cell untouched. No partial dates, no half-written rows.

  • Text, long text, email, phone, URL — take the text as-is.
  • Number and currency — the number is read out of the text: pasting EGP 1,600.00 into a currency cell stores 1600. Text with no number in it doesn't land.
  • Select — a pasted name that is already a choice lands as that choice, and one that isn't becomes a new choice on the field, minted before the row is written. With allow multiple on, a comma-separated list pastes, and the pasted choices are added to what the cell already holds.
  • Date — a date-only field wants 2026-08-12. A date-and-time field takes a timestamp: one carrying a timezone (a trailing Z or +02:00) is kept as that instant; a bare wall-clock time like 2026-08-12 14:30 — the kind Excel produces — is read in the database's timezone, not silently as UTC.
  • Checkbox — true, yes, 1, y, on check it; false, no, 0, n, off uncheck it. Anything else is ignored.
  • Duration — 1:30 in the field's own format. Ninety minutes, not the number 130.
  • Member — the exact name or email of someone who is already a member. Unknown people don't paste.
  • Rating — a number, clamped to the field's maximum.

Pasting an empty cell clears the target — copy a blank, paste a blank.

Text pastes into a link cell and comes back as real chips. Each pasted value is matched against the linked table's display field — the field whose value names a record over there — trimmed and ignoring case, so cairo finds Cairo and stray spaces around a value don't matter. A value that matches nothing creates a record in the linked table under that name, and a value that names two records links the first of them.

On a link with allow many on, a comma or semicolon followed by a space separates values: Cairo, Giza pastes as two chips, 1,234 as one. On a single link the whole cell is one value, commas and all.

One cell or a whole column behaves the same way — paste a column of customer names down an empty link field and they land as chips, row for row. It round-trips, too: copying a link cell gives you its chip labels as plain text, and pasting that text back links it again by the rules above.

One exception, on the far side of a link whose records each belong to a single row: there, linking a record to one row unlinks it from the row it was on. So the same record can't go into several rows of that column, and a paste or fill that would put it there skips the column and says so. Different records, one per row, paste as usual.

If the names are already sitting in a text column of the same table, you don't need a paste at all — linked records turns that column into a filled link in one pass.

What never takes a text paste

  • Attachment cells. Text never pastes into them. Copying an attachment cell inside Tabla and pasting onto another attachment cell duplicates the files — and if the target already has files, Tabla asks whether to Add or Replace before touching anything.
  • Computed columns (formula, lookup, rollup) and buttons never take a paste. In a block paste their cells are skipped and nothing is sent for them; when one value fills a selection, the strip names them.

How the write actually happens

A paste is sent as batch writes of up to 50 records, one batch after another, and each batch is all-or-nothing on the server — the same rule the API's own batch writes follow. A paste of 50 rows or fewer that fails therefore leaves nothing behind: no half-written block to hunt for.

A bigger paste narrates its progress in the status strip, batch by batch (51–100 of 342…), and if a batch is refused mid-run, the run stops there. Batches already written stay written, nothing from the failed batch lands, and the message says exactly how far it got. Cells that were painted but not saved snap back to their real values in the same moment as the error.

However far it got, the whole paste is one undo step: Cmd+Z takes all of it back at once, not row by row (undo and redo).

One honesty note for automations: an action touching 50 or more records fires no per-record webhooks — a bulk flood of record.updated deliveries helps nobody. Smaller pastes fire normally.

Tabla is the database we build these on.

A no-code database with real Postgres underneath: every feature on every plan, a million records per database, and your whole database back out in one file, any day.

More guides