Guides / Google Sheets

How to Import CSV to Google Sheets

Complete guide to importing CSV files into Google Sheets, with solutions for common problems.

By text2csv.com team · ·

Google Sheets is one of the most popular spreadsheet applications, and it has excellent support for CSV files. There are several ways to import CSV data into Google Sheets, and we'll cover all of them in this guide.

Method 1: Open CSV File Directly

The simplest way to work with a CSV file in Google Sheets:

  1. Go to Google Drive (drive.google.com)
  2. Click the "+ New" button in the top left
  3. Select "File upload"
  4. Choose your CSV file from your computer
  5. Once uploaded, double-click the file to open it
  6. Google Sheets will automatically parse the CSV and display it as a spreadsheet

Note: When you open a CSV this way, the file remains in CSV format. To save it as a Google Sheets file, go to File → Save as Google Sheets.

Method 2: Import into Existing Spreadsheet

If you want to add CSV data to an existing Google Sheets document:

  1. Open your existing Google Sheets document
  2. Go to FileImport
  3. Click the "Upload" tab
  4. Drag your CSV file or click "Select a file from your device"
  5. Choose your import location:
    • Create new spreadsheet: Opens CSV in a new document
    • Insert new sheet(s): Adds as a new tab in current document
    • Replace spreadsheet: Replaces all current data
    • Append to current sheet: Adds data below existing content
  6. Configure the separator type (usually auto-detect works fine)
  7. Click "Import data"

Method 3: Import from URL

Google Sheets can import CSV data directly from a URL using the IMPORTDATA function:

=IMPORTDATA("https://example.com/data.csv")

This method is useful for:

  • Automatically refreshing data from a live source
  • Pulling data from a public API or data feed
  • Keeping your spreadsheet synchronized with external data

Method 4: Copy-Paste Text Data

If you have CSV-formatted text (not a file), you can paste it directly:

  1. Copy your CSV text to clipboard
  2. Open Google Sheets and select the cell where you want to start
  3. Paste with Ctrl+V (Windows) or Cmd+V (Mac)
  4. If the data appears in a single column, select it and go to DataSplit text to columns
  5. Choose the appropriate separator (comma, tab, etc.)

Troubleshooting Common Issues

1. Special Characters Display Incorrectly

If you see strange characters like "é" instead of "é", it's an encoding issue:

  • Make sure your CSV file is saved with UTF-8 encoding
  • Open the CSV in a text editor, then "Save As" with UTF-8 encoding
  • Use our Text to CSV Converter which outputs UTF-8 by default

2. Numbers Formatted as Text

If your numbers appear left-aligned or calculations don't work:

  • Select the column with numbers
  • Go to FormatNumberNumber
  • Or use =VALUE(A1) to convert text to number

3. Dates Not Recognized

Date formats vary by region. If dates aren't recognized:

  • Check your spreadsheet locale: FileSettingsLocale
  • Use =DATEVALUE() to convert text dates
  • Use ISO format (YYYY-MM-DD) in your CSV for best compatibility

4. Wrong Delimiter Detected

If your data ends up in one column instead of being split:

  • Select all the data in the single column
  • Go to DataSplit text to columns
  • Click the dropdown and select the correct separator
  • For European CSV files, manually select "Semicolon"

Method 5: Using IMPORTRANGE for Live CSV Syncing

If your CSV data lives in another Google Sheet, you can create a live connection using IMPORTRANGE. Unlike IMPORTDATA (which pulls from a URL), IMPORTRANGE syncs data between two Google Sheets documents in real time:

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/SPREADSHEET_ID", "Sheet1!A1:D100")

The first time you use IMPORTRANGE, Google Sheets will ask you to grant access between the two spreadsheets. Click "Allow access" to establish the connection. After that, any changes in the source spreadsheet appear automatically in the destination.

This approach is particularly useful when multiple team members need to work with the same dataset: one person maintains the source data, and others pull from it without risk of accidentally editing the original.

Method 6: Apps Script Automation

For recurring imports, you can automate CSV imports using Google Apps Script. This is especially useful if you receive updated CSV files regularly from an API endpoint or a shared URL:

function importCSVFromUrl() {
  var url = "https://example.com/data.csv";
  var response = UrlFetchApp.fetch(url);
  var csvData = Utilities.parseCsv(response.getContentText());

  var sheet = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName("ImportedData");

  // Clear existing data
  sheet.clear();

  // Write new data
  sheet.getRange(1, 1, csvData.length, csvData[0].length)
    .setValues(csvData);
}

// Optional: run this function every hour
function createTrigger() {
  ScriptApp.newTrigger("importCSVFromUrl")
    .timeBased()
    .everyHours(1)
    .create();
}

To set this up, go to ExtensionsApps Script, paste the code, and customize the URL. You can then set a time-driven trigger to run it automatically on a schedule (hourly, daily, or weekly).

The Utilities.parseCsv() function handles most standard CSV parsing including quoted fields, but it does not support all RFC 4180 edge cases like embedded newlines within quoted fields. For complex CSV data, consider preprocessing with a dedicated parser.

Handling Large CSV Files

Google Sheets has a hard limit of 10 million cells per spreadsheet. A spreadsheet with 20 columns can hold up to 500,000 rows. If your CSV exceeds this limit, you have several options:

  • Split the CSV before importing: Use a command-line tool like split on Mac/Linux or a Python script to break the file into chunks. For example: split -l 100000 data.csv chunk_ splits a file into 100,000-row segments.
  • Filter unnecessary columns: Remove columns you don't need before importing. Fewer columns means more rows within the 10M cell limit. Use our CSV to JSON Converter to inspect the data structure first.
  • Use Google BigQuery: For datasets larger than Sheets can handle (millions of rows), upload the CSV to Google BigQuery. BigQuery can process terabytes of CSV data and you can query it with SQL. You can then export smaller result sets back to Sheets using the Connected Sheets feature.
  • Use the QUERY function to filter on import: If you import data via IMPORTDATA, wrap it in a QUERY function to pull only the rows you need: =QUERY(IMPORTDATA("url"), "SELECT Col1, Col2 WHERE Col3 > 100")

Performance Tips for Large Imports

Even within the cell limit, large CSV imports can slow down Google Sheets. Here are proven techniques to keep your spreadsheet responsive:

  • Avoid volatile functions on imported data: Functions like NOW(), TODAY(), and RAND() recalculate every time the sheet updates, which compounds with large datasets.
  • Use paste-values instead of IMPORTDATA for static data: IMPORTDATA recalculates periodically. If your data doesn't change, paste the values directly (Ctrl+Shift+V) to avoid ongoing recalculations.
  • Limit ARRAYFORMULA scope: Instead of =ARRAYFORMULA(A:A*2), use a bounded range like =ARRAYFORMULA(A1:A50000*2).
  • Use named ranges: Named ranges help Sheets optimize calculation order and make formulas more readable.

Advanced Troubleshooting

5. CSV File Shows as Garbled Text

If the entire file appears as random characters or mojibake (e.g., "é" instead of "é"), the file is likely saved in a non-UTF-8 encoding like Windows-1252 or ISO-8859-1. To fix this:

  • Open the file in a text editor that can detect encoding (VS Code, Sublime Text, or Notepad++)
  • Check the current encoding (shown in the status bar)
  • Re-save the file as UTF-8. In VS Code: click the encoding in the bottom bar → "Save with Encoding" → "UTF-8"
  • For Excel-generated CSV files with special characters, choose "CSV UTF-8 (Comma delimited)" when saving from Excel instead of the plain "CSV" option

6. Leading Zeros Are Stripped

Google Sheets automatically interprets values that look like numbers. This means zip codes like "07001" become "7001" and product codes like "00123" become "123". To preserve leading zeros:

  • Before importing, prefix values with an apostrophe in the CSV: '07001 (the apostrophe won't display but forces text format)
  • After importing, select the affected column, go to FormatNumberPlain text, then re-paste the data
  • Use the custom number format 00000 (for 5-digit zip codes) via Format → Number → Custom number format

7. IMPORTDATA Refresh Issues

Google Sheets caches IMPORTDATA results and refreshes approximately every hour. If you need fresher data:

  • Add a cache-busting parameter: =IMPORTDATA("https://example.com/data.csv?t="&NOW())
  • Use Apps Script with a time trigger for more reliable scheduled refreshes
  • Note: IMPORTDATA has a limit of 50 calls per spreadsheet. Use sparingly in larger projects

Best Practices for CSV Import

  • Always use UTF-8 encoding: This is the most universally compatible encoding. If you're creating the CSV yourself, save as "UTF-8 with BOM" for best Excel cross-compatibility, or plain UTF-8 for everything else. See the RFC 4180 specification for the official CSV standard.
  • Include a header row: The first row should contain descriptive column names. This makes the data self-documenting and helps Google Sheets auto-detect data types.
  • Use consistent date formats: ISO 8601 format (YYYY-MM-DD) is recognized globally by Google Sheets regardless of locale. Avoid ambiguous formats like MM/DD/YYYY vs DD/MM/YYYY.
  • Clean data before importing: Use our Text to CSV Converter to ensure proper formatting, consistent delimiters, and RFC 4180 compliance before importing.
  • Test with a small sample: Before importing a large file, test with the first 10-20 rows to verify delimiters, encoding, and data types are detected correctly.
  • Back up the spreadsheet first: If importing into an existing spreadsheet with the "Replace spreadsheet" option, make a copy first via File → Make a copy.

Google Sheets CSV Import Limits (2026)

LimitValue
Maximum cells per spreadsheet10,000,000
Maximum columns per sheet18,278 (column ZZZ)
Maximum file size for upload100 MB
IMPORTDATA calls per spreadsheet50
IMPORTDATA refresh interval~1 hour (automatic)

For the most current limits, refer to the Google Sheets size limits documentation.

Summary

Google Sheets offers six methods to import CSV data: direct upload via Google Drive, the File → Import dialog, the IMPORTDATA function for URLs, copy-paste with "Split text to columns", IMPORTRANGE for cross-spreadsheet syncing, and Apps Script for automated recurring imports.

Most import issues stem from encoding problems (use UTF-8), incorrect delimiter detection (manually select the separator), or Sheets auto-formatting numbers and dates. For datasets exceeding 10 million cells, consider Google BigQuery with Connected Sheets.