How to find every external link and data connection in an excel workbook
- Step 1Open the External Link Auditor and drop your XLSX — Drag the
.xlsxworkbook onto the upload zone. JSZip unpacks the OOXML container in your browser. Only.xlsxis accepted —.xlsb(binary) and.xls(legacy OLE) are not OOXML ZIP containers and won't parse; re-save them as.xlsxfirst via File → Save As. - Step 2Let the scan walk the relationship XML — The auditor iterates every entry in the ZIP and inspects three things:
xl/externalLinks/_rels/*.relsfor workbook-reference targets, anyxl/worksheets/_rels/*.relsfor relationships whoseTypecontainshyperlink, andxl/connections.xmlforconnection=andodcFile=attributes. - Step 3Read the typed inventory — The report opens with
Found N external link(s):and then a numbered list. Each line readsn. [type] url, where type ishyperlink,external_ref, ordata_connection. A self-contained file showsNo external links found in this workbook.instead. - Step 4Triage by type —
external_refentries are the ones that trigger Excel's Update Links prompt and break when files move.hyperlinkentries are clickable cell links (often harmless, sometimes leaking internal URLs).data_connectionentries are live queries that may pull from databases or web APIs on refresh. - Step 5Copy or download the report — Use Copy to paste the inventory into a ticket or audit note, or Download to save it as a text file. The metrics line beneath the report shows the link count (
rows out) and scan duration in milliseconds. - Step 6Remediate in Excel, then re-audit — This tool reports only — it does not strip links. Break workbook references in Excel via Data → Edit Links → Break Link (which converts them to cached values), remove unwanted cell hyperlinks, and delete stale connections under Data → Queries & Connections. Re-run the auditor to confirm a
No external links foundresult.
The three link classes the auditor detects
Each row maps a reference type to the exact OOXML part the scan reads and the symptom it explains. These three are the complete set the tool detects — nothing outside these parts is reported.
| Report label | OOXML part scanned | What it is | Why it matters |
|---|---|---|---|
external_ref | xl/externalLinks/_rels/*.rels — the Target="…" attribute of each relationship | A link to a cell or range in another workbook (e.g. [Forecast.xlsx]Q3!B7) | Drives the Update Links? prompt; breaks with #REF! when the source workbook moves or is unreachable |
hyperlink | xl/worksheets/_rels/sheetN.xml.rels — relationships whose Type contains hyperlink | A clickable hyperlink attached to a cell (URL, file path, or mailto) | Can leak internal URLs / UNC paths to recipients; usually safe but worth reviewing before external delivery |
data_connection | xl/connections.xml — the connection= and odcFile= attributes | An ODBC / OLEDB / Power Query data connection or an external .odc connection file | Refreshes against a live source (database, web API, file) — can fail or expose credentials/paths off-network |
Format, output, and tier facts
What the tool accepts, what it returns, and the size ceilings by plan. The auditor is Pro tier, so Free is shown for context only.
| Property | Value | Note |
|---|---|---|
| Accepted input | .xlsx only | .xlsb and .xls are not OOXML ZIP containers and are rejected — re-save as .xlsx |
| Output | Plain-text report | Found N external link(s): + numbered n. [type] url lines, or No external links found in this workbook. |
| Options / controls | None | No checkboxes, presets, or removal toggle — drop the file and read the report |
| Minimum tier | Pro | Free (5 MB / 10,000 rows / 1 file) cannot run this tool |
| Pro limits | 50 MB / 100,000 rows / 5 files | Row cap is moot here — the scan reads XML parts, not data rows |
| Developer limits | 500 MB / unlimited rows / unlimited files | For very large consolidated models |
Cookbook
Worked examples of the exact report text for common workbook shapes. Paths and URLs are anonymised; the [type] labels are verbatim from the tool.
A workbook with one external reference and one hyperlink
The most common audit result: a model that pulls one figure from another workbook and has a docs hyperlink in a cell. Both surface, each on its own typed line.
Report: Found 2 external link(s): 1. [external_ref] file:///C:/Finance/Models/Forecast-2025.xlsx 2. [hyperlink] https://intranet.example.com/runbook
A clean, self-contained workbook
When none of the three scanned parts contain a target, the report is a single line. This is the result you want before shipping a file externally.
Report: No external links found in this workbook.
A workbook with a Power Query / ODBC data connection
Data connections live in xl/connections.xml. The scan reads both the connection= string and any odcFile= reference, each emitted as a data_connection line.
Report: Found 1 external link(s): 1. [data_connection] Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\server\share\sales.accdb
Several stale network-share references
A model consolidated from departmental files often carries many external_ref targets to a UNC path. Each relationship target is listed individually so you can see the full blast radius.
Report: Found 3 external link(s): 1. [external_ref] file:///\\fileserver\dept\budget-east.xlsx 2. [external_ref] file:///\\fileserver\dept\budget-west.xlsx 3. [external_ref] file:///\\fileserver\dept\budget-central.xlsx
Audit, remediate, re-audit (the full loop)
The tool reports; Excel removes. Break the links in Excel, then re-run the auditor to confirm the file is now clean before signing off.
Pass 1 (before): Found 2 external link(s): 1. [external_ref] file:///C:/old/source.xlsx 2. [hyperlink] file:///\\server\share\notes.docx In Excel: Data > Edit Links > Break Link; delete the cell hyperlink. Pass 2 (after): No external links found in this workbook.
Edge cases and what actually happens
External reference written inside a formula but with no relationship part
Not detectedThe scan reads relationship targets in xl/externalLinks/_rels/*.rels, not formula text in worksheet XML. In a well-formed workbook, every external workbook reference has a backing externalLinks relationship, so it is detected. But the auditor does not parse formula strings character-by-character, so a hand-edited or malformed file that carries a [Other.xlsx] token without the corresponding relationship part would not surface. Re-save in Excel to regenerate the relationships, then re-audit.
Source cell / sheet location for each link
Not reportedThe report lists each link's type and target URL only — it does not tell you which cell or sheet the link sits in. To locate an external_ref in Excel, use Ctrl+F and search the file token (e.g. [Forecast.xlsx]); for a hyperlink, scan the sheet the relationship belongs to. The tool's job is to prove a link exists and what it points at, not to map it to a cell.
.xlsb or .xls file uploaded
Rejected.xlsb is a binary-XML format and .xls is a legacy OLE compound file — neither is a standard OOXML ZIP container, so JSZip cannot unpack them into the XML parts the scan expects. Open the file in Excel and Save As → Excel Workbook (.xlsx) first.
Links inside images, drawings, or OLE objects
Not detectedHyperlinks attached to shapes/images live in xl/drawings/_rels/*.rels, and OLE/embedded-object targets live elsewhere — these parts are outside the three the scan reads. The auditor covers cell hyperlinks, workbook references, and data connections. For embedded-object hygiene before sharing, pair this with the Comment & Note Purger and VBA Macro Stripper.
Encrypted / password-protected workbook
Cannot parseA workbook protected with File → Info → Protect Workbook → Encrypt with Password is an encrypted OLE container, not a readable ZIP, so JSZip cannot open it and no parts can be scanned. Remove the open-password in Excel first, then audit. To assess password strength separately, see the Password Entropy Auditor.
The same target referenced by multiple cells
By designDetection is keyed to relationship parts, not to cell usage. One externalLinks relationship to Forecast.xlsx produces one external_ref line even if 50 cells pull from that workbook. The report tells you which external files are referenced, not how many cells use each — that is the correct granularity for an audit.
Defined names / named ranges pointing at another workbook
Detected via the relationshipA named range like =[Rates.xlsx]Sheet1!$A$1 still requires an externalLinks relationship in the package, so the underlying external_ref target appears in the report. The auditor surfaces the external file; the named-range wiring itself is not separately labelled. To trace where a named range is consumed, use the Dependency Map.
Hyperlink to a mailto: or in-workbook anchor
Reported as writtenAny relationship whose Type contains hyperlink is reported, including mailto: addresses and external file paths. In-workbook navigation links (location-only, with no external relationship Target) are not relationship-backed and so do not appear — only relationships carrying a real Target are listed.
Workbook over the tier file-size cap
RejectedPro accepts up to 50 MB and Developer up to 500 MB. A consolidated model above your cap is rejected before scanning. Large workbooks are often bloated by embedded media or cached external data — run the Workbook Weight Analyzer to see the external_links byte share, then trim and re-audit.
No external parts at all in the package
ExpectedIf xl/externalLinks/, the worksheet _rels hyperlink relationships, and xl/connections.xml are all absent or empty, the report is No external links found in this workbook. This is the definitive clean result — the file is self-contained and safe to distribute on that axis.
Frequently asked questions
Does this tool remove external links, or only find them?
Find only. It produces a read-only inventory report and never modifies your workbook. Removal is a separate, deliberate step you perform in Excel: Data → Edit Links → Break Link for workbook references (which converts them to their last cached values), deleting cell hyperlinks, and removing connections under Data → Queries & Connections. Re-run the auditor afterward to confirm zero links remain.
Which exact link types are detected?
Three: external_ref (workbook-to-workbook references from xl/externalLinks/_rels/*.rels), hyperlink (cell hyperlinks from xl/worksheets/_rels/*.rels), and data_connection (ODBC / OLEDB / Power Query and .odc references from xl/connections.xml). The report tags every entry with one of those three labels.
Does it detect Power Query connections?
It detects the connection entries stored in xl/connections.xml, including Power Query data connections, via their connection= and odcFile= attributes. It does not parse the full M-query text inside customXml / query parts — it reports that a connection exists and its connection string, which is what you need for an audit.
What about external references buried inside formulas?
In a normally-saved workbook, every external workbook reference is backed by an externalLinks relationship, so it is detected as an external_ref. The scan keys on those relationship parts rather than parsing each formula string, so a malformed file carrying a [Other.xlsx] token without its relationship part would not surface — re-saving in Excel regenerates the relationship and makes it detectable.
Will the report tell me which cell each link is in?
No. It lists each link's type and target URL/path, not its source cell or sheet. To locate one in Excel, search (Ctrl+F) for the file token (e.g. [Forecast.xlsx]) for a workbook reference, or inspect the sheet that owns the hyperlink relationship. The auditor proves existence and target; pinpointing the cell is a follow-up in Excel.
Is my file uploaded to a server?
No. The workbook is unpacked and scanned entirely in your browser with JSZip — nothing is transmitted. That makes it safe for confidential financial models, board decks, and client deliverables.
Why was my .xls or .xlsb file rejected?
Only .xlsx is accepted. .xls is a legacy OLE compound file and .xlsb is a binary-XML format — neither is the OOXML ZIP container the scan reads. Open in Excel and Save As → Excel Workbook (.xlsx), then audit the converted file.
What does a result of zero links mean?
It means none of the three scanned parts contained a reference target — the workbook is self-contained on the external-link axis. All values are embedded and no external sources are referenced, so the file won't trigger Update Links prompts or break when moved.
Does it scan hidden or very-hidden sheets?
Yes for the parts it reads. Hyperlink relationships live in each worksheet's _rels file regardless of the sheet's visibility setting, and externalLinks and connections.xml are workbook-level parts, so hidden and very-hidden sheets do not shield their links from the scan. (To remove hidden sheets entirely, use the Hidden Sheet Destroyer.)
How big a workbook can I audit?
Pro accepts XLSX up to 50 MB (and 5 files); Developer raises that to 500 MB and unlimited files. The 100,000-row Pro cap doesn't constrain this tool because the scan walks XML parts, not data rows.
How is this different from Excel's Edit Links dialog?
Excel's Data → Edit Links shows only workbook-to-workbook references and nothing about cell hyperlinks or data connections. This auditor reports all three classes in one pass, reading the underlying OOXML directly, so you get the connections and hyperlinks Edit Links never shows.
Can I export the report for compliance records?
Yes. Use Copy to paste the inventory into a ticket or audit log, or Download to save it as a text file. Each line is a stable n. [type] url record suitable for a change-control attachment, alongside a metrics line showing the total link count and scan time.
Privacy first
Every JAD Excel tool runs entirely in your browser using SheetJS and ExcelJS. Your spreadsheets, formulas, and data never leave your device — verified by zero outbound network requests during processing.