You've received a raw data export — a mix of names, phone numbers, email addresses, addresses, and other junk. You need just the emails. Here's how to extract them cleanly.

Method 1: Online Filter (Line-by-Line)

If your data is already one item per line (even if mixed), remove-lines.com's Emails Only filter keeps only lines that match a valid email pattern. Enable it and click Process — non-email lines are removed automatically.

Filter emails from your list

Enable "Emails Only" — all non-email lines are removed instantly.

Filter my list →

Method 2: Extract Emails from Freeform Text (Python)

If your data isn't line-by-line (it's a paragraph of text), you need regex extraction:

import re

with open('input.txt') as f:
    text = f.read()

email_pattern = r'[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}'
emails = re.findall(email_pattern, text)

# Deduplicate
unique_emails = list(dict.fromkeys(e.lower() for e in emails))

with open('emails.txt', 'w') as f:
    f.write('\n'.join(unique_emails))

What Counts as a Valid Email?

The pattern something@something.something catches the vast majority of real email addresses. True RFC 5322 validation is far more complex but rarely needed in practice. The pattern above will catch occasional false positives like version numbers (1.2@3.4) but miss none of the real emails.

Strip Email Domains

After filtering for emails, you might want just the usernames (the part before @). remove-lines.com's Strip Domain option does this in one click. Useful for creating username lists or anonymising data.

Validate vs Filter

Filtering (what we've covered) checks that an address looks like an email. Validation checks it is a real, deliverable email (via SMTP or DNS lookup). Validation requires an API and is more expensive — filter first, validate later if needed for high-stakes campaigns.