This site tests how well crawlers handle progressively harder JavaScript rendering challenges. Each tier adds complexity, from fully static HTML to single-page applications with pushState routing.
Page shell is static; content is fetched via JS on page load and injected into the DOM.
/fetch-loaded
Content is hidden behind a button click that triggers a fetch request.
/click-reveal
Content requires 3 sequential button clicks, each fetching the next piece of data.
/multi-step
Single-page application with hash-based routing (#/page1, #/page2, #/page3).
/spa
Single-page application using the History API (pushState) for clean URLs.
/spa-push