A Teams meeting join link is the absolute URL that points at teams.microsoft.com (or the meeting.lync.com, outlook.office.com or outlook.live.com domain that hosts the invitation), and it almost always lives inside the href attribute of an anchor element in the HTML source you copied from an email, calendar invite or intranet page. The Link Extractor is a browser-based source parser that scans a, area and link start tags for href values, normalizes the targets, deduplicates them in first-seen order and returns one clean URL per line so you can copy the exact join address without retyping it. Because every URL is shown one per line, you can paste the result into a chat, a runbook or a spreadsheet column for a verified audit of which meeting invitations actually contain a usable link.

get link for teams meeting
Get the Link for a Teams Meeting From HTML Source

When you view the source of a meeting invitation email or a calendar event page in Outlook or Teams on the web, the join URL is rendered as an ordinary anchor such as <a href="https://teams.microsoft.com/l/meetup-join/19%3ameeting_xxxxx">Join the meeting</a>. The href is what the browser actually opens when the recipient clicks the button, so the join address is recoverable from the raw HTML even when the rendered link text says only "Join Microsoft Teams Meeting". A second copy frequently sits inside an area element on an image map, and a third copy may be attached as a link element with a relationship such as canonical, stylesheet or alternate.

Calendar bodies also store the URL as a plain string inside an href attribute, sometimes with HTML entity encoding such as &amp; for the ampersand that separates query arguments. Relative paths such as /meet/abc123 can show up when the invitation is rendered through an internal SharePoint page or a custom portal, in which case the host is implied by the page URL rather than written into the source. Knowing where to look explains why copying the source and scanning it for href values is more reliable than reading the rendered page or searching the DOM by eye.

The Link Extractor is a bounded source parser that runs entirely in your browser. It removes HTML comments and common raw-text containers such as script, style, textarea, title, iframe, noembed and noframes before scanning so that strings that merely look like anchor markup inside JavaScript or literal text are not turned into false links. It then matches href attributes on a, area and link start tags, decodes a small bounded set of HTML character references (decimal, hexadecimal, plus the named entities amp, quot, apos, lt and gt) and resolves each value into a normalized target.

When you supply an absolute HTTP or HTTPS base URL, root-relative, path-relative, parent-relative and scheme-relative hrefs are resolved against that base using the standard browser URL model. So /l/meetup-join/abc under https://example.com/calendar becomes an absolute URL on example.com rather than staying as a path that the clipboard cannot open. Without a base URL the tool keeps relative values relative and never invents a host. Absolute HTTP, HTTPS, mailto and tel values are normalized directly; empty values, same-document fragments and executable or embedded-data schemes (javascript, data, vbscript) are skipped and counted in the skipped total so an apparently short list does not hide the filtering decision.

Mail and telephone targets are retained because they are legitimate link destinations even though they are not web pages, which is useful for invitations that mix a Teams join URL with a dial-in number. Duplicates are removed after normalization, two identical relative hrefs that resolve to the same absolute URL become a single entry, and the first-seen order is preserved so the list reflects the order in which the source presented them. The parser does not request any of the listed destinations, which keeps the workflow safe for invitations you are authorized to inspect but should not silently contact.

  1. Copy the HTML source of the invitation page or email you want to extract from. In Outlook desktop, use View Source from the developer ribbon, or in Outlook on the web use View message source. In Teams on the web, right-click the meeting details page and choose View page source. Save or paste that source into a plain-text buffer.
  2. Open the Link Extractor and paste the captured HTML into the source field. The tool accepts up to 200,000 characters in a single scan; very large documents should be split or handled with a controlled crawler instead.
  3. If the invitation page is hosted on a known absolute address, enter that page URL in the optional base URL field. For example, paste the calendar address https://outlook.office.com/calendar/item/... so that any relative href inside the meeting body resolves to the real host. The base must be HTTP or HTTPS and cannot contain user credentials.
  4. Run the extraction. The tool will return the unique target list, the duplicate count and the skipped count. Review the unique count to confirm at least one Teams join URL is present, the duplicate count to see how many repeated hrefs were collapsed, and the skipped count to confirm that empty, fragment and executable-scheme values were filtered out as expected.
  5. Copy the resulting one-per-line list to your clipboard for the next step in your workflow, whether that is a verification check, an audit log or a hand-off to an authorized crawler.

Reading the unique, duplicate and skipped counts

The three counters that appear next to the result list are the simplest way to confirm that the extraction behaved the way you expected. The unique count is the number of distinct targets after deduplication; for a meeting invitation that should normally include at least one Teams join URL plus, in many cases, an Outlook web link, an audio conference dial-in number and a one-click join URL. The duplicate count tells you how many hrefs collapsed into a single entry. A duplicate count that is larger than zero is normal for an Outlook invitation because the same join URL is typically repeated in the body and inside the meeting header.

The skipped count is the most informative of the three because it surfaces the filter decision instead of hiding it. A non-zero skipped count almost always means the source contained some empty values, same-document fragments, javascript or vbscript pseudo-links, or invalid absolute URLs. None of those should worry you; they are filtered by design. If the skipped count contains a number that looks unexpectedly large relative to the unique count, open the source and confirm that you did not accidentally paste a CSS or JavaScript block before the body, because unstripped raw text can produce false href candidates.

CountWhat it representsWhat to check
UniqueDistinct href values after normalization and deduplicationAt least one absolute Teams or Outlook join URL is present
Duplicatehrefs that collapsed into an already-listed targetOutlook invitations commonly produce a non-zero count
SkippedEmpty values, fragments, executable schemes and invalid URLsNon-zero is normal; an unusually large value may indicate raw text was pasted in

Verifying and using the extracted join URL

The output of the Link Extractor is a source inventory, not a health report. A listed join URL may still redirect, require authentication, be blocked by tenant policy, return a 404 if the organizer cancelled the event, or intentionally point off-tenant. For a meeting you control, copy the absolute Teams join URL from the list and paste it into a private browser window to confirm it loads the meeting lobby. For a meeting you only audit, hand the list to an authorized crawler that can check HTTP status, redirect chains, the meaning of the rel attribute on each link and any dynamic DOM links that the static source did not contain.

Once the link is verified, drop it into the channel where attendees are waiting, your runbook or a spreadsheet column for traceability. Because the tool never runs JavaScript, dynamic hrefs that the meeting page inserts after scripts execute will not appear in the list; if your organization hydrates the join URL client-side, capture a rendered DOM export in addition to the static source before relying on the result. For larger source inventories or for an SEO or migration audit, compare the original source, a browser DOM export and a real crawler rather than trusting one extraction channel alone.

For a refresher on how the base URL field changes relative hrefs into absolute addresses, see Extract Links From HTML: Source, Base URL, and Counts. The same parser mechanics apply whether the link you are after is a Teams join URL, a SharePoint document or a stylesheet reference, and the counts behave the same way across those use cases.

If you're weighing options, Plan a JSON-LD Checker Run Before You Paste HTML covers this in detail.