Working with Hyperlinks and URLs in Google Sheets
July 24th, 2026
Most spreadsheets that deal with external systems end up with a column full of raw URLs or IDs — ticket links, record IDs, file paths — that are technically usable but ugly to click through. HYPERLINK turns any of that into a clean, clickable link with its own label, and ISURL lets you check a value is actually a URL before you build a link out of it or send it downstream. Together with a bit of string building, they cover most of what a dashboard needs for navigation.
Turning raw values into clickable links
The plain form of HYPERLINK just wraps a URL:
=HYPERLINK("https://example.com/records/482", "View record")
That's fine when the URL is already sitting in front of you, but the more common case is a column of bare IDs that need to become links. Say column A has a record ID and column B has the base URL for your app — you want column C to show "View record" as a clickable link for each row:
=HYPERLINK("https://app.example.com/records/"&A2, "View record")
The same pattern works for turning a list of email addresses into ready-to-send links instead of plain text:
=HYPERLINK("mailto:"&A2, "Email "&A2)
If you want the subject line pre-filled too, mailto: links accept query parameters just like a normal URL:
=HYPERLINK("mailto:"&A2&"?subject=Follow-up", "Send follow-up")
Because the label is just a second argument, you can compute it from anything — a status column, a count, a name — rather than hardcoding "Click here" in every row.
Building links from parts with CONCATENATE and &
Real dashboards rarely have a full URL sitting in one cell. More often you have a base path stored once (so it's easy to change when the app moves environments) and a per-row ID or slug that gets appended. & is the simplest way to do this, but CONCATENATE reads better when there are several pieces:
=HYPERLINK(CONCATENATE($B$1, "/customers/", A2), "Open customer")
Here $B$1 holds something like https://app.example.com, locked with absolute references so it doesn't shift as the formula is copied down, and A2 supplies the customer ID per row. Change the base URL once in B1 — say, when moving from staging to production — and every link in the sheet updates without touching a single formula.
This pattern extends naturally to constructing search or filter links, not just record pages:
=HYPERLINK($B$1&"/search?q="&A2, "Search for "&A2)
If any of the pieces might contain spaces or special characters, run them through SUBSTITUTE first to swap spaces for %20 or similar before they land in the URL — a cheap way to avoid a broken link caused by an untouched string.
=HYPERLINK($B$1&"/search?q="&SUBSTITUTE(A2," ","%20"), "Search for "&A2)
The dropdown-to-detail-page pattern
A common dashboard layout pairs a data validation dropdown of names with a single HYPERLINK formula that opens the selected person's page. Set up a dropdown in, say, D1 sourced from a list of names, keep a lookup table of name-to-ID pairs elsewhere in the sheet, and drive the link off the selected value:
=HYPERLINK($B$1&"/people/"&VLOOKUP(D1, People!A:B, 2, FALSE), "Open "&D1&"'s page")
Selecting a different name in the dropdown recomputes the ID lookup and the link updates immediately — one cell doubles as both a selector and a "go to detail page" button, without any script or add-on involved.
Validating URLs before you use them
Formulas that build links from concatenation are only as good as their inputs. If a base URL is missing a protocol, or a cell that's supposed to hold a link actually holds plain text, the resulting HYPERLINK still renders — it just goes nowhere useful. ISURL catches that before it becomes a broken link:
=ISURL(A2)
This returns TRUE only for syntactically valid URLs, so it's a natural guard around a HYPERLINK formula:
=IF(ISURL(A2), HYPERLINK(A2, "Open link"), "Invalid URL")
That's useful anywhere a sheet ingests URLs from an external source — a form submission, an import, a paste from another tool — and you want bad rows to be visibly flagged rather than silently producing dead links. It's equally handy the other way around: filtering a list down to only the rows that already contain something clickable.
=FILTER(A2:A100, ISURL(A2:A100))
Combined with REGEXEXTRACT, you can also pull a URL out of a larger string — a pasted email signature or log line — and validate it in one pass:
=ISURL(REGEXEXTRACT(A2, "https?://\S+"))
Putting it together
The general shape for a dashboard link column is: build the URL from a stable base plus a per-row identifier, decide on a readable label, and validate the pieces you don't fully control. A single formula like this covers most cases:
=IF(ISURL($B$1&"/records/"&A2), HYPERLINK($B$1&"/records/"&A2, "View "&A2), "Check ID")
It's more defensive than a bare HYPERLINK, but it means a broken base URL or a malformed ID shows up as an obvious message in the cell instead of a link that silently 404s.