# 📤 Allow User to Upload and Import CSV Files Tutorial

**URL:** <https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267>\
**Category:** Community Resources\
**Created:** [June 5, 2025, 7:00pm UTC](https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267 "2025-06-05T19:00:35Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [June 5, 2025, 7:00pm UTC](https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267/1 "2025-06-05T19:00:35Z")

</div>

# 👋 Hey fellow Gliders!

Allowing users to import CSV data is a feature not natively supported in Glide, but it can be achieved through clever workarounds.

The video breaks down two primary methods for handling bulk data:

### 1️⃣ Method 1: Looping Workflow (for Smaller Imports)

This approach involves creating a workflow that iterates through each row of a CSV file and adds it as a new record.

✅ Pros: Relatively straightforward to set up within Glide.  
🚫 Cons: Limited to approximately 1,000 records due to Glide’s operation limits and can be slow for larger datasets, consuming more app updates.

### 2️⃣ Method 2: Glide API with Stashing (for Large Imports)

This advanced technique leverages Glide’s API v2, specifically the “stashing” feature, for highly efficient bulk uploads.

✅ Pros: Handles hundreds or thousands of records near-instantaneously, significantly more cost-effective (e.g., 2,000 records cost only 20 updates instead of 2,000).  
🚫 Cons: Requires a deeper understanding of API calls, JSON manipulation, and a bit of JavaScript for “chunking” data. It also introduces the need to work with column IDs instead of readable headers, often requiring AI assistance for conversion.

The video includes a step-by-step guide for both methods, including:

- Building an importer interface.
- Validating CSV files and headers.
- Converting CSV to JSON.
- Enabling manual workflow triggers.
- Configuring the API calls leveraging stashing to keep updates to a minimum

### 🍿 Enjoy!

[![](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/7/1/716217d0017138ac082e66f8e356f2358dc5284f.jpeg "Glide: Allow Users to Upload and Import Data from CSV Files") ](https://www.youtube.com/watch?v=D04c5Fi2abA)

---

<div class="post-metadata">

**Author:** ![Mazen](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mazen/32/84042_2.png) [@Mazen](https://community.glideapps.com/u/Mazen)\
**Post date:** [June 5, 2025, 7:31pm UTC](https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267/2 "2025-06-05T19:31:48Z")

</div>

Cool video!

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [June 5, 2025, 11:44pm UTC](https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267/3 "2025-06-05T23:44:59Z")

</div>

Thanks! Intrigued to see if anyone can leverage this or improve upon it.

---

<div class="post-metadata">

**Author:** ![ALATBSOL](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/alatbsol/32/57182_2.png) [@ALATBSOL](https://community.glideapps.com/u/ALATBSOL)\
**Post date:** [June 9, 2025, 8:19am UTC](https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267/4 "2025-06-09T08:19:09Z")

</div>

Very nice! Opens up a ton of new usecases!

---

<div class="post-metadata">

**Author:** ![joaool](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/joaool/32/68480_2.png) [@joaool](https://community.glideapps.com/u/joaool)\
**Post date:** [July 18, 2025, 9:33am UTC](https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267/5 "2025-07-18T09:33:12Z")

</div>

Hi Bob. The method works perfectly, but only for Big Tables (I learned this the hard way) . Is there any way (besides Make) to use this to import to Glide Tables (non-Big)?

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [July 18, 2025, 11:57am UTC](https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267/6 "2025-07-18T11:57:25Z")

</div>

The first method I show works with regular Glide tables.

---

<div class="post-metadata">

**Author:** ![joaool](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/joaool/32/68480_2.png) [@joaool](https://community.glideapps.com/u/joaool)\
**Post date:** [July 18, 2025, 12:20pm UTC](https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267/7 "2025-07-18T12:20:51Z")

</div>

Thanks Bob!

---

<div class="post-metadata">

**Author:** ![XceL](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/xcel/32/91079_2.png) [@XceL](https://community.glideapps.com/u/XceL)\
**Post date:** [September 30, 2025, 5:22pm UTC](https://community.glideapps.com/t/allow-user-to-upload-and-import-csv-files-tutorial/82267/8 "2025-09-30T17:22:07Z")

</div>

Brilliant, thanks Bob!
