.html file.Download the full results or copy a summary to share.
The standalone HTML report is self-contained — it can be opened directly from disk under file://.
Lottie Website Tester crawls a website starting from a URL you provide, recording the HTTP status code, page weight, load time, redirects, mixed-content issues, and broken subresources for every page it visits. Everything runs in your browser; no data is sent anywhere.
Because browsers enforce same-origin restrictions, you must upload this .html file somewhere on the website you want to test. It can live in any folder — for example https://yoursite.com/website-tester.html, https://yoursite.com/tools/website-tester.html, or https://yoursite.com/private/admin/tester.html. Just visit that URL in your browser. Opening the file directly with file:// will not work — see the banner at the top.
The tool will only crawl pages within the same registrable domain (e.g. example.com, including subdomains like blog.example.com). Cross-subdomain requests are technically cross-origin and will show with reduced detail (status appears as "opaque"); same-origin requests show full results.
If you want to test the tool against a local copy of a site, pick whichever of these is easiest on your machine. Run it inside the directory that contains your site files (and this HTML), then open the printed URL.
# Python 3 (built in to macOS and most Linux distros)
python3 -m http.server 8000
# Python 2 (legacy)
python -m SimpleHTTPServer 8000
# PHP (built in)
php -S localhost:8000
# Node.js — no install needed if you have npx
npx serve
# or
npx http-server -p 8000
# Ruby (built in to macOS)
ruby -run -e httpd . -p 8000
# Busybox (Alpine, embedded systems)
busybox httpd -f -p 8000
# Caddy
caddy file-server --listen :8000
If you use VS Code, the Live Server extension does the same thing with a click. After the server is running, visit http://localhost:8000/website-tester.html.
When a page is loaded from a file:// URL, browsers refuse most fetch() requests for security reasons. A real HTTP server gives the page a proper origin that the network stack understands, which lets the crawler do its job.
The page to begin crawling from. Defaults to the root of the site this tool is hosted on. Must use http or https.
Hard upper bound on how many URLs the crawler will check. Stops the queue from running away on huge sites.
How many link hops from the start URL the crawler will follow. The start URL is depth 0. Subresources do not count toward depth.
How many requests are in flight at once. Higher numbers crawl faster but put more load on the server. Most shared hosting handles 2–4 cleanly; bump to 8+ on infrastructure you control.
Each worker waits this long before issuing its next request, on top of the natural request duration. Use this to be polite — a slow crawl is a friendly crawl.
If a request hasn't finished within this many milliseconds, it's aborted and recorded as a timeout error.
JavaScript regular expressions, one per line. A URL must match at least one include pattern (if any are set) and must not match any exclude pattern, to be crawled.
robots.txtFetches /robots.txt from the start URL's origin and skips any path your User-Agent is disallowed from. Strongly recommended.
For every HTML page found, also check that its <img>, <link>, <script>, and <source> URLs return 200. Broken assets appear in the Subresources tab and contribute to the page-weight total of their first-seen parent.
If the start URL uses HTTPS, the tool flags any HTTP resource it finds. Mixed content is blocked by modern browsers and reported as a security concern.
Off by default. When enabled, the tool sends a no-cors request to off-domain links. Browsers will hide the actual status code (you'll see "opaque"), but reachable vs unreachable will be observable.
The tool can't actually override the browser's User-Agent request header (browsers forbid that), but this string is sent as a request header named X-Crawler-UA and is also used when matching robots.txt rules.
Pause freezes the worker loop while letting in-flight requests finish. Resume picks up where you left off. Stop aborts everything and freezes the results so you can still export them.
.html file with the results baked in. No crawler, no config — read-only and shareable. Opens under file://.fetch() from a browser, so it inherits browser CORS rules. Same-origin = full info; cross-origin = limited info.