Domain Extractor — Pull Domains From Any Text, Free & Local
Extract every domain, subdomain, and IP address from pasted text, URLs, or a CSV file. Dedupe, count, and export as TXT, CSV, or JSON — 100% in your browser, nothing uploaded.
What it does
Paste in anything — a block of text, a list of URLs, log lines, an email export, a CSV column — and the domain extractor pulls out every domain it can find: full URLs, email domains, and bare hostnames mentioned in passing. It deduplicates the results, counts how often each one appears, and separates out IP addresses so they don’t get mixed in with real domains.
How it works
The extractor runs three passes over your text: first it pulls out full URLs and strips them down to just the hostname (dropping the path, query string, port, and any login info in the URL). Then it scans for email addresses and keeps just the domain half. Finally it looks for bare domain-looking text that wasn’t already covered — things like “see acme.com for details” with no http:// in front.
Every match is checked against a TLD list before it’s shown, so a stray “index.html” or a version number like “v2.0.1” doesn’t get mistaken for a real domain — those get filtered out by default. You can still see them under “Show them” if you want to catch a rare TLD that isn’t on the list.
Domains can be shown two ways: full hostname (keeps subdomains, e.g. sub.example.co.uk) or apex domain (collapses to the registrable domain, e.g. example.co.uk). Apex mode uses a small embedded public-suffix list so two-part country-code domains like .co.uk or .com.au collapse correctly instead of getting cut at the wrong point.
How to use it
- Paste your text into the box, or drop a
.txtor.csvfile onto it. - Pick apex domain or full hostname depending on whether you want subdomains kept.
- Optionally strip
www., include unrecognized TLDs, or exclude common third-party domains (Google, Facebook, GitHub, etc.) to cut noise. - Review the results table — click a column header to sort by name or by count.
- Copy the list, or download it as
.txt,.csv, or.json.
If you’re pulling domains out of raw page HTML rather than plain text, running it through the email link extractor first can help isolate the mailto/href content before you paste it in here.
Supported input
Plain text, pasted URLs, email addresses, and IPv4/IPv6 addresses (shown separately, since they’re not domains). If your source is a messy CSV export, cleaning it up first with the CSV cleaner can make the results easier to scan.
Limitations
- The TLD list is a curated set of common gTLDs, ccTLDs, and popular new gTLDs — not the full, constantly-changing IANA registry. A genuinely obscure or brand-new TLD may show up under “unrecognized” rather than the main list.
- IDN (internationalized) domains in their unicode form are matched, but punycode (
xn--...) domains are recognized structurally rather than validated against a live registry. - This runs entirely client-side, so extremely large pastes (multiple megabytes of text) may take a moment to process.
FAQ
Does this send my text anywhere? No — everything happens in your browser. Nothing you paste or upload leaves your device.
Why did it skip “index.html” or “app.js”? Those aren’t real domains — they just look like one (a word, a dot, a short suffix). The extractor filters out unrecognized suffixes by default so filenames and version numbers don’t clutter your results. You can turn that filter off if you want to see everything it matched.
What’s the difference between “apex domain” and “full hostname” mode? Full hostname keeps the whole thing, including subdomains — blog.example.com stays blog.example.com. Apex domain collapses it to the registrable domain — blog.example.com becomes example.com. Apex mode is usually what you want when you’re counting how many unique organizations are mentioned, rather than how many individual subdomains.
Can I extract domains from a spreadsheet? Yes — export the relevant column as CSV or paste it directly into the text box; the extractor doesn’t care about column structure, it just scans the whole text.
Does it handle IP addresses? Yes, but it keeps them separate from domains since an IP isn’t a domain name — you’ll see them in their own list below the main results.
Why is a domain showing up more than once with different counts? Case and formatting are normalized (uppercase and lowercase versions of the same domain are merged), but full-hostname mode intentionally keeps different subdomains separate since they may point to different services.