Free Tool

Free Link Extractor - Extract All URLs from a Web Page

Free link extractor: extract all links from a web page or a block of text. Internal and external URLs, anchor text, nofollow and sponsored flags, filters, and CSV export. No signup.

Enter a page URL to list every link with its anchor text, internal/external type, and rel attributes. Links rendered by JavaScript are not included.

No signup required
Free forever
GDPR compliant
Powered by U2L

Quick Answer

A link extractor pulls every URL out of a web page or a block of text and lists them in a table you can filter, copy, or download. Paste a page URL to extract all links from the page (resolved to absolute URLs, with anchor text and rel attributes), or paste text to extract URLs with a regex. Runs in your browser, free, no signup.

Quick Facts

  • Page mode parses real HTML with the browser's DOMParser and collects every a[href], the canonical link, and optionally every img[src].
  • Relative links are resolved to absolute URLs against the page's final URL, honouring a <base href> tag when the page has one, per RFC 3986 section 5.
  • Each link is classified Internal or External by comparing registrable domains, so blog.example.com counts as internal to example.com.
  • rel=nofollow, rel=sponsored, and rel=ugc are read per link; Google has treated all three as hints rather than directives since March 1, 2020.
  • Text mode extracts http(s) URLs, www. addresses, and bare domains on common TLDs from any pasted text, with trailing punctuation trimmed.
  • Pages are fetched through a stateless pass-through that reads the first 1 MB of HTML; a truncated flag tells you when a page was larger.
  • Export is a UTF-8 CSV with a BOM so Excel opens it correctly, generated in the browser as a Blob - nothing is stored on U2L.

How to extract links from a web page

Enter a URL or paste text, filter, export.

  1. 1

    Choose page or text mode

    Use From a web page to fetch and parse a live URL, or From text to pull URLs out of an email, a document, a log, or HTML source you already have.

  2. 2

    Enter the URL or paste the text

    In page mode, paste a full URL and click Extract links; turn on Include image URLs to add img[src] targets. In text mode, links are extracted live as you paste.

  3. 3

    Filter and dedupe

    Switch between All, Internal, and External, type in the search box to match a URL or anchor text, and leave Remove duplicates on to collapse repeated links to one row each.

  4. 4

    Copy or download

    Copy all puts the filtered URLs on your clipboard, one per line. Download CSV saves URL, anchor text, type, rel, and kind for a spreadsheet. Send the list to /tools/bulk-url-checker to find broken ones.

What is a Link Extractor?

Link Extractor is a URL extractor that reads a web page or a block of text and returns every link it contains as a clean list with the link's anchor text, whether it is internal or external, and its rel attributes. It turns a page you can only scroll into data you can filter, count, export, and check.

Every web page is a graph node: the links on it define where crawlers, users, and link equity flow next. Seeing that list plainly answers questions a browser view hides. How many outbound links does this article have, and how many carry nofollow? Which internal pages does the homepage link to first? Does the page link to a competitor, and with what anchor text? A link extractor makes those answers a 10-second task instead of a view-source hunt.

There are two fundamentally different ways to get links out of content. A DOM extractor loads the HTML into a real parser, walks the anchor elements, and resolves each href against the document's base URL, exactly as a browser would. A regex extractor scans raw text for anything shaped like a URL. The first is accurate for web pages, including relative links, anchors with rel attributes, and the canonical tag. The second is the only option for plain text such as an email body, a chat log, a PDF export, or a page's source code copied from a devtools panel. This tool does both, in separate tabs, and tells you which method it used.

The output is deliberately spreadsheet-shaped. Internal link audits, outreach prospecting, competitor outbound-link analysis, and broken-link sweeps all start with a list of URLs plus context, and they all end in a CSV. Each row also carries a U2L shorten button, because a common next step after extracting a set of destination links is to turn a few of them into trackable short links for a newsletter or social post.

How does a Link Extractor work?

In page mode the browser cannot fetch an arbitrary third-party page itself, because the target site's CORS policy blocks cross-origin reads. So the URL is passed to U2L's stateless fetch-text endpoint, which issues one GET with a browser-like user agent, follows up to five redirects, enforces an 8-second timeout, and returns the first 1 MB of the body together with the final URL after redirects, the HTTP status, and the content type. It refuses private and internal addresses, and it returns HTTP 415 for non-text responses such as a PDF or an image, so the tool can tell you the URL is not a web page instead of showing an empty table.

The HTML is then parsed in your browser with DOMParser using the text/html type. DOMParser builds a full document tree with the browser's own HTML5 parser but never executes scripts, loads subresources, or renders anything, which makes it both safe and fast. The tool checks for a base element with an href, resolves that href against the final URL, and uses the result as the base for every link on the page, mirroring the HTML specification's rule that the first base element with an href sets the document base URL. Each a[href] is then resolved with the URL constructor, which implements RFC 3986 reference resolution: ../pricing becomes an absolute path, //cdn.example.com keeps the page's scheme, and #section stays on the same page.

Anchor text is the element's textContent with whitespace collapsed, falling back to an image's alt text when a link wraps only an image. The rel attribute is split into tokens and the tool records nofollow, sponsored, and ugc, the three values Google introduced or redefined in September 2019 for outbound-link classification. The link's type is decided by comparing registrable domains: the last two labels of the hostname, or three when the suffix is a two-label public suffix such as co.uk or com.au. Links with a mailto:, tel:, or javascript: scheme are kept but marked Other and are never offered for shortening. The canonical link element is collected as its own row so you can confirm the page's declared canonical alongside its links; /tools/canonical-url-checker goes deeper on that specific question.

Text mode does not need a server at all. A single regular expression matches three shapes: URLs with an http or https scheme, addresses that start with www., and bare domains ending in a common top-level domain with an optional path. Trailing punctuation such as a period, comma, or closing bracket is trimmed because sentences end and parentheses close after URLs. Bare domains and www. addresses are normalised to https:// for the URL column so they can be copied, checked, or shortened directly. Because there is no source document, text-mode rows have no anchor text and no internal/external classification. Both modes feed the same table, filters, dedupe, copy, and CSV export, and the CSV is built from the filtered rows with RFC 4180 quoting and a UTF-8 byte order mark so Excel reads non-ASCII characters correctly.

Use Cases

How marketers, businesses, and developers use link extractor.

Internal link audit for one page

Extract the links on a key page, filter to Internal, and count them. A pillar page that links to only four of its 20 supporting articles has an internal-linking gap you can fix in an afternoon. The anchor text column shows whether those internal links use descriptive text or generic click here.

Competitor outbound link analysis

Filter a competitor's resource page or article to External to see who they cite, link to, or partner with, and whether those links are nofollow or sponsored. Export the CSV and merge several pages to map their whole outbound footprint before an outreach campaign.

Preparing a broken-link check

Extract every link, download the CSV or copy the URL list, and paste it into /tools/bulk-url-checker to get HTTP status codes for up to 50 URLs per run. Extracting first means you check the links a page actually has, not a list you typed from memory.

Pulling URLs out of an email or document

A newsletter, a meeting summary, or a support thread can contain dozens of links buried in prose. Paste the text into text mode and get a deduplicated list instantly, with tracking-heavy URLs ready to clean with /tools/utm-stripper or shorten for resharing.

Building a link list for a newsletter

Extract the links from a roundup page or a set of sources, pick the ones you want, and shorten each with the per-row button. Every U2L short link gets its own click count, so you learn which stories your subscribers actually opened.

Checking nofollow and sponsored compliance

Publishers who sell placements must mark paid links rel=sponsored and user-generated ones rel=ugc. Extract a sponsored article, look at the rel column, and confirm every paid link is tagged before the advertiser or a reviewer notices it is not.

Inventorying image URLs on a page

Turn on Include image URLs to add every img[src] to the table. Designers use it to find which CDN or host an image comes from; SEOs use it to spot images served from a staging domain or over plain HTTP on an otherwise HTTPS page.

Migration and redirect planning

Before moving a site, extract the links from the old navigation, footer, and key landing pages. That list is the input to your redirect map. Pair it with /tools/redirect-checker after launch to confirm every old URL resolves in one hop.

Research and citation gathering

Students and analysts extract the reference links from a long article or a Wikipedia section in one go rather than copying them one at a time. Text mode also works on a bibliography or a PDF's text layer pasted from a reader.

Link Extractor vs Alternatives

Side-by-side feature and pricing comparison with the top alternatives.

FeatureU2LSitechecker Link ExtractorBrowserling URL ExtractorView source + regex
Free, no signupLimited
Extracts from a live page URLManual
Extracts from pasted text
Resolves relative links and <base href>Varies
Anchor text and rel (nofollow/sponsored/ugc)
Internal/external filter and search
CSV export
Shorten any extracted link in one click

Link Extractor vs Sitechecker Link Extractor

Sitechecker's extractor detects internal and external links with anchor text, follow status, and HTTP status codes, and it scales up to a full-site crawl of 1,000 pages once you create an account. If you need every link on every page of a site, a crawler is the right tool and Sitechecker is a capable one.

For a single page, the account requirement and the crawl framing are overhead. This tool reads one page in a couple of seconds with no login, adds a text mode Sitechecker does not have, and leaves status checking to /tools/bulk-url-checker so extraction itself stays instant.

Link Extractor vs Browserling URL Extractor

Browserling's tool is a clean text-mode extractor: paste text, get the URLs, no ads. It handles http, https, and ftp links and is aimed at developers preparing test cases or moderating user content.

It does not fetch a page, resolve relative links, or know what an anchor or rel attribute is. This tool includes the same text extraction and adds a real DOM parse for live pages, internal/external classification, filters, and CSV export.

Best Practices

Use page mode for pages, text mode for everything else

DOM parsing resolves relative links and reads attributes; regex cannot. If you have a URL, use page mode. If you have HTML source pasted from devtools, text mode will still find absolute URLs but will miss relative ones.

Keep dedupe on for counts, off for placement

A footer link appears once per page, but a navigation link may appear twice. Deduped counts tell you how many distinct destinations exist; the raw list tells you how many times each is linked, which matters for internal link weight.

Check the truncation note on long pages

The fetch reads the first 1 MB of HTML. Most pages are far smaller, but a long product listing or an inlined-data page can exceed it. When the note appears, links near the bottom may be missing.

Watch for JavaScript-rendered links

DOMParser does not run scripts. A single-page app that builds its navigation client-side will show few links. Compare the count with what you see in the browser; a big gap means the links are rendered, not served.

Sort by registrable domain before outreach

Open the CSV in a spreadsheet and sort the External rows by domain. Repeated domains are sites the page's author trusts, which makes them warmer prospects than one-off mentions.

Respect the sites you extract from

A single fetch of a public page is equivalent to one browser visit. Extracting many pages in a loop is crawling; check the site's robots.txt with /tools/robots-txt-tester and its terms before you do that at scale.

Send the list to the bulk checker next

Extraction tells you what a page links to; it does not tell you whether those links work. Copy all, paste into /tools/bulk-url-checker, and you have a broken-link report for the page in one more step.

Shorten the links you will reshare

When the goal is a newsletter or a social thread, use the per-row shorten button on the destinations you pick. U2L short links carry click analytics, so the extraction doubles as the start of a tracked campaign.

Common Mistakes to Avoid

Extracting a redirecting URL and reading the wrong base

If the URL you enter redirects, links must resolve against the final URL, not the one you typed. The tool uses the final URL automatically; if you copy links into another tool, use the final address the result shows.

Ignoring the <base> tag

A page with <base href="https://cdn.example.com/"> resolves every relative link against that host. Naive extractors prepend the page URL and produce links that do not exist. Check the base note when relative links look wrong.

Treating subdomains as external

help.example.com is internal to example.com. Classifying by exact hostname inflates external counts and hides internal-linking gaps. The tool compares registrable domains so subdomains stay internal.

Counting fragment links as separate pages

Ten table-of-contents links to #section-1 through #section-10 are one URL with fragments. Dedupe keeps them separate because the fragment differs; strip the fragment in your spreadsheet before counting pages.

Running a text regex on HTML source

Regex on raw HTML catches absolute URLs but misses every href="/relative/path" and picks up URLs inside scripts and comments. Use page mode when you have the URL, so the DOM is parsed properly.

Assuming a PDF or image URL will extract

The fetch only accepts text responses. A link to a PDF returns a 415 error with the content type. Open the PDF, copy its text, and use text mode instead.

Technical Specifications

Page fetchStateless pass-through, one GET, 5 redirects max, 8 s timeout, first 1 MB of body
ParserBrowser DOMParser (text/html); no script execution
Elements collecteda[href], link[rel=canonical], img[src] (optional)
URL resolutionURL constructor against final URL or <base href> (RFC 3986 section 5)
ClassificationInternal/External by registrable domain; mailto/tel/javascript marked Other
rel attributesnofollow, sponsored, ugc
Text modeRegex for http(s) URLs, www. addresses, bare domains on common TLDs
ExportUTF-8 CSV with BOM, RFC 4180 quoting, built as a Blob in the browser
StorageNothing stored; fetch responses carry a 60 s edge cache header only

Frequently Asked Questions

What is a link extractor?

A link extractor is a tool that reads a web page or a block of text and returns every URL it contains as a list. A good one resolves relative links to absolute URLs, records the anchor text and rel attributes, separates internal from external links, and exports to CSV so you can audit or reuse the list.

How do I extract all links from a web page?

Paste the page URL into the From a web page tab and click Extract links. The tool fetches the HTML, parses it with the browser's DOM parser, resolves every a[href] to an absolute URL, and lists them with anchor text, type, and rel. Filter, copy, or download the result as CSV.

Can I extract URLs from text instead of a web page?

Yes. Switch to the From text tab and paste anything: an email, a chat export, a document, or HTML source. A regex finds http(s) URLs, www. addresses, and bare domains on common TLDs, trims trailing punctuation, and lists them live as you paste.

How does the link extractor decide internal versus external?

It compares the registrable domain of each link with the registrable domain of the page's final URL. The registrable domain is the last two labels, or three for public suffixes like co.uk. So docs.example.com is internal to example.com, and example.net is external.

Does it resolve relative links?

Yes. Every href is resolved against the page's final URL after redirects using the browser's URL constructor, which follows RFC 3986. If the page has a <base href> element, that base is used instead, matching browser behaviour. The result column always shows absolute URLs.

What do nofollow, sponsored, and ugc mean in the rel column?

They are rel attribute values on a link. nofollow asks search engines not to pass endorsement, sponsored marks paid placements, and ugc marks user-generated content. Google introduced sponsored and ugc in September 2019 and has treated all three as hints since March 2020.

Why are some links missing from the result?

The most common reason is JavaScript: links built by client-side scripts are not in the served HTML, and DOMParser does not run scripts. The second is truncation, when a page exceeds 1 MB of HTML. The third is links inside iframes, which are separate documents.

Why do I get a 415 error?

The URL returned something other than text, such as a PDF, an image, or a binary download. The extractor only parses text and HTML. Copy the document's text and use the From text tab, or point the tool at the page that links to the file.

Why does it say the URL is not allowed or could not be reached?

Private and internal addresses (localhost, 10.x, 192.168.x, and similar) are refused for safety. Could not be reached means the site timed out after 8 seconds, refused the request, or redirected more than five times. Some sites block automated fetches; try the text tab with the page source pasted.

Can it extract links from an entire website?

No, it reads one page per request. For a full-site crawl use a desktop crawler or a crawling service. You can extract several pages one after another and combine the CSVs, and /tools/sitemap-validator can give you the page list to start from.

How is this different from a bulk URL checker?

A link extractor finds the URLs on a page; /tools/bulk-url-checker tests a list of URLs for status codes and redirects. They chain naturally: extract here, copy all, paste into the bulk checker to find broken or redirecting links.

Link extractor vs a site crawler like Screaming Frog?

A crawler follows links across a whole site and needs installation and configuration. This tool is instant, browser-based, and single-page. Use it for a quick look at one page, an outreach list, or a text paste; use a crawler for a site-wide audit.

Does it include image URLs?

Only when you turn on Include image URLs. Then every img[src] is added as a row of kind image, resolved to an absolute URL. Images from srcset attributes and CSS backgrounds are not included.

Is extracting links from a website legal or allowed?

Reading one public page is the same request a browser makes. Repeated automated extraction is crawling, which some sites restrict in robots.txt or their terms. Check /tools/robots-txt-tester for the site and keep your volume reasonable.

Is my page or text uploaded?

In text mode, nothing leaves your browser. In page mode, only the URL is sent to U2L's fetch endpoint so the HTML can be retrieved past CORS; the HTML is parsed in your browser and nothing is stored. Download and copy happen locally.

Is the link extractor free?

Yes, completely free with no signup and no page limit beyond normal rate limiting on the fetch endpoint. The optional shorten buttons create free U2L short links; anonymous creation is rate-limited and an account removes that limit.

What does the CSV contain?

One row per link in the current filtered view with five columns: url, anchor_text, type, rel, and kind. It is UTF-8 with a byte order mark so Excel opens accented characters correctly, and fields containing commas or quotes are quoted per RFC 4180.

Key Terms

Anchor text
The visible, clickable text of a link. Search engines use it as a signal for what the linked page is about.
Registrable domain
The domain a person can register at a registrar: the label before the public suffix, such as example.com or example.co.uk. Used here to classify links as internal or external.
Base URL
The URL relative links are resolved against. By default it is the document's own URL; a <base href> element overrides it.
rel attribute
A link attribute describing the relationship to the target. nofollow, sponsored, and ugc tell search engines how to treat the link.
DOMParser
A browser API that parses an HTML or XML string into a document tree without rendering it or running scripts.
Canonical URL
The preferred address for a page, declared with link rel=canonical. The extractor lists it as its own row so you can confirm it.

Turn extracted links into tracked links

Once you have the links you want to share, shorten them with U2L to get branded short URLs, QR codes, and per-link click analytics. Sign up free to remove anonymous rate limits and manage every link in one dashboard.

Sign up free