E-mail addresses and URLs test values

Addresses that are formally valid but extreme, and ones that only look valid. 12 values, each with what it breaks and what a correct application does instead.

emails-urls version 1.0, updated 2026-10-14 CC-BY-4.0

Type them one at a time with AltShiftN in the palette, or take them all into a script with nkb emit emails-urls.

Plus tag in the local part

emails-urls/plus-tag
jan+test@example.com jan+test@example.com
  • 20 graphemes
  • 20 code points
  • 20 bytes
  • 20 UTF-16 units
What it breaks
A perfectly valid address rejected by a surprising number of forms, which breaks the tagging people rely on.
What a correct application does
Accepted; the plus sign is a legal character in the local part.

Uppercase local part

emails-urls/uppercase-local
JAN@example.com JAN@example.com
  • 15 graphemes
  • 15 code points
  • 15 bytes
  • 15 UTF-16 units
What it breaks
The local part is case-sensitive in principle and treated as case-insensitive in practice; uniqueness checks disagree between layers.
What a correct application does
One consistent rule, applied at sign-up and at sign-in alike.

Internationalised domain

emails-urls/unicode-domain
jan@zażółć.example jan@zażółć.example
  • 18 graphemes
  • 18 code points
  • 22 bytes
  • 18 UTF-16 units
What it breaks
Internationalised domains must be converted before use; a form that skips this rejects legitimate addresses.
What a correct application does
Accepted and converted, or rejected with a message that says why.

Two at signs

emails-urls/double-at
jan@@example.com jan@@example.com
  • 16 graphemes
  • 16 code points
  • 16 bytes
  • 16 UTF-16 units
What it breaks
The shortest invalid address that many simple validators accept.
What a correct application does
Rejected.

Address without an at sign

emails-urls/no-at
jan.example.com jan.example.com
  • 15 graphemes
  • 15 code points
  • 15 bytes
  • 15 UTF-16 units
What it breaks
A domain typed into an e-mail field; accepted by validators that only check for a dot.
What a correct application does
Rejected.

Trailing dot after the domain

emails-urls/trailing-dot-domain
jan@example.com. jan@example.com.
  • 16 graphemes
  • 16 code points
  • 16 bytes
  • 16 UTF-16 units
What it breaks
A trailing dot is technically valid in a domain name and rejected by nearly every form.
What a correct application does
Accepted and normalised, or rejected consistently.

Local part of 64 characters

emails-urls/very-long-local
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com
  • 76 graphemes
  • 76 code points
  • 76 bytes
  • 76 UTF-16 units
What it breaks
The boundary of the local part length; one character more must be rejected.
What a correct application does
The limit enforced with a message, not by truncation.

Quoted local part with a space

emails-urls/quoted-local
"jankowalski"@example.com "jan kowalski"@example.com
  • 26 graphemes
  • 26 code points
  • 26 bytes
  • 26 UTF-16 units
What it breaks
A quoted local part containing a space is legal and almost never handled.
What a correct application does
Accepted, or rejected with a message stating the supported subset.

Link without a scheme

emails-urls/url-no-scheme
example.com example.com
  • 11 graphemes
  • 11 code points
  • 11 bytes
  • 11 UTF-16 units
What it breaks
A link typed the way people type links; storing it without a scheme produces a broken link everywhere it is used.
What a correct application does
Normalised with a scheme, or rejected with an example of the expected form.

Link with credentials

emails-urls/url-with-credentials
https://user:pass@example.com https://user:pass@example.com
  • 29 graphemes
  • 29 code points
  • 29 bytes
  • 29 UTF-16 units
What it breaks
A URL carrying credentials; displaying it anywhere reveals them, and storing it keeps them.
What a correct application does
Rejected, or stored with the credentials stripped and the user told.

Link of 2000 characters

emails-urls/url-very-long
https://example.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2,000 code points in all, cut in the middle https://example.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  • 2,000 graphemes
  • 2,000 code points
  • 2,000 bytes
  • 2,000 UTF-16 units
What it breaks
Long links break storage limits, logs and every column that displays them.
What a correct application does
Accepted up to a stated limit, and truncated for display only.

Link with a non-ASCII path

emails-urls/url-unicode-path
https://example.com/zażółć https://example.com/zażółć
  • 26 graphemes
  • 26 code points
  • 30 bytes
  • 26 UTF-16 units
What it breaks
Non-ASCII paths must be encoded; a layer that skips it produces links that work in one place and not another.
What a correct application does
Encoded once and consistently; the link works after a round trip.