All tools

Paste a URL and see how its h1 reads to something that never runs the JavaScript. Catches split-text animations that shred a headline into loose letters.

URL checks fetch the public page on the server. The HTML playground runs entirely in this browser; pasted source is never uploaded.

Try it on your HTML

Paste a heading or a page's source. Nothing is uploaded and pasted code is never executed.

Up to 100,000 characters. This checks source HTML, not a rendered page.

Fragmented

Visible text model

Build something worth reading

Extracted text model

B u i l d s o m e t h i n g w o r t h r e a d i n g

The heading is built out of pieces. A browser reassembles it and something that strips tags out of the HTML does not, so the strongest string on the page arrives as loose letters.

Start with a readable heading

Send one whole heading in the server HTML. If you animate individual letters, replace the visible layer only after the page mounts, and keep the complete accessible name.

<h1>Build something worth reading</h1>

Why this is worth ten seconds

Split a headline into one element per letter and a browser still paints the word. Plenty of the machinery that reads the web does not run a browser: link unfurlers, feed readers, archivers, and the fetchers behind AI answer engines. A good number of those strip the tags, normalise the whitespace, and hand the result to something else. That turns your best string into confetti, and nobody sends you a report about it.

I found this on my own site, which is the only reason I trust it enough to write a tool about it. The homepage name animated one character at a time and extracted as loose letters. It came out of building a CRT that behaves like a CRT, which is where the same warning sits at the end.

Can't see

Method and limitations
  • Your stylesheet. It reads the served HTML and the style attributes in it, so a class that sets display:inline-block is invisible to it. One element per character is the signal that survives that.
  • Anything JavaScript renders after load. If the heading arrives from a script, the served HTML has no h1 and that is what it reports.
  • Pages behind a login. It fetches as a stranger with no cookies, so whatever a visitor has to sign in for is out of reach.