Free tools Windows power users keep installed
One-click scans. No signup required.
TTFB is the time from the start of a page navigation until the browser begins receiving the response’s first byte. To check it in your own browser, read the Navigation Timing API’s responseStart value; for repeatable comparisons, use the same URL, test location, cache conditions, and measurement method. A high TTFB is a clue to investigate, not proof that the server alone is slow or that the whole page loads poorly.
What TTFB measures
Time to First Byte (TTFB) measures the elapsed time from the start of a navigation request until the first response byte begins to arrive. It covers more than application processing: depending on the request and measurement, the total may include redirects, service-worker startup, DNS lookup, connection and TLS negotiation, and the time from sending the request until the response begins.
That makes TTFB useful as an early signal, but not a direct stopwatch for server execution. One slow reading does not identify whether the delay came from the network path, connection setup, a redirect, or work at the origin. Inspect the timing breakdown and compare controlled runs before deciding what to change.
TTFB also stops before the browser has received or rendered the full page. It is not a measure of total load time, interactivity, or visual completeness.
#1 Best Overall
How to check your TTFB in a browser
For a navigation you have just made, the browser’s Navigation Timing API exposes the response start timestamp. In the console, run:
const nav = performance.getEntriesByType('navigation')[0];
if (nav) {
console.log(`TTFB: ${(nav.responseStart - nav.startTime).toFixed(0)} ms`);
}
For a navigation entry, startTime is normally zero, so responseStart gives the elapsed time in milliseconds. The subtraction is explicit because it makes the calculation clear and avoids assuming that every kind of performance entry starts at zero. Run this on the page whose navigation you want to inspect; it does not measure a fresh request to an arbitrary URL.
Measure a new visit in Chrome DevTools
- Open the target page in Chrome.
- Open DevTools and select the Network panel.
- Reload the page with the panel open, then select the main document request.
- Inspect its timing details. The request’s phases help show whether delay occurred during connection setup, redirects, or waiting for the response.
Exact labels and presentation can vary by browser version. DevTools is helpful for diagnosing one browser’s navigation, but its reading depends on that browser’s location, connection reuse, cache state, and the page’s redirects.
Check a resource request instead
The Resource Timing API can expose timing entries for subresources such as scripts and images. This is not the same context as the main navigation’s TTFB: an individual resource may use another connection or cache path. Cross-origin resources may also withhold timing details unless the server grants access using the Timing-Allow-Origin response header. For cached resources, responseStart can be zero.
const resources = performance.getEntriesByType('resource');
console.table(resources.map((entry) => ({
name: entry.name,
responseStart: entry.responseStart,
duration: entry.duration
})));
Use the resource list to investigate a particular request, not as a replacement for the document navigation’s value.
Rank #2
Online and field testing options
For a one-off browser reading, use Navigation Timing or the DevTools Network panel. For repeatable synthetic tests, web.dev identifies Chrome DevTools and WebPageTest as options. These run tests under chosen lab conditions, which are useful for controlled comparisons but may not match a visitor’s device or network.
For real-user context, web.dev describes CrUX field data and the web-vitals JavaScript library. Field measurements reflect actual users and their circumstances rather than one controlled lab run. A field distribution and one lab test answer different questions, so do not treat their values as interchangeable.
Cloudflare’s speed documentation also defines TTFB as the interval from requesting a resource until the response’s first byte begins to arrive. Different tools may implement or present measurements differently. When comparing tools, establish whether each reports navigation or resource timing and whether it counts an interim response or final response headers.
How to make a fair comparison
When checking whether a site or a change is faster, hold the conditions steady. Otherwise, a changed reading may reflect the test rather than the site.
- Use the same URL. Include the same path and query string, and note whether redirects are part of the test.
- Use the same region. A test run near the site and one run far away travel different network paths.
- Keep the protocol and method consistent. Do not compare a browser navigation with a different tool’s resource request or field-data summary as if they were equivalent.
- Record cache conditions. A warm browser cache or reused connection can change what a later request has to do.
- Repeat unusual results. A single run can be affected by transient network or service conditions. Look for a consistent pattern before assigning cause.
- Check response-start definitions. HTTP 103 Early Hints can complicate what a tool calls the first response. Where supported,
finalResponseHeadersStartidentifies the start of the final response; implementations and browser behavior have differed.
Write down the URL, test region, test type, cache state, and whether the result represents an interim or final response when reporting a comparison. Without that context, two different readings may simply reflect different measurement conditions.
Rank #3
What is a good TTFB?
web.dev’s guidance gives 0.8 seconds or less as a rough goal for most sites and describes values over 1.8 seconds as poor. The guidance was published in 2021 and last updated November 18, 2025. Treat these as broad guidance points, not a universal pass/fail test: the range between them signals room to investigate, not a precise diagnosis.
TTFB is not itself a Core Web Vitals metric. Its importance depends on what happens after the response starts. Consider it alongside First Contentful Paint (FCP), Largest Contentful Paint (LCP), and the site’s rendering model. A server-rendered page might have a higher TTFB yet reach useful content earlier than a client-rendered page that receives a quick response but must do more work before showing content. Conversely, a client-rendered app may benefit from receiving its initial response early.
Cloudflare likewise cautions against treating TTFB as the sole or most important page-speed measure. A fast first byte is useful, but it does not establish that visitors see the content quickly or that the page is responsive.
Use screenshots to inspect the result—not to measure TTFB
A screenshot captures what a page looks like; it does not report the Navigation Timing API’s TTFB or identify the delay before response bytes arrive. If you need an image of a rendered page for visual review, ScreenshotNeo is a screenshot API and MCP server, not a TTFB checker. Use browser timing or a performance-testing tool for the measurement itself.
Or skip the browser setup
This one-call example requests a screenshot of a page; it does not calculate or return TTFB. See the ScreenshotNeo API documentation for request options.
Rank #4
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo removes supported cookie banners, newsletter popups, and chat widgets before capture. Bot checks, blank pages, and failed loads are not billed. Its MCP server lets AI agents take screenshots, and the free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Those features help with screenshot capture, not TTFB diagnosis. Sign up for 1,000 free screenshots a month, with no card.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Troubleshooting confusing readings
The browser reports zero or missing resource timing
Check whether the resource came from cache or is cross-origin. A cached resource can have a zero responseStart; a cross-origin server may need to send an appropriate Timing-Allow-Origin header before the browser exposes timing details. If the question is the page navigation’s TTFB, inspect its navigation entry instead of a subresource entry.
A result is unexpectedly high
Repeat the same test under the same conditions, then inspect the request phases. Redirects, DNS, connection and TLS setup, network latency, service-worker startup, and origin response work can all contribute. Compare a controlled lab result with relevant field data before concluding the origin is the cause.
Two tools disagree
First confirm they tested the same URL, region, protocol, cache state, and request type. Then check whether one includes redirects or measures an interim Early Hints response while another reports final response headers. If those conditions differ, the readings are not a direct like-for-like comparison.
TTFB is acceptable but the page still feels slow
TTFB ends when response bytes start arriving, not when the page paints meaningful content or becomes interactive. Inspect FCP and LCP and consider whether the page’s rendering model delays visible content after the response starts.
Recommended Free Tools
What to do after checking
- Measure the main navigation rather than confusing it with a resource request.
- Repeat the test under recorded, consistent conditions.
- Use the timing breakdown to identify which phases contribute to the wait.
- Compare lab results with field evidence and page-rendering outcomes.
- Investigate the component implicated by repeatable evidence; do not make a hosting change solely because one TTFB reading is high.
Frequently Asked Questions
Is TTFB a Core Web Vital?
No. It is a diagnostic timing metric that can help explain performance, but it is not itself a Core Web Vitals metric.
Can I check another person’s website with the browser-console snippet?
The snippet reads the navigation entry available in the browser tab where it runs. It does not make a new request to a URL you supply; use a remote synthetic testing service to test a URL from another location.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




