Free URL Expander: See Where Any Short Link Goes
Paste one short link or up to 50. See every redirect, its status code and the page it ends on, without your browser visiting any of them. Free, no sign-up.
Links you enter are resolved through our server so your browser never visits them. We don’t store them.
0 links ready0 lines skipped0 over the limit of 50
This tool’s link service is being set up
The part of this tool that follows links runs on our server, and it isn’t live yet. Until it is, you can see the same redirect chain with curl, which is built into macOS, Linux and Windows 10 and 11:
curl -sIL https://bit.ly/your-link Read the lines that start with HTTP/ and location:. Each location: is the next hop, and the last HTTP/ line is the final page’s status. If you see 403 or 405, try curl -sL -o /dev/null -D - https://bit.ly/your-link (on Windows, use -o NUL and type curl.exe).
How to Expand a Short URL
Paste the short links
Paste one link, or up to 50, one per line. You can paste a whole message too: the tool picks out the links and ignores the rest. Links without a scheme, like bit.ly/abc, get https:// added.
Press Expand links
Each link goes to our link service, which follows it one hop at a time. Links are checked four at a time, so a full list takes from a few seconds to about a minute, depending on how quickly the destination servers answer.
Read the redirect chain
Every hop shows its HTTP status code and address. The last line is the final URL, with its domain highlighted, because the domain is the part that tells you whose site you’d be on.
Look at the things to check
Under each result you’ll see patterns worth a second look, such as an IP address instead of a domain name, or a link that was shortened twice. They’re hints to help you decide, not a verdict.
Copy, export or open
Copy the final URLs, download everything as a CSV file, or open a final page in a new tab once you’re happy with where it goes.
How Does This URL Expander Work, and What Happens to Your Links?
A web page can’t unshorten a URL by itself. Browsers deliberately hide the redirect steps of requests to other websites from the page that made them, so this page has no way to read the address bit.ly sends back. That’s why this tool, unlike the other BelayTab tools, uses a small server: a Cloudflare Worker running on belaytab.com’s own domain.
For each link, the server sends a HEAD request, which asks for the headers only, with automatic redirects turned off. If the answer is a redirect, it reads the Location header, checks the new address and asks again. It repeats that until it reaches a page that isn’t a redirect, or 10 hops. Some servers refuse HEAD requests, so when the answer is 403, 405 or 501 it retries with an ordinary GET. When the last page is HTML, it reads at most the first 64 KB to look for a meta refresh tag and follows that too.
The destination sees a request from Cloudflare’s network with the user agent BelayTabToolsBot/1.0. It doesn’t see your IP address, your cookies or your browser, and no referrer is sent. The shortener will usually still count the request as a click, but the click belongs to our bot, not to you.
Nothing is kept. The service doesn’t store the links, doesn’t write them to logs and doesn’t cache results. Everything else, from reading your pasted text to the checks and the CSV file, happens in your browser.
| Step | What the link service does |
|---|---|
| First request | HEAD, then GET if the server answers 403, 405 or 501 |
| Redirects followed | HTTP 300, 301, 302, 303, 307 and 308, plus HTML meta refresh |
| Hops per link | Up to 10, and it stops if a link loops back on itself |
| Timeout | 8 seconds per hop |
| Page content read | Only the first 64 KB of an HTML page, to find a meta refresh |
| Identifies itself as | BelayTabToolsBot/1.0 (+https://belaytab.com/tools/url-expander/) |
| Stored or logged | No |
The service refuses private and internal addresses, such as localhost, 10.x.x.x, 192.168.x.x and the cloud metadata address 169.254.169.254, and it checks again at every hop, so a redirect can’t sneak one in halfway. A short link that points to a device on your own network will show an error for that reason.
What Is a URL Shortener, and How Do Short Links Redirect?
A URL shortener stores a long address under a short code on its own domain. When you open bit.ly/3xYz, your browser asks bit.ly’s server for that path, and the server answers with a redirect: a response with a status code in the 3xx range and a Location header that holds the long address. The browser then requests that address. The whole trip usually takes a fraction of a second, which is why you never notice the shortener at all.
HTTP redirects are the standard way, defined in RFC 9110. The server answers with a 3xx status code and a Location header, and no page is shown. Nearly every shortener uses them, and this tool reads them directly. In our checks on 24 September 2026, bit.ly, lnkd.in and ow.ly answered with 301 and buff.ly with 302.
A meta refresh is an HTML tag, meta http-equiv="refresh" with content="0; url=…", that tells the browser to load another address after a delay in seconds (0 means at once). Services use it when they want to show or measure something first. X’s t.co is a good example: on the same day, t.co sent curl a plain 301 redirect, but sent a Chrome browser a normal 200 page containing a meta refresh and a JavaScript redirect. This tool follows meta refresh tags.
JavaScript redirects change window.location from a script. Following one means running the page’s code, which is exactly what visiting the link does, so this tool doesn’t. A link that only redirects with JavaScript ends early in the chain, and the result tells you when the last page looks like it contains one.
| Code | Name | Permanent? | What a browser does |
|---|---|---|---|
| 301 | Moved Permanently | Yes | Follows it. May turn a form POST into a GET |
| 302 | Found | No | Follows it. May turn a form POST into a GET |
| 303 | See Other | No | Follows it with a GET |
| 307 | Temporary Redirect | No | Follows it, keeping the method and body |
| 308 | Permanent Redirect | Yes | Follows it, keeping the method and body |
| Meta refresh | HTML tag, not a status code | n/a | Loads the new address after the delay |
| JavaScript | Script sets window.location | n/a | Runs the script, then loads the new address |
Why Unshorten a URL Before You Click It?
A short link hides the one thing you need to judge a link: the domain. bit.ly/3xYz could lead to a news article, a shop, a login page made to look like your bank’s, or a file download. Expanding it first shows you where you’d land, without your browser loading anything from the destination.
There are everyday reasons too. You can see tracking steps, because ad networks and email platforms often add two or three hops. You can find links that have died, when the chain ends in a 404. You can check that a link you’re about to share still goes where you think. And you can turn a list of saved short links into real addresses that keep working if the shortener closes, as inactive goo.gl links did in August 2025.
What expanding can’t do is tell you whether the destination is safe. A familiar domain can host something harmful, and an odd-looking one can be harmless. So the tool doesn’t give a verdict. It points out patterns that deserve a second look.
| Thing to check | Why it’s worth a look |
|---|---|
| IP address instead of a domain | Ordinary websites almost always use a name. A bare address like 203.0.113.9 is common on throwaway hosting |
| Punycode domain (xn--) | Domains with non-Latin letters are stored as xn--… Letters from other alphabets can look identical to Latin ones |
| A brand name on another domain | paypal.com.account-check.top belongs to account-check.top, not PayPal. The site is the part just before the ending |
| More than 3 redirects | Usually tracking, but long chains are also used to hide the destination |
| Shortened more than once | A short link inside another short link hides where it goes twice |
| http:// instead of https:// | Anything you type on an http page travels unencrypted |
| A redirect wrapper | Google, Facebook, Outlook Safe Links and others rewrite links. The real target is often inside the link, and the tool shows it |
| A file download | A link ending in .exe, .apk, .zip or similar downloads a file instead of opening a page |
| Final status 4xx or 5xx | The link may be dead, expired or blocking automated visitors |
None of these patterns means a link is dangerous, and a link with no flags isn’t proven safe. This isn’t a malware or phishing scanner. If a message with a link surprises you, check with the sender another way before you open it.
Which URL Shorteners Can It Expand?
Any shortener that uses HTTP redirects or meta refresh works, which is nearly all of them. The tool doesn’t need to know the service; it follows whatever each server answers. These are the ones people paste most often, with the preview tricks some of them offer.
| Short domain | Run by | Built-in preview | Notes |
|---|---|---|---|
| bit.ly | Bitly | Add + to the end: bit.ly/abc+ | Bitly also offers a Link Checker on its trust page |
| t.co | X (Twitter) | None | X wraps links posted on the platform in t.co |
| lnkd.in | None | Used for links in LinkedIn posts | |
| tinyurl.com | TinyURL | preview.tinyurl.com/code, or a preview setting saved in a cookie | Running since 2002 |
| goo.gl | None | Links with no activity in late 2024 stopped working on 25 August 2025. Active links and links made by Google apps, such as Maps sharing, still work | |
| ow.ly | Hootsuite | None | Added by Hootsuite to scheduled social posts |
| buff.ly | Buffer | None | Added by Buffer to scheduled social posts |
| rebrand.ly | Rebrandly | None | Also runs custom branded domains, so many Rebrandly links don’t say rebrand.ly |
| is.gd | is.gd | None | A free shortener that needs no account |
Branded short domains, like amzn.to, nyti.ms or a company’s own go.example.com, work in exactly the same way. The preview tricks above show you the destination too, but only for their own service and only one link at a time.
Examples: What an Expanded Short Link Looks Like
These are typical results. The addresses are made up, but the shapes are the ones you’ll see most.
- A link from a post on X: t.co/AbC123 → 301 → https://www.example-news.com/2026/09/story → 200. One hop, and the domain matches the card shown under the post.
- A newsletter button: click.example-mail.com/ls/click?upn=… → 302 → https://track.example-ads.net/r/… → 302 → https://shop.example.com/sale?utm_source=newsletter → 200. Two tracking hops before the shop. Paste the final URL into the URL cleaner to strip the utm_ tags before you share it.
- Two shorteners stacked: tinyurl.com/x → 301 → bit.ly/y → 301 → https://files.example.org/setup.exe → 200. The tool flags both the double shortening and the file download.
- A dead link: bit.ly/old-report → 301 → https://example.org/2019/report → 404. The shortener still works, but the page behind it is gone. Try the address in the Internet Archive’s Wayback Machine.
- An Outlook Safe Links address copied from an email: nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fexample.com%2Finvoice… The tool shows the target hidden inside the wrapper, so you can read it before Microsoft’s scanner forwards you.
- A spreadsheet of 40 campaign links: paste the column, expand, and download the CSV. You get the final URL, final domain, status code and number of redirects for each one, ready to sort.
How to See Where a Link Goes in Each Browser
Every browser can show you a link before you click, but only the first step. Hovering over a short link shows the short link itself, not where it leads. Developer tools show every hop, but only after you load the link, which is the visit you were trying to avoid. That makes the browser methods fine for checking your own links and a poor fit for suspicious ones.
To trace a chain in developer tools, open the Network panel, turn on the option that keeps the log between pages, then paste the short link into the address bar and press Enter. Each row with a 3xx status is one hop, and its Location response header holds the next address.
| Browser | Hovered link shows | Open the network log | Keep it across redirects |
|---|---|---|---|
| Chrome | Bottom-left of the window | Ctrl+Shift+I (Cmd+Option+I on Mac), then Network | Tick “Preserve log” |
| Edge | Bottom-left of the window | Ctrl+Shift+I (Cmd+Option+I on Mac), then Network | Tick “Preserve log” |
| Brave | Bottom-left of the window | Ctrl+Shift+I (Cmd+Option+I on Mac), then Network | Tick “Preserve log” |
| Opera | Bottom-left of the window | Ctrl+Shift+I (Cmd+Option+I on Mac), then Network | Tick “Preserve log” |
| Vivaldi | Status bar at the bottom | Ctrl+Shift+I (Cmd+Option+I on Mac), then Network | Tick “Preserve log” |
| Firefox | Bottom-left of the window | Ctrl+Shift+E (Cmd+Option+E on Mac) | “Persist Logs” in the Network Monitor’s settings menu |
| Safari | Status bar, after View > Show Status Bar | Turn on Settings > Advanced > “Show features for web developers”, then Cmd+Option+I, then Network | “Preserve Log” in the Network tab’s filter menu |
Other Ways to Unshorten a URL, Compared
To expand short URL links you don’t trust, or a whole list of them, this tool is the quick option. For single links there are other good methods, and for developers the command line is hard to beat.
With curl, run curl -sIL followed by the short link. The -I flag asks for headers only (a HEAD request), -L follows redirects and -s hides the progress bar. Read the lines that start with HTTP/ and location: to see each hop. If a server answers the HEAD request with 403 or 405, use curl -sL -o /dev/null -D - followed by the link instead, which sends normal GET requests but still prints only the headers. On Windows, write -o NUL, and type curl.exe in Windows PowerShell, where plain curl is an alias for a different command.
curl never runs JavaScript, so like this tool it can stop short of a script redirect. Unlike this tool, it connects from your own computer and IP address.
| Method | Does your device contact the destination? | Every hop? | Many links? | Verdict |
|---|---|---|---|---|
| This URL expander | No, our server does | HTTP redirects and meta refresh | Up to 50 | Quickest for suspicious links and lists |
| Shortener preview (bit.ly +, preview.tinyurl.com) | No, you see the shortener’s page | First hop only | No | Handy for a single bit.ly or TinyURL link |
| curl -sIL | Yes, from your computer, but no page is rendered | HTTP redirects | Scriptable | Best for developers |
| Browser developer tools | Yes, the full page loads | All, including JavaScript | No | Most complete, but it’s a real visit |
| Hovering over the link | No | No, shows the short link only | No | Doesn’t work for short links |
| Link expander extensions | Varies | Varies | Varies | Check where the extension sends your links first |
Limits and Troubleshooting
- “No answer within 8 seconds”: the server is slow, overloaded or down. Try again later, or open the link in a browser you trust.
- “Couldn’t connect”: the domain exists but nothing answered, often because the site is offline or its certificate is broken.
- “That domain doesn’t exist”: a typo, or a shortener or site whose domain has expired.
- “Redirect loop”: the link bounces between the same pages. This often happens with pages that need you to sign in or accept cookies.
- “Stopped after 10 redirects”: the chain is unusually long. The last address shown is where the tool stopped, not necessarily the destination.
- A 403, 429 or 503 at the end, when the link works in your browser: some sites challenge or block automated visitors. The final address is still correct; the status is what the site told a bot.
| Limit | Value |
|---|---|
| Links per run | 50. Extra links are counted and skipped, so run the rest next |
| Redirects per link | 10 |
| Time per hop | 8 seconds |
| Protocols and ports | http:// and https:// on the standard ports 80 and 443 |
| JavaScript redirects | Not followed. Flagged when the last page seems to contain one |
| Private and internal addresses | Refused at every hop |
| Requests per visitor | Rate limited per IP address. If you hit the limit, wait a minute |
If you see “This tool’s link service is being set up”, the server part isn’t live yet. Use the curl method above in the meantime; it shows the same chain.
Frequently Asked Questions
What is a URL expander?
A URL expander follows a short link’s redirects and shows the full address it ends at. This one also lists every hop in between with its HTTP status code, so you can see tracking steps and dead ends as well as the destination.
How do I unshorten a URL without clicking it?
Paste it into the box at the top of this page and press Expand links. Our server follows the redirects, so your browser never contacts the destination. For a single bit.ly link you can also add + to the end, and for TinyURL you can put preview. in front of tinyurl.com.
Is it safe to expand a short URL?
Expanding a link with this tool doesn’t load the page in your browser, so nothing on the destination can run on your device. Expanding doesn’t make the destination safe, though; it only tells you where the link goes, so you can decide.
Can this tool tell me if a link is a scam or malware?
No. It isn’t a malware or phishing scanner and never says a link is safe. It shows the destination and flags patterns worth checking, such as a bare IP address, a punycode domain or a brand name on someone else’s domain.
How do I expand a t.co link from X?
Copy the t.co link and paste it here. When you copy a link from a post, you often get the t.co address rather than the one shown in the post, and the tool follows it to the real page. t.co sends browsers a page that redirects with a meta refresh and a script, and sends other clients a normal 301 redirect; the tool handles both.
How can I see where a bit.ly link goes?
Add a plus sign to the end of the link, like bit.ly/abc+, and Bitly shows a page with the destination instead of redirecting you. Bitly documents this on its trust page. To check many bit.ly links at once, paste them into this tool.
Do goo.gl links still work?
Many do. Google deactivated goo.gl links that showed no activity in late 2024 on 25 August 2025, and kept the others working, including links made by Google apps such as Maps sharing. Paste a goo.gl link here to see whether it still redirects.
Why does the result show 403 when the link works in my browser?
Some sites block or challenge automated visitors, so they answer our server differently from a person’s browser. The final URL is still right. The status code shows what the site told our bot.
Why does the tool stop before the real destination?
The page probably redirects with JavaScript, which this tool doesn’t run. When the last page looks like it contains a script redirect, the result says so. Developer tools in your browser show the full chain, but only by visiting the link.
Does the link’s owner know I expanded it?
The shortener usually records a click, but from our server’s address and our bot’s user agent, not from you. Your IP address, cookies and browser details aren’t passed on.
Related
- ToolsURL CleanerRemove tracking parameters like utm_*, fbclid and gclid from one link or a whole list, and see what each one did.
- ToolsURL ExtractorPull every link out of text, HTML, Markdown or an email. Dedupe, filter by domain, export TXT or CSV.
- ToolsSitemap URL ExtractorExtract URLs from any XML sitemap, sitemap index or .xml.gz file. Filter, dedupe and export to CSV or TXT.
- LegalSecurityPermissions, data handling and how to report a vulnerability.
Keep Your Tabs Safe, Too
BelayTab saves and snapshots your tabs automatically, in every browser. Free.