This is the export problem in reverse, and it is worse. Getting files out of Airtable is tedious; getting a folder of files in, one record per file, has no native path at all.
What Airtable actually accepts
There are exactly two native ways to put a file in an attachment field:
- Drag and drop, into one cell at a time. You can drop several files into a single cell, but they all land on the same record.
- The API, which does not take a file upload. When you write to an attachment field you send a list of objects shaped like
{"url": "https://…/invoice.pdf"}. Airtable then fetches that URL server-side and stores its own copy.
The catch that trips everyone up: the URL has to be publicly reachable by Airtable's servers. A file on your laptop, on an intranet, or behind a login will not work. So "upload via the API" really means "host the file publicly first, then tell Airtable where it is, then clean up."
The workarounds people try
Upload to Google Drive and paste the links
Popular, and it half-works. Drive share links are not direct file URLs, so Airtable often stores an HTML preview page instead of the file. You have to rewrite each link into the uc?export=download&id=… form, and Drive's virus-scan interstitial breaks that for anything over about 100 MB.
Push to S3 or a bucket first
This is the robust version, and it is the one consultants build for clients. It also means an AWS account, a public-read bucket, a lifecycle rule to delete the staged copies, and a script to tie it together. Reasonable for a recurring pipeline; heavy for a one-off folder of scans.
A script in the Scripting extension
Same ceiling as always: the extension cannot read a local folder, only files the user picks in a dialog, and it runs in the browser tab with a tight execution budget. Workable for tens of files, not hundreds.
Doing it directly
The Bulk Attachment Importer collapses the whole staging dance into one step: you drop files in the browser, they are uploaded, hosted just long enough for Airtable to fetch them, and attached to freshly created records.
- Sign in with your Airtable account and open the importer.
- Drop your files into the drop zone — or drop a single ZIP and it will be extracted and every file inside imported.
- Pick the destination: base, table, and which attachment field to fill. Only attachment-type fields are offered, so you cannot accidentally target a text column.
- Optionally pick a record name field. Each new record is then named after its file, without the extension —
2026-invoice-0412.pdfbecomes2026-invoice-0412. - Start the import. One record per file.
Any file type Airtable accepts works: PDFs, images, Word documents, spreadsheets, video.
Bulk Attachment Importer
Drop a folder or a ZIP, pick a base, table and attachment field, and get one record per file. No bucket, no staging, no link rewriting.
Open the importer →When you need to match files onto existing records
Creating one record per file covers most imports. The other common case — you already have 400 records and 400 files named after them, and you need them paired — is genuinely a scripting job, because the matching rule is yours: filename equals record name, or filename contains an invoice number, or a CSV maps one to the other.
The Airtable Script Editor is built for exactly that: describe the matching rule, run the script against your real base, adjust until it is right.
Frequently asked
- Can you upload multiple attachments to Airtable at once?
- Not natively across records. You can drag several files into a single cell, but there is no built-in way to create one record per file for a folder of documents. The API accepts attachments only as publicly reachable URLs, so local files have to be hosted somewhere first.
- Why does the Airtable API reject my local file?
- Airtable's record API does not accept file uploads in the request body for attachment fields. It takes a list of objects with a url property, fetches each URL itself, and stores a copy. A file on your laptop has no URL, which is why a hosting step is unavoidable.
- Can I import a ZIP into Airtable?
- Not with a native feature. The TrilogicPPP importer accepts a single ZIP, extracts it and imports every file inside as its own record, which is usually what you want when someone hands you an archive of scans or invoices.
- Will it attach files to existing records instead of creating new ones?
- The importer creates one new record per file and can name it after the filename. Matching files onto existing records by name is a scripting job — the Script Editor is the right tool for that shape of import.
- What file types are supported?
- Any type Airtable itself accepts as an attachment: PDFs, images, Word documents, spreadsheets, video, archives.