Link extractor: get every link on a page
Enter a URL or paste HTML. Get every link as a full URL with its anchor text, internal or external type, and nofollow, sponsored, or ugc flags — then filter, deduplicate, and export to CSV.
| URL | Anchor text | Type | Rel | × |
|---|
This link extractor pulls every link out of a web page and gives you a clean list: each URL made absolute, the anchor text people click, whether the link is internal or external, and whether it carriesnofollow, sponsored, or ugc. Enter a URL to fetch a live page, or paste HTML to extract links privately in your browser. Filter the result, remove duplicates, and export it to CSV — free, with no sign-up.
How to extract links from a website
- Choose a mode. A web page URL fetches the page for you; Pasted HTML works on source code you already have.
- Enter the page address (or paste the HTML) and press Extract links. Redirects are followed, and links are resolved against the final address.
- Read the summary — total links, unique URLs, internal, external, and how many are nofollow, sponsored, or ugc.
- Narrow it down with the Type and Rel filters and the search box. Untick Remove duplicate URLs to see every occurrence in page order.
- Take the result with you: copy the URLs, download a CSV for a spreadsheet, or send them to the bulk URL opener to open them in tabs.
From a URL or from pasted HTML: which to use
URL mode is the quick path for public pages. Browsers don’t let one website read another site’s pages (the same-origin policy), so the page is fetched by Marqly’s server, which sends back only the list of links. It reads the HTML exactly as the server delivers it, without running JavaScript — the same first view a search engine crawler gets before rendering.
Pasted HTML mode never contacts a server. Use it when:
- The page builds its links with JavaScript. Open the page, open developer tools, right-click the
<html>element, choose to copy its outer HTML, and paste it here — you get the links as rendered. - The page is behind a login or only shows content to your session.
- The site blocks automated requests. Some sites answer bots with 403 or a challenge page; your own browser can still load the page and give you its source.
- The HTML isn’t a web page at all — an email template, a saved file, an export, or a snippet from a CMS.
Add a base URL in pasted mode so relative links such as /pricing or ../docs become full addresses. If the HTML contains its own <base href>, that wins, exactly as it would in a browser.
What each column means
URL
The link target as an absolute URL, resolved the way a browser would: relative paths against the page address (or its <base> element), HTML entities such as & decoded. A link that only jumps within the page, like #comments, resolves to the page’s own URL plus that fragment.
Anchor text
The visible text of the link. For image links with no text, the image’s alt text is used; after that the link’s aria-label or title. An empty cell means the link has no accessible text at all — worth fixing for screen-reader users and for search engines, which use anchor text to understand the target.
Type: internal, external, other
Internal links point to the same host as the page, ignoring a leading www..External links point anywhere else — including other subdomains of the same domain, which are separate hosts. Other collects non-web links: mailto:, tel:,javascript:, and similar. In pasted mode with no base URL, relative links can’t be resolved and are counted as internal, since a relative link always points at its own site.
Rel: nofollow, sponsored, ugc
The rel attribute tells search engines how a site relates to the page it links to. Google’s guidance onqualifying outbound linksdefines three values:
- sponsored — advertisements and paid placements.
- ugc — links inside user-generated content, such as comments and forum posts.
- nofollow — for when the other values don’t apply and the site would rather not be associated with the target.
Values can be combined, space- or comma-separated (rel="ugc nofollow"), and the extractor reads both forms. Links with none of the three show as followed. Other rel values, such asnoopener or noreferrer, are shown in the column but don’t change that status — they concern browser security and referrer data, not search engines.
× (occurrences)
With duplicates removed, how many times the same URL appears on the page. A count of 3 for your pricing page usually means header, body, and footer links. The first occurrence supplies the anchor text; untick the dedupe box to see every instance with its own text.
Exporting links to CSV
Download CSV saves the links that match your current filters, with the columnsurl, anchor_text, type, rel, and occurrences. It opens in Excel, Google Sheets, and Numbers. Anchor text comes from a page you don’t control, so any cell that begins with =, +, -, or @ is prefixed with an apostrophe, which stops a spreadsheet from running it as a formula.
What people use a link extractor for
- SEO audits. Count a page’s internal links, spot important pages it never links to, and check that paid and affiliate links carry
sponsored. - Finding broken links. Extract a page’s external links, then paste them into thedead link checker to see which return errors, and follow any suspicious ones with the redirect checker.
- Collecting resources. Turn a “best resources” page, a newsletter archive, or a conference schedule into a list you can sort, filter, and work through.
- Content migrations. List every link in old pages before moving them, so nothing points to a URL that is about to disappear.
- Checking email templates. Paste a newsletter’s HTML to confirm every link goes where it should and carries the right tracking parameters — or strip those parameters with theURL cleaner.
Limits and edge cases
- Only
<a href>links are extracted. Image-map areas, buttons that navigate with JavaScript, and URLs that appear only as plain text are not links in the HTML sense and are not included. - Hidden markup is skipped. Links inside comments, scripts, styles, and templates are ignored in URL mode, because a visitor never sees or clicks them.
- Size caps in URL mode: the first 2 MB of HTML and up to 5,000 links per page. The status line tells you when a page was cut off.
- Only public pages. The fetcher refuses private-network addresses, URLs with embedded passwords, and ports other than 80 and 443, and it only reads HTML responses — a PDF or image URL is rejected.
- One page at a time. This is not a crawler. To cover a site, run the pages you care about, or start from its sitemap.
Privacy
Pasted HTML is parsed by your own browser and never leaves it. In URL mode, the page is requested by Marqly’s server with the user agent MarqlyLinkExtractor/1.0; the response is read once to collect its links, and neither the page nor the results are stored. Filtering, deduplication, and export always run in your browser.
Keep the links worth keeping
A spreadsheet of links is a snapshot; most of it goes stale in a folder. If some of the links you extracted are worth coming back to, save them to Marqly: every bookmark keeps its title and tags, sits on boards you organize, and syncs to the browser extension and the iOS and Android apps. The free plan holds up to 100 bookmarks; Pro is unlimited and adds full-text and semantic search, so you can find a page by what it said. If you already have thousands of saved links, tidy them first with the duplicate bookmark finder.
Frequently asked questions
How do I extract all links from a website?
Paste the page address into the link extractor and press Extract links. It fetches the page, lists every link with its full URL, anchor text, internal or external type, and rel attributes, and lets you filter, deduplicate, copy, or download the list as CSV. It works one page at a time; for a whole site, run it on the pages that matter or on the sitemap’s pages one by one.
Why are some links missing compared with what I see on the page?
URL mode reads the HTML the server sends and does not run JavaScript, so links that a script adds after the page loads — infinite scroll, many single-page apps, some menus — are not in it. Open the page, use your browser’s developer tools to copy the rendered page HTML, and paste it into the From pasted HTML mode to capture those links too.
What counts as an internal link?
A link to the same host as the page, with a leading www. ignored — so example.com and www.example.com are internal to each other. Other subdomains, such as blog.example.com, are listed as external, because search engines and analytics tools usually treat them as separate sites. mailto:, tel:, and javascript: links are grouped as Other.
What do nofollow, sponsored, and ugc mean?
They are rel attribute values a site uses to qualify an outbound link. Google’s guidance is to mark ads and paid placements as sponsored, links in user-generated content such as comments and forum posts as ugc, and to use nofollow when the other values don’t apply. Values can be combined, for example rel="ugc nofollow". Links without any of the three are shown as followed.
Is the pasted HTML sent to your server?
No. In From pasted HTML mode, everything happens in your browser with its built-in HTML parser; nothing is uploaded. Only URL mode involves a server, because browsers do not let a web page read other sites directly, so Marqly’s server fetches that one page, returns the links it found, and keeps no copy of the page or the results.
Can it extract links from a page behind a login?
Not in URL mode — the fetch happens without your cookies, so it sees the logged-out page. Log in, open the page, copy its HTML from your browser’s developer tools, and use From pasted HTML; relative links are resolved if you enter the page’s address as the base URL.
Is there a limit?
In URL mode, a page is read up to 2 MB of HTML and up to 5,000 links, and there is a per-minute rate limit so automated scripts can’t slow the tool down for everyone. If you see too many requests, wait a minute. Pasted HTML has no server limit; the table shows the first 1,000 rows, while copy and CSV export include every matching link.





