---
title: "Test Clerk verification codes and email links · Proxy Mail QA"
description: "Test Clerk's sign-up codes, email links and password resets with real inboxes, beyond +clerk_test addresses, and the development instance's email cap."
url: https://proxymail.qa/auth/clerk
---

1. [Home](https://proxymail.qa/)
2. [Auth providers](https://proxymail.qa/auth)

# Test Clerk emails

Clerk emails a verification code (or a link) at sign-up and sign-in, and a code to reset a password. Its test mode lets +clerk\_test addresses skip the email with the code 424242, which is quick but never tests the email itself. To check what users actually get, sign up with a fresh Proxy Mail QA address: the code or link shows up on its row.

Updated October 17, 2026

Details below are from Clerk’s documentation on 17 October 2026\. Check it for current details.

## What Clerk sends

- **Sign-up verification:** a code, or a link if you choose email links.
- **Sign-in:** a code or a link, when email sign-in is on.
- **Password reset:** a code.
- **Invitations:** a link, for organisation and app invitations.

## Test mode skips the email

Development instances have **test mode** on: any address with `+clerk_test` (such as `jane+clerk_test@example.com`) verifies with the code `424242`, and no code email is sent. That keeps tests fast, but nothing checks the email your users get: whether it arrives, its sender, its wording, or that the code in it works.

Development instances also cap Clerk-delivered email at **100 a month**. Once it’s reached, sign-ups that need a code fail.

## Test it by hand

1. Create an address in Proxy Mail QA, with a persona and password if your sign-up asks for them.
2. Sign up in your app with it.
3. The code appears on the address’s row within seconds, with a countdown when the email says how long it lasts. Copy it into the form.

## Automate it

signup.spec.ts

```ts
import { test, expect } from 'proxymail-qa/playwright';

test('Clerk sign-up sends a working code', async ({ page, qa }) => {
  const { address, password } = await qa.createAddress({ persona: true, password: true });
  const submitted = new Date();
  await page.goto('/sign-up');
  await page.getByLabel('Email address').fill(address);
  await page.getByLabel('Password').fill(password);
  await page.getByRole('button', { name: 'Continue' }).click();

  const { value } = await qa.waitForCode(address, { since: submitted });
  await page.getByLabel('Enter verification code').fill(value);
  await expect(page).toHaveURL(/dashboard/);
});

```

Match the labels to your sign-up page. Each sign-up uses one email from the development cap, so keep the +clerk\_test addresses for the bulk of your suite and a real inbox for the tests about the email. More in [Test sign-up emails in Playwright](https://proxymail.qa/solve/playwright-email-tests).

## Try it on your next sign-up test

Free plan, no credit card. Create an address and watch the code or link arrive.

[Create a free account](https://app.proxymail.qa/?mode=signup)

## Questions

### Should I use +clerk\_test addresses or a real inbox?

Both, for different things. +clerk\_test addresses with 424242 test your app's flow without sending a code. A real inbox tests the email: that it arrives, from the right sender, with a code that works and wording that makes sense.

### Why did my Clerk development instance stop sending emails?

Clerk's docs say a development instance delivers up to 100 emails a calendar month; after that, requests that would email a code are rejected. Emails to +clerk\_test addresses and apps on a paid plan don't count, and Clerk support can raise it.

### Does Clerk send a code or a link?

A code by default; you can choose email links instead. Clerk's own testing docs suggest codes for end-to-end tests, as links are harder to automate. Proxy Mail QA handles both: waitForCode and waitForLink return them on their own.

## Related guides

- [Supabase AuthConfirmation, magic-link, code and reset emails, and why the default sender won't email your test addresses.](https://proxymail.qa/auth/supabase)
- [Auth0Verification links, passwordless codes and resets, and the built-in email provider's limits.](https://proxymail.qa/auth/auth0)
- [Firebase AuthenticationVerification, reset and email-link sign-in emails on the web, and the daily sending limits.](https://proxymail.qa/auth/firebase)
- [Auth.js (NextAuth)Magic-link sign-in through your own email provider, its expiry, and what stops the email arriving.](https://proxymail.qa/auth/authjs)
- [Better AuthVerification, reset, magic-link and email OTP emails through your own provider, and their short expiry.](https://proxymail.qa/auth/better-auth)

[See every email testing problem we solve](https://proxymail.qa/solve)

Clerk is a trademark of its owner. Proxy Mail QA is independent and isn't affiliated with or endorsed by them.
