Best Practice

How to Clean Your Email List and Reduce Bounce Rate to Under 2%

July 6, 2025 · 7 min read

A high bounce rate is one of the fastest ways to destroy your email sender reputation. Once Gmail or Yahoo marks you as a spam sender, your emails go straight to junk — even for your most engaged subscribers.

The good news: with proper list cleaning using an email verification API, you can get your bounce rate under 2% and keep it there.

5%+
Bounce rate that triggers blacklisting
<2%
Industry safe threshold
$9
Cost to verify 1,000 emails

Step 1 — Export Your Email List

Export your subscriber list as a CSV or plain text file with one email per line. Most email marketing platforms (Mailchimp, Klaviyo, SendGrid) have an export button in the audience settings.

Step 2 — Verify in Bulk via API

Use the CheckMail1 batch API to verify up to 10 emails per request. Here's a Python script to process a full list:

import requests, csv, time

API_KEY = "mvp_your_api_key"
INPUT_FILE = "subscribers.csv"
OUTPUT_FILE = "cleaned_subscribers.csv"

def verify_batch(emails):
    resp = requests.post(
        "https://checkmail1.com/api/verify/batch",
        json={"emails": emails},
        headers={"X-API-Key": API_KEY}
    )
    return resp.json().get("results", [])

# Read emails
with open(INPUT_FILE) as f:
    all_emails = [row[0].strip() for row in csv.reader(f) if row]

valid_emails = []
invalid_emails = []

# Process in batches of 10
for i in range(0, len(all_emails), 10):
    batch = all_emails[i:i+10]
    results = verify_batch(batch)

    for r in results:
        if r["status"] == "valid":
            valid_emails.append(r["email"])
        else:
            invalid_emails.append(r["email"])

    print(f"Progress: {min(i+10, len(all_emails))}/{len(all_emails)}")
    time.sleep(0.5)  # Be respectful to the API

# Save clean list
with open(OUTPUT_FILE, "w") as f:
    for email in valid_emails:
        f.write(email + "\n")

print(f"Done! Valid: {len(valid_emails)}, Removed: {len(invalid_emails)}")

Step 3 — Understand the Results

For each email you'll get one of these statuses:

Step 4 — What to Do With Each Status

Step 5 — Verify New Signups in Real Time

Once your list is clean, keep it clean by verifying emails at the point of signup. Add this to your registration form backend:

// Node.js example — verify on signup
async function validateEmailOnSignup(email) {
  const res = await fetch(
    `https://checkmail1.com/api/verify?email=${encodeURIComponent(email)}`,
    { headers: { 'X-API-Key': 'mvp_your_key' } }
  );
  const data = await res.json();

  if (data.status === 'invalid' || data.score < 30) {
    throw new Error('Invalid email address');
  }
  return true;
}

How Often Should You Clean Your List?

Start Cleaning Your List

100 free verifications to start. $9 for 1,000 — the cheapest way to protect your sender reputation.

Get Free Credits →