Two stages have completely different costs. DNS lookups are cached per domain, so ten thousand addresses across four hundred domains means four hundred queries, and that part is close to instant.
The SMTP stage is where time goes. Each conversation is a network round trip to a third-party server, run in parallel across many domains but limited per domain, because hammering one host is what triggers the throttling that ruins the answers.
Microsoft throttles repeated connections deliberately and slowing down produces better results than pushing through. A verifier that ignores this returns faster and returns more unresolved addresses, which is a trade being made on your behalf.
So treat speed claims with the same scepticism as accuracy claims, and for the same reason. The fastest way to finish a run is to stop retrying temporary failures and to guess at catch-all domains, and both choices improve the timing while degrading the result.
The question worth asking a vendor is what they do when a server asks them to wait. Waiting is slower and correct.
Two lists of 50,000 that finish hours apart
Say list A is a consumer list: 50,000 addresses across 1,200 domains, with most of them at five big mailbox providers. List B is a business list of the same size, spread across 31,000 company domains. They have the same row count, and the jobs have almost nothing else in common.
List A needs 1,200 domain lookups and talks mostly to a few giant mail systems. For list B the count is 31,000 lookups, and every company mail server is a stranger with its own habits. Some answer in a fraction of a second. Others greylist, which means they refuse the first try and expect you back after a wait that's often five minutes or more.
So list B has a long tail. The first 90% of its answers can arrive quickly while the last few percent trickle in, waiting on servers that asked for patience. Cutting the tail off makes the job look faster and turns real answers into unknowns.
Plan around the tail, and what to ask about it
The expensive mistake is scheduling the campaign for the hour after the upload. When the job runs long, someone cancels it at 90% and mails the unchecked rest, and the hardest addresses go out unverified. Submit the list the day before. A finished job that waits overnight costs you nothing.
Partial results help if you use them well. Start building segments from the verdicts that are already in, and leave the send until the job completes.
Ask a vendor three things about speed. What happens when a server returns a temporary refusal? How many times do they retry, and across how long? And is there a setting that trades coverage for speed, with a default you should know about?
We haven't published a throughput figure of our own, and won't until it comes with a description of the list behind it. A speed quoted alone deserves the same doubt as an accuracy figure quoted alone.
Related questions
What determines bulk verification speed?
The domain mix. Throttling providers set the pace, and respecting their limits produces better answers than ignoring them.
Is a faster verifier a better one?
Not necessarily. Skipping retries and guessing at catch-all domains both speed up a run and degrade the result.
Does list size change the speed per address?
Larger lists usually verify faster per address, because DNS results are cached per domain across the whole run.
Can I verify while a run is in progress?
Results stream as they complete, so partial output is available before the whole job finishes.