IMPORTDATA
Unsupported (not recognized)Category: Web · Last tested 2026-09-01
Real compatibility results for the IMPORTDATA function: executed in Excel for the web, Google Sheets and LibreOffice Calc, measured against Google’s published documentation. Excel does not document IMPORTDATA, so this page makes no claim about Excel. Syntax and links to that documentation are below.
Support matrix
| Engine | Documented | Live-tested | Verdict |
|---|---|---|---|
| Excel (desktop) | No | n/a (not an Excel function) | n/a |
| Excel for the web | — | Yes (recalc, 2026-09-01) | Unsupported (not recognized) |
| Google Sheets | Yes | Yes (Drive import, 2026-09-01) | Inconclusive (no verdict published) |
| LibreOffice Calc | No | Yes (25.8.7.3, 2026-09-01) | Unsupported (not recognized) |
LibreOffice version history
We executed the same test cases under each LibreOffice release to show exactly when IMPORTDATA’s support changed — not documentation claims, real results.
| LibreOffice version | Verdict | Tested |
|---|---|---|
| 24.2.0.3 | Unsupported (not recognized) | 2026-09-01 |
| 24.8.7.2 | Unsupported (not recognized) | 2026-09-01 |
| 25.2.0.3 | Unsupported (not recognized) | 2026-09-01 |
| 25.8.7.3 | Unsupported (not recognized) | 2026-09-01 |
Why isn't IMPORTDATA working in LibreOffice?
LibreOffice Calc does not implement IMPORTDATA as of 25.8.7.3 — in our
executed tests it returns a #NAME? (unrecognized function) error. This is not a typo or a
settings problem, and saving the file as .xlsx does not change it: the function simply isn’t
available yet.
Watch the LibreOffice version support page —
we re-run every test on each new release, so it will flip to Supported here as soon as it lands.
#REF!. That is not a verdict about IMPORTDATA: the URL in the corpus formula is a deliberately inert example.com address (a real one returns an unbounded array, which would spill across the per-sheet recalculation canary and mark the whole run untrusted for a reason that has nothing to do with the engine), and the workbook reached Google as an uploaded .xlsx conversion rather than as a sheet a person opened and authorised. Either of those is enough to produce this error and this run cannot tell them apart. What it cannot do either way is show what IMPORTDATA does when the fetch succeeds — and the fetch is the documented behaviour, which is why the value is published exactly as it came back and no verdict is drawn from it.
Every executed case is shown below with exactly what Google returned.
Executed test cases
Excel for the web (executed 2026-09-01 via OneDrive recalculation)
These values come from Excel for the web, not from desktop Excel. They are two different implementations of the calculation engine, and this run measured only the web one: the corpus was uploaded to OneDrive as .xlsx, recalculated by Excel for the web on open, and downloaded again for readback. Excel for the web is a rolling service with no pinnable version, so the run is identified by its date. Where a value here disagrees with the Expected column — which is Microsoft’s documentation of the desktop product — we cannot tell you whether the web engine diverges from the desktop one or the documentation is wrong about both, because we do not run desktop Excel.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =IMPORTDATA("https://example.com/data.csv") | Existence probe only: the documented behaviour IS a network fetch, which no flat workbook can reproduce | #NAME? | ProvenanceNOT ASSERTABLE BY DESIGN, and deliberately recorded as a probe (expected: null) rather than a support claim -- the treatment batch B gave the CUBE* family and COPILOT, batch C gave DETECTLANGUAGE, and batch G gave RTD, STOCKHISTORY and TRANSLATE. GOOGLE DOCUMENTS THIS FUNCTION AS A FETCH: "Imports data at a given url in .csv (comma-separated value) or .tsv (tab-separated value) format.", with the single argument described as "The url from which to fetch the .csv or .tsv-formatted data, including protocol (e.g. `http://`)." The value is therefore whatever some other server serves at the moment of evaluation -- outside this corpus's control, and outside the engine's. Google's shared Import-functions page adds that "All three functions automatically check for updates every hour while the document is open, even if the formula and sheet don't change." (the three being IMPORTDATA, IMPORTHTML and IMPORTXML), so the value is not even stable within one open document. SYNTAX NOTE, CHECKED TWICE ON THE DAY: the live page publishes a ONE-argument `IMPORTDATA(url)`. Widely-copied secondary sources carry a three-argument `IMPORTDATA(url, delimiter, locale)`; that form is not on Google's page and is not used here. WHY THE URL IS example.com AND NOT GOOGLE'S OWN SAMPLE URL. Google's Sample Usage points at a live third-party document. Two harness facts rule that out: (a) an import that succeeds returns an ARRAY, and this corpus writes each case's formula at F1 with the per-sheet recalculation canary at Z1, so an unbounded spill would overwrite the canary and mark the whole run untrusted for a reason that has nothing to do with the engine; (b) a corpus that is re-executed on four builds per batch should not repeatedly fetch someone else's server. The call here is well formed and shaped exactly like Google's documented syntax; only the host is inert. Since no value is asserted either way, nothing is lost by it. LIBREOFFICE, MEASURED BEFORE THIS FILE WAS AUTHORED. All four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) were probed with NINE storage spellings -- plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE., _xlfn.ORG.OPENOFFICE., ORG.LIBREOFFICE., _xlfn.ORG.LIBREOFFICE., _xlfn.COM.MICROSOFT. and COM.SUN.STAR.SHEET.ADDIN.ANALYSIS. -- and every one of those 36 combinations returned #NAME?. LibreOffice's own parser additionally wrote the name back into the converted file LOWER-CASED ('=importdata("https://example.com/data.csv")'), which is what it does with an identifier it does not recognise as a function at all rather than with a function it knows under a different storage token. A #NAME? under all nine storage forms on all four builds is therefore a genuine absence and not a storage-form artifact of this harness, which is why 'unsupported in LibreOffice' IS a verdict this file publishes even though the returned VALUE is not assertable in any engine. BATCH PROVENANCE (batch J, group B of sheets-lo-only-plan.md -- Google-documented, service- or context-bound; the final batch of the completeness push). This function has x == false in docs/data/compat.json: Microsoft does not document it at all, so this corpus makes no claim about Excel, nothing here is measured against Microsoft's documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is Google's own function help, cited by full URL and by the date it was read (2026-08-31) -- Google publishes no version number for Sheets, so a bare URL dates nothing. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record what the service returns for this call. Until that ingest lands the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose -- scripts/check_honesty.py bans the blanket negative shape of that sentence, and the guard is worth keeping blunt.) Google's IMPORTDATA help page, read live on 2026-08-31 at https://support.google.com/docs/answer/3093335, and the Import-functions page at https://support.google.com/docs/answer/12188454, read the same day. |
Error |
Google Sheets (executed 2026-09-01 via Drive import)
Google Sheets is a rolling service with no pinnable version, so this run is identified by its date. The corpus was imported to Drive as .xlsx, recalculated by Sheets, and exported back for readback.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =IMPORTDATA("https://example.com/data.csv") | Existence probe only: the documented behaviour IS a network fetch, which no flat workbook can reproduce | #REF! | ProvenanceNOT ASSERTABLE BY DESIGN, and deliberately recorded as a probe (expected: null) rather than a support claim -- the treatment batch B gave the CUBE* family and COPILOT, batch C gave DETECTLANGUAGE, and batch G gave RTD, STOCKHISTORY and TRANSLATE. GOOGLE DOCUMENTS THIS FUNCTION AS A FETCH: "Imports data at a given url in .csv (comma-separated value) or .tsv (tab-separated value) format.", with the single argument described as "The url from which to fetch the .csv or .tsv-formatted data, including protocol (e.g. `http://`)." The value is therefore whatever some other server serves at the moment of evaluation -- outside this corpus's control, and outside the engine's. Google's shared Import-functions page adds that "All three functions automatically check for updates every hour while the document is open, even if the formula and sheet don't change." (the three being IMPORTDATA, IMPORTHTML and IMPORTXML), so the value is not even stable within one open document. SYNTAX NOTE, CHECKED TWICE ON THE DAY: the live page publishes a ONE-argument `IMPORTDATA(url)`. Widely-copied secondary sources carry a three-argument `IMPORTDATA(url, delimiter, locale)`; that form is not on Google's page and is not used here. WHY THE URL IS example.com AND NOT GOOGLE'S OWN SAMPLE URL. Google's Sample Usage points at a live third-party document. Two harness facts rule that out: (a) an import that succeeds returns an ARRAY, and this corpus writes each case's formula at F1 with the per-sheet recalculation canary at Z1, so an unbounded spill would overwrite the canary and mark the whole run untrusted for a reason that has nothing to do with the engine; (b) a corpus that is re-executed on four builds per batch should not repeatedly fetch someone else's server. The call here is well formed and shaped exactly like Google's documented syntax; only the host is inert. Since no value is asserted either way, nothing is lost by it. LIBREOFFICE, MEASURED BEFORE THIS FILE WAS AUTHORED. All four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) were probed with NINE storage spellings -- plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE., _xlfn.ORG.OPENOFFICE., ORG.LIBREOFFICE., _xlfn.ORG.LIBREOFFICE., _xlfn.COM.MICROSOFT. and COM.SUN.STAR.SHEET.ADDIN.ANALYSIS. -- and every one of those 36 combinations returned #NAME?. LibreOffice's own parser additionally wrote the name back into the converted file LOWER-CASED ('=importdata("https://example.com/data.csv")'), which is what it does with an identifier it does not recognise as a function at all rather than with a function it knows under a different storage token. A #NAME? under all nine storage forms on all four builds is therefore a genuine absence and not a storage-form artifact of this harness, which is why 'unsupported in LibreOffice' IS a verdict this file publishes even though the returned VALUE is not assertable in any engine. BATCH PROVENANCE (batch J, group B of sheets-lo-only-plan.md -- Google-documented, service- or context-bound; the final batch of the completeness push). This function has x == false in docs/data/compat.json: Microsoft does not document it at all, so this corpus makes no claim about Excel, nothing here is measured against Microsoft's documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is Google's own function help, cited by full URL and by the date it was read (2026-08-31) -- Google publishes no version number for Sheets, so a bare URL dates nothing. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record what the service returns for this call. Until that ingest lands the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose -- scripts/check_honesty.py bans the blanket negative shape of that sentence, and the guard is worth keeping blunt.) Google's IMPORTDATA help page, read live on 2026-08-31 at https://support.google.com/docs/answer/3093335, and the Import-functions page at https://support.google.com/docs/answer/12188454, read the same day. |
Inconclusive |
LibreOffice Calc 25.8.7.3 (tested 2026-09-01)
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =IMPORTDATA("https://example.com/data.csv") | Existence probe only: the documented behaviour IS a network fetch, which no flat workbook can reproduce | #NAME? | ProvenanceNOT ASSERTABLE BY DESIGN, and deliberately recorded as a probe (expected: null) rather than a support claim -- the treatment batch B gave the CUBE* family and COPILOT, batch C gave DETECTLANGUAGE, and batch G gave RTD, STOCKHISTORY and TRANSLATE. GOOGLE DOCUMENTS THIS FUNCTION AS A FETCH: "Imports data at a given url in .csv (comma-separated value) or .tsv (tab-separated value) format.", with the single argument described as "The url from which to fetch the .csv or .tsv-formatted data, including protocol (e.g. `http://`)." The value is therefore whatever some other server serves at the moment of evaluation -- outside this corpus's control, and outside the engine's. Google's shared Import-functions page adds that "All three functions automatically check for updates every hour while the document is open, even if the formula and sheet don't change." (the three being IMPORTDATA, IMPORTHTML and IMPORTXML), so the value is not even stable within one open document. SYNTAX NOTE, CHECKED TWICE ON THE DAY: the live page publishes a ONE-argument `IMPORTDATA(url)`. Widely-copied secondary sources carry a three-argument `IMPORTDATA(url, delimiter, locale)`; that form is not on Google's page and is not used here. WHY THE URL IS example.com AND NOT GOOGLE'S OWN SAMPLE URL. Google's Sample Usage points at a live third-party document. Two harness facts rule that out: (a) an import that succeeds returns an ARRAY, and this corpus writes each case's formula at F1 with the per-sheet recalculation canary at Z1, so an unbounded spill would overwrite the canary and mark the whole run untrusted for a reason that has nothing to do with the engine; (b) a corpus that is re-executed on four builds per batch should not repeatedly fetch someone else's server. The call here is well formed and shaped exactly like Google's documented syntax; only the host is inert. Since no value is asserted either way, nothing is lost by it. LIBREOFFICE, MEASURED BEFORE THIS FILE WAS AUTHORED. All four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) were probed with NINE storage spellings -- plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE., _xlfn.ORG.OPENOFFICE., ORG.LIBREOFFICE., _xlfn.ORG.LIBREOFFICE., _xlfn.COM.MICROSOFT. and COM.SUN.STAR.SHEET.ADDIN.ANALYSIS. -- and every one of those 36 combinations returned #NAME?. LibreOffice's own parser additionally wrote the name back into the converted file LOWER-CASED ('=importdata("https://example.com/data.csv")'), which is what it does with an identifier it does not recognise as a function at all rather than with a function it knows under a different storage token. A #NAME? under all nine storage forms on all four builds is therefore a genuine absence and not a storage-form artifact of this harness, which is why 'unsupported in LibreOffice' IS a verdict this file publishes even though the returned VALUE is not assertable in any engine. BATCH PROVENANCE (batch J, group B of sheets-lo-only-plan.md -- Google-documented, service- or context-bound; the final batch of the completeness push). This function has x == false in docs/data/compat.json: Microsoft does not document it at all, so this corpus makes no claim about Excel, nothing here is measured against Microsoft's documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is Google's own function help, cited by full URL and by the date it was read (2026-08-31) -- Google publishes no version number for Sheets, so a bare URL dates nothing. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record what the service returns for this call. Until that ingest lands the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose -- scripts/check_honesty.py bans the blanket negative shape of that sentence, and the guard is worth keeping blunt.) Google's IMPORTDATA help page, read live on 2026-08-31 at https://support.google.com/docs/answer/3093335, and the Import-functions page at https://support.google.com/docs/answer/12188454, read the same day. |
Error |
Docs & syntax
- Google Sheets: official documentation
Where IMPORTDATA behaves differently
- Google-only functions: what ports to Excel and LibreOffice, and what does not
Executed: 47 functions Google documents and neither Microsoft nor LibreOffice does, 189 cases, 183 of them #NAME? in LibreOffice on all four pinned builds after five- and nine-spelling probes. QUERY and ARRAYFORMULA do not port; the operator functions do exactly; REGEXMATCH, REGEXTEST and REGEX are three different functions with three regex flavours.