若要從 Google 試算表中的超連結擷取網址,請從編輯列(或底層儲存格的文字)複製原始公式文字,然後將該文字貼上至 URL Extractor,即可在瀏覽器中取得每行一個標準化、已去除重複的網址。Google 試算表會顯示可點擊的連結以及將真實網址隱藏在「Click here」或「Visit site」這類友善顯示文字背後的 HYPERLINK() 公式,因此在工作表上看到的網址通常不是您真正想擷取的網址。可靠地還原這些目的地的做法,是從試算表中取出原始公式或儲存格文字,將其餵給純文字 URL 掃描器,然後讓瀏覽器的 URL 解析器為您標準化大小寫、主機名稱與結尾斜線。由於掃描在本地端執行,且可接受最多一百萬個 UTF-16 程式碼單元,因此您可以將整欄公式的匯出內容一次貼上進行單次掃描,離開後即可獲得一份乾淨、唯一、準備下載的網址清單。

Where the URL Hides Inside a Google Sheets Hyperlink
Google Sheets keeps the real URL hidden behind a friendly label in two common situations. A HYPERLINK() formula places the address in the first argument and the display text in the second, so clicking the cell opens the URL but reading the cell only shows the label. A clickable cell link added through the Insert menu stores the destination inside the cell object, so the formula bar shows the label and the address is invisible without a script.
That gap is exactly what people mean when they ask how to extract URL from hyperlink in Google Sheets. They want the destination, not the label. The recurring search snippets around this question — one titled "Extract a URL From Text or a Hyperlink in Google Sheets", another lists "REGEXEXTRACT, Apps Script" — show three common attempts: a regex that almost works, IMPORTXML against imported HTML, and an Apps Script that reads the link object. Each one solves a slightly different piece of the problem, and each one leaves a normalization step undone. The local scan described below is the post-processing pass that finishes the job.
Three Ways to Lift URL Text Out of a Sheet
Before any scanner can run, the URL-shaped text has to leave the cell. These three approaches cover the cases readers actually hit:
- Copy the formula bar text for HYPERLINK() rows. Click the cell, press F2 (or click the formula bar), select the entire formula, and copy it. The pasted value reads =HYPERLINK("https://...","label") with the real address still inside the quotes, which is exactly what a plain-text URL scanner needs.
- Export a CSV or TSV and open it locally. File > Download > Comma-separated values keeps the cell text but drops the hyperlink objects. Use it when a column is mostly HYPERLINK formulas and the labels are short, since the URLs still appear in the exported cells as visible text.
- Paste the entire range straight from the browser. Select the column, copy it with Ctrl+C, and paste the result into a plain-text field such as the URL Extractor input. Visible labels are preserved alongside URL-bearing formula text, so the scanner picks out the real addresses from ordinary prose around them.
For very large sheets, paste in batches or split the export with a local text splitter if a single range exceeds the one-million-code-unit input cap. The scanner rejects over-limit text rather than truncating it silently, so the paste has to fit in one pass or be broken into chunks first.
Run an Extraction Pass on the Pasted Text
- Paste the text containing http, https, or www addresses into the URL Extractor input. Up to one million UTF-16 code units is accepted per paste.
- Trigger the scan and review the result list. Each candidate is matched with conservative prose boundaries. Terminal periods, exclamation marks, question marks, and colons are stripped, while a closing parenthesis, bracket, or brace is removed only when it is unmatched inside the candidate — so /a_(b) is preserved but the prose wrapper around (https://example.org/) is dropped.
- Check the unique count and the normalized spellings. www candidates receive https:// before validation, so WWW.Example.com emerges as a complete HTTPS address. The browser URL constructor lowercases hostnames, adds a missing root slash, and serializes the result. Duplicates are removed only when the serialized values match exactly, so https://EXAMPLE.com and https://example.com/ collapse into one entry but query-order differences stay separate.
- Click Download to save a one-URL-per-line UTF-8 TXT file. The file uses LF line separators and contains the same strings shown in the preview, so the saved list is auditable line by line against the on-page result. A temporary Blob URL is created only on this click and revoked immediately afterward.
What the Browser Parser Does to Each URL
The scanner does not return the literal string you pasted. It hands every candidate to the browser URL constructor, which performs structural parsing and the WHATWG URL Standard serialization rules. Hostnames become lowercase, a missing root path can become a trailing slash, and default URL serialization rules apply. Valid fragments, queries, ports, paths, and credentials remain intact, because stripping credentials would change the parsed address.
Concretely, a candidate like WWW.Example.COM/path/ becomes https://example.com/path/, while https://EXAMPLE.com/?utm_source=x and https://example.com/?x=1 stay as two separate entries because the serialized query strings still differ. Tracking parameters are never stripped, so if your goal is to clean a list of campaign-tagged URLs, that has to be a separate step after extraction. This normalization is also why the famously fragile regex approach — the one referenced in the "Extract a URL From Text or a Hyperlink in Google Sheets" Stack Overflow thread where "the regex answer almost works" — leaves a trailing comma stuck on the captured address: the URL Extractor treats commas and semicolons as candidate boundaries, so the scanner strips them before validation instead of leaving them in the output. The behavior follows the same path the MDN URL constructor reference describes.
Limits and Out-of-Scope Patterns
The scanner intentionally narrows detection to HTTP, HTTPS, and www-style addresses. Bare domains without the www prefix, mailto, ftp://, file://, javascript:, and email addresses are outside the declared detection scope and will not appear in the output. Scheme matching is case-insensitive, so HTTP://, Http://, and http:// all reach the parser, but a bare domain like example.com still requires the leading www to be picked up.
Two hard caps gate the result. The input is rejected above one million UTF-16 code units and unique URLs are capped at ten thousand; over-limit inputs are rejected rather than silently truncated. Malformed UTF-16 surrogate sequences are also rejected before scanning, so a corrupted paste cannot reach the parser with replacement characters standing in for missing data. Invalid candidates are skipped without preventing valid neighbors from being returned, so one bad line never costs you the rest of the list. The tool does not claim to be a full HTML or email parser, and for HTML href extraction, CSV fields, Markdown link destinations, or mail archives, a format-aware parser is the right choice when structure matters.
Comparing Ways to Recover URLs in Google Sheets
| Approach | What it returns | Best when | Caveat |
|---|---|---|---|
| HYPERLINK() formula text | The literal URL inside the first argument, with quoting intact | Your column is dominated by =HYPERLINK("...") calls | Labels and URLs stay mixed in the same string |
| IMPORTXML against imported HTML | href attributes from an HTML source table | Your URLs live inside imported HTML rather than native cells | Only works for HTML-shaped input and may yield relative paths |
| Apps Script getLinkUrl() | The destination of a clickable cell link | You have plain clickable links and are comfortable running a small script | Requires authorization and a separate column for output |
| Paste into URL Extractor | One URL per line, deduplicated, normalized | You have plain text containing URLs and want a clean downloadable TXT | Out-of-scope schemes (mailto, ftp, bare domains) are not detected |
The four rows describe different starting points and different outputs, and they are not interchangeable. The first three are Google Sheets–side mechanisms that lift URLs out of cells; the fourth is the final cleanup pass that takes the mixed text and returns a normalized list. Most readers searching the keyword end up combining two of them: a Sheets-side mechanism to recover the raw URL text, and a local scan to deduplicate and normalize before downloading.
If your workflow already lives inside Google Sheets and you would rather stay there, the IMPORTXML and Apps Script paths are documented in the Google Sheets help center under "Extract URLs from hyperlinks and copy to another column". If your workflow is portable and you would rather lift the text out of the sheet and clean it locally, the URL Extractor is the shorter path: paste once, scan once, download a UTF-8 list, and walk away. The local scan is also the safer choice when the source text includes private URLs, signed links, or credentials you do not want to push through a third-party API, because the matching, normalization, and TXT generation never leave the current browser tab. Credentials embedded in a URL remain visible in the result because stripping them would change the parsed address, so avoid pasting secrets, tokens, signed links, private hosts, or personal data into any workflow unless the destination and local device are trusted.
If you're weighing options, Extract Emails From Outlook Text in Your Browser Locally covers this in detail.
If you're weighing options, How to Extract Phone Numbers From a WhatsApp Group covers this in detail.