Free tool Link extractor with anchor text and rel checks
Paste a page's HTML and get every link in one table: the full URL, its anchor text, whether it is internal or external, and its rel values (nofollow, sponsored, ugc). Links Google cannot follow or cannot understand are flagged. Paste plain text instead and it pulls out the URLs.
- HTML or plain text
- nofollow, sponsored, ugc
- CSV export
Extract links
Paste the page source, an email template or any text with URLs. Add the page address so relative links like /pricing resolve and internal links can be told from external ones.
HTML is read as links (<a href>, <area href>). Anything without tags is scanned for http(s):// and www. addresses.
The address this HTML lives at. Used to resolve relative links and to decide internal vs external. www. is ignored when comparing.
The CSV always contains every link.
Links
14
HTML: <a> and <area> elements with href. Text: distinct URLs.
Internal
8
Same host as the page URL, plus relative and #fragment links.
External
4
Other hosts, subdomains included.
nofollow / sponsored / ugc
3
Links with at least one of these rel values.
No anchor text
2
No text, image alt, aria-label or title.
Checks
Problems first. Line numbers point to your HTML.
- ErrorLine 16Image link with no alt text → https://www.example-shop.com/. Google uses the image's alt as the anchor text, and screen readers announce only "link".
- ErrorLine 46Image link with no alt text → https://www.example-shop.com/blog/image-formats. Google uses the image's alt as the anchor text, and screen readers announce only "link".
- WarningLine 27"Click here" → https://www.example-shop.com/guides/core-web-vitals. Google gives "Click here" and "Read more" as examples of anchor text that is too generic; say what the target page is.
- WarningLine 38href="javascript:void(0)". Google lists javascript: links as not recommended; it may not be able to resolve them.
- Note1 URLs are linked more than once on this page. Normal for menus; in body text, one link per target is usually enough.
- NoteLine 47Internal link with rel="nofollow" → https://www.example-shop.com/blog. Google suggests nofollow only for sources you don't trust, not for your own pages.
Links
The "TapCub auto event" column shows what TapCub's script records when a visitor clicks the link.
| URL | Anchor text | Type | rel | TapCub auto event | Line |
|---|---|---|---|---|---|
https://www.example-shop.com/ | image, no alt | Internal | — | — | 16 |
https://www.example-shop.com/shop | Shop | Internal | — | — | 18 |
https://www.example-shop.com/blog | Blog | Internal | — | — | 19 |
https://help.example-shop.com/ | Help center | Subdomain | — | Outbound click | 20 |
https://www.example-shop.com/guides/core-web-vitals | Click here | Internal | — | — | 27 |
https://web.dev/articles/optimize-lcp | Google's guide to LCP | External | — | Outbound click | 37 |
https://partner.example.net/cdn?ref=shop | CDN we use | External | sponsored | Outbound click | 37 |
https://www.example-shop.com/files/speed-checklist.pdf | speed checklist (PDF) | Internal | — | File download | 38 |
javascript:void(0) | ask us a question | JavaScript | — | — | 38 |
https://candles.example.org/ | candles.example.org | External | ugc nofollow | Outbound click | 44 |
https://www.example-shop.com/blog/image-formats | image, no alt | Internal | — | — | 46 |
https://www.example-shop.com/contact | Contact us | Internal | — | — | 47 |
https://www.example-shop.com/blog | Back to the blog | Internal | nofollow | — | 47 |
mailto:hello@example-shop.com | hello@example-shop.com | — | — | 48 |
URLs found in the text
Duplicates merged; trailing punctuation removed.
url,anchor_text,anchor_from,type,rel,tapcub_event,line
https://www.example-shop.com/,,imgNoAlt,internal,,,16
https://www.example-shop.com/shop,Shop,text,internal,,,18
https://www.example-shop.com/blog,Blog,text,internal,,,19
https://help.example-shop.com/,Help center,text,subdomain,,outbound,20
https://www.example-shop.com/guides/core-web-vitals,Click here,text,internal,,,27
https://web.dev/articles/optimize-lcp,Google's guide to LCP,text,external,,outbound,37
https://partner.example.net/cdn?ref=shop,CDN we use,text,external,sponsored,outbound,37
https://www.example-shop.com/files/speed-checklist.pdf,speed checklist (PDF),text,internal,,download,38
javascript:void(0),ask us a question,text,js,,,38
https://candles.example.org/,candles.example.org,text,external,ugc nofollow,outbound,44
https://www.example-shop.com/blog/image-formats,,imgNoAlt,internal,,,46
https://www.example-shop.com/contact,Contact us,text,internal,,,47
https://www.example-shop.com/blog,Back to the blog,text,internal,nofollow,,47
mailto:hello@example-shop.com,hello@example-shop.com,text,mailto,,,48All links, whatever the table filter. Opens in Excel, Numbers and Google Sheets.
Version v1.0Updated Update history
What each column tells you
A link is three things to a search engine: a URL it can crawl, anchor text that describes the target, and an optional rel value that qualifies the relationship. The table shows all three for every link.
Internal, subdomain, external
Internal links share the page's host (www. ignored). Subdomains such as help.example.com are listed separately and counted with external links. Every page you care about should be reachable through at least one internal link.
Anchor text
The visible text, or the alt of an image used as a link. Read it out of context: "Core Web Vitals checklist" stands on its own, "Click here" does not. Empty anchors are errors.
rel values
sponsored for paid links, ugc for comments and forum posts, nofollow for anything else you don't want to vouch for. Values can be combined. Google says links marked this way will generally not be followed, though the target may still be found other ways.
TapCub auto event
TapCub's script records clicks on links to another hostname as outbound clicks and links to files (PDF, ZIP, DOCX and so on) as downloads, with no extra code. Subdomains count as outbound because the hostname differs.
Link checks follow Google's link best practices and qualify your outbound links. They tell you whether links are crawlable and described, not whether they help rankings.
Audit the links on a page
Good for content audits, migration checks and reviewing guest posts before they go live.
-
1
Paste the HTML
Copy the page source, or the HTML of just the article body if you want to skip menus and footers.
-
2
Enter the page URL
Relative links resolve against it, and internal and external links are told apart by its host.
-
3
Filter and fix
Switch the table to "Links with problems" for empty and generic anchors, javascript: links and internal nofollow. Use "External" to review where the page sends people.
-
4
Export
Download the CSV for a spreadsheet audit or a redirect plan. Paste plain text, such as a launch checklist, to pull out its URLs the same way.
How links are found and classified
Only <a href> and <area href> count as links, which matches what Google says it can crawl. <link> tags in the head (stylesheets, canonical, hreflang) are not page links and are left out.
- Relative URLs resolve against the page URL with the browser's own URL rules, so
../guideand//cdn.example.com/xcome out as full addresses - Internal = same host, ignoring a leading
www.. Subdomain = one host ends with the other (help.example.com vs example.com). Everything else on http(s) is external - Anchor text, in order: visible text → alt of images inside the link →
aria-label→title - rel is split on spaces or commas, as Google allows, so
rel="ugc,nofollow"andrel="ugc nofollow"read the same
| Markup | Classified as | Google link best practices |
|---|---|---|
<a href="/shoes">Shoes</a> | Internal | Recommended |
<a href="https://example.com"> | External | Recommended |
<a onclick="goto(…)"> | Flagged: no href | Not recommended |
<span href="…"> | Flagged: not a link | Not recommended |
<a href="javascript:goTo(…)"> | JavaScript | Not recommended |
<a href="…"><img alt=""></a> | Flagged: no anchor text | Bad: empty link text |
The example blog post, extracted
The default HTML is a store blog post at www.example-shop.com with 14 links.
| Group | Links | Notes |
|---|---|---|
| Internal | 8 | Menu, article links, the PDF checklist, contact, "Back to the blog" (nofollow) |
| External | 4 | help.example-shop.com (subdomain), web.dev, a sponsored CDN link, a ugc comment link |
| JavaScript / email | 1 + 1 | javascript:void(0) "ask us a question"; a mailto address |
| nofollow / sponsored / ugc | 3 | sponsored; ugc nofollow; nofollow on an internal link (flagged) |
| No anchor text | 2 | The logo link and the "next post" image link, both images with no alt text |
| Generic anchor | 1 | "Click here" pointing to the Core Web Vitals checklist |
TapCub would record 4 outbound clicks (the subdomain, web.dev, the CDN and the comment link) and 1 download (the PDF) on this page without any extra tagging.
Link problems that hide in plain sight
Most of these look fine in the browser and only show up in the source.
Image links without alt
Logos and banner images used as links often have no alt, which leaves the link with no text at all for Google and screen readers.
Buttons pretending to be links
<a onclick> without href, <span> with a click handler, javascript: URLs. They work for a mouse user but are not crawlable links.
nofollow on everything
Adding nofollow to every external link, or to your own pages, isn't what Google recommends. Use sponsored and ugc where they fit, nofollow only for sources you don't trust.
"Click here" everywhere
Generic anchors tell neither readers nor Google what is behind the link. Put the subject of the target page into the link text.
From the links on a page to the clicks they get
The extractor shows what a page links to. TapCub shows which of those links people actually click, with no tagging work.
Outbound clicks and downloads
Recorded automatically by the same script as page views: clicks to other hostnames and to files such as PDFs, per page.
Learn more404s with their source
Broken internal links show up as 404 visits together with the page that sent people there.
Learn moreReferral sources
The other side of external links: which sites link to you and send visitors.
Learn moreLink extractor questions
Still have a question?
Chat with the team behind TapCub — we usually reply within a few hours on business days.
How do I extract all links from a web page?
View the page source (Ctrl+U), copy it and paste it into the box above with the page URL. Every <a href> and <area href> is listed with its full URL, anchor text, type and rel value, and you can download the list as CSV.
How do I check whether a link is nofollow?
Look at the rel column, or set the filter to "nofollow / sponsored / ugc". The rel attribute is read as Google reads it: values separated by spaces or commas, case ignored.
What is the difference between nofollow, sponsored and ugc?
Google asks for sponsored on paid or advertising links, ugc on links in user content such as comments and forums, and nofollow when neither applies and you don't want your site associated with the target. You can combine them, for example rel="ugc nofollow".
Should I nofollow external links?
Not by default. Google's link guidance says linking to other sites is fine and that nofollow is for sources you don't trust, not for every external link. Paid links should be marked sponsored.
Can it extract URLs from plain text?
Yes. If the input has no HTML tags, the tool scans it for http(s):// and www. addresses, removes trailing punctuation, merges duplicates and shows how often each appears.
Why is a subdomain counted as external?
A subdomain is a different hostname: it may be a separate app, help center or shop system, and TapCub records clicks to another hostname, subdomains included, as outbound clicks. The table labels them "Subdomain" so you can tell them apart from third-party sites.
Does it check whether the links work?
No. It reads your HTML and does not request any URL, so it cannot see status codes. For redirects you are planning, the redirect rule generator turns an old → new list into server rules.
Is my HTML uploaded?
No. Everything runs in your browser. The HTML, the page URL and the CSV stay on your device.
Update history
New features, fixes and data refreshes for this tool, newest first.
-
· v1.0
LaunchedFirst release.
Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates
See which links people click
Add TapCub to the page and outbound clicks and downloads are recorded from the first visit, with no tagging work.