Three places declare your encoding.
One disagrees.

The HTTP header, a byte-order mark, and the <meta charset> tag — every page carries at least two of them. When they contradict, the browser picks one winner. You stare at ’ and check your meta tag a third time.

Check a URL See pricing

What Charsetlint shows you

Three declarations, side by side — Reports the encoding stated in each place a browser checks — header, BOM, and meta tag — in the order the browser reads them.
The contradiction, named directly — Tells you exactly which pair disagrees and which declaration wins per the HTML spec. No editorializing — just the mismatch.
Mojibake indicators — Flags the two shapes that produce ’ for an apostrophe: UTF-8 bytes served as latin-1, and a meta tag past byte 1024 where the parser already stopped looking.
Raw HTML snippet — See the relevant section of the page source around the meta declaration — no need to open DevTools.
Known limitation: Charsetlint cannot reach a URL that is itself hosted behind Cloudflare (the platform will not open a connection back into its own network). When testing, use a host that is not Cloudflare-fronted, such as github.com or wikipedia.org.

How it works

  1. Paste a URL

    Any HTTP or HTTPS page you want to check. The tool fetches it server-side — no same-origin limits to worry about.

  2. Wait <1 second

    The worker reads the Content-Type header, scans the first few bytes for a BOM, and parses the first 4096 bytes for a <meta charset> declaration.

  3. Read the diagnosis

    Three declarations, one winner, the reason it wins, and any contradictions or mojibake indicators. Exactly what a developer needs to find the liar.

Diagnose your encoding mismatch

One URL, one result, one unambiguous answer.

Go to the tool