Internet Beginner 10 š Inspecting Networks with Browser DevTools
Every page load is a conversation between your browser and a server, but the conversation is invisible. You see the resultāthe rendered pageābut not the requests that fetched it, the headers that carried the metadata, or the timing that explains why one resource arrived instantly while another took two seconds. Browser DevTools makes that conversation visible. The Network panel records every request the page makes, shows the status code and response headers, and visualizes the timing breakdown that reveals whether a delay came from the server, the network, or the browser itself.
The Network panel is not just for debugging broken requests. It is the primary tool for understanding performance. A page that feels slow might be slow because the server is responding slowly, because a large image is downloading over a throttled connection, or because the browser is queuing requests behind a limit. Each of those causes produces a different pattern in the waterfall, and the Network panel shows exactly which one is happening . Learning to read that waterfall is the difference between guessing at performance problems and diagnosing them.
This chapter covers how to open and record network activity, how to inspect individual requests and their headers, how to read the timing waterfall, how to throttle the connection to simulate slower networks, and how to copy requests as cURL or fetch commands for reproduction.
Key point: The Network panel records every request the page makes and shows its status, headers, response body, and timing breakdown; the waterfall visualizes the stages of each request, and throttling simulates slower connections to reveal performance problems that fast local networks hide.
Why the Network panel is the primary debugging tool
The invisible request problem. When a page loads, the browser makes dozens of requests: the HTML document, stylesheets, scripts, images, fonts, and API calls. If one of them failsāa 404, a 500, a CORS errorāthe page may render incorrectly or not at all. Without the Network panel, you see the symptom but not the cause. The panel shows which request failed, what status code it returned, and what the server said in the response .
The performance attribution problem. A slow page could be slow for many reasons. The server might take two seconds to process an API call. The network might be slow. The response body might be huge. The browser might be queuing requests because too many are in flight to the same domain. The timing tab breaks a request into stagesāqueueing, DNS lookup, initial connection, SSL, request sent, waiting (TTFB), and content downloadāand each stage points to a different cause . The waterfall shows these stages as colored bars, making the bottleneck visible at a glance .
The reproduction problem. When you find a bug in an API call, you need to reproduce it outside the browser. The Network panel lets you right-click any request and copy it as a cURL command or a fetch call, complete with headers and body . This turns a browser-only observation into a script you can run in a terminal, share with a backend developer, or add to a bug report.
The slow-network problem. Your development machine is probably on a fast connection. Your users are not. Throttling the Network panel to 3G or Slow 4G simulates the conditions your users actually experience, revealing loading problems that are invisible on a fast connection . A page that loads in 200 milliseconds locally might take five seconds on a slow mobile network, and the Network panel shows exactly which resources are responsible.
The cache problem. Browsers cache aggressively. A resource that appears to load instantly might be served from the disk cache, not the network. The Network panel distinguishes between cached and network requests, and the “Empty cache and hard refresh” option forces the browser to fetch everything from the server, showing what a first-time visitor actually experiences .
a. Opening and recording network activity
The Network panel is opened from the DevTools action bar. On Windows and Linux, press Ctrl+Shift+J to open DevTools, then click the Network tab. On macOS, press Command+Option+J . Alternatively, open the Command Menu with Ctrl+Shift+P (or Command+Shift+P on macOS), type “Network”, select “Show Network panel”, and press Enter .
The panel records nothing until it is open. If you open DevTools after a page has loaded, the Network panel is empty until you reload the page or trigger a new request. This is deliberate: recording everything the browser does would be overwhelming, so recording starts when you open the tool .
Once the panel is open, every request the page makes is logged automatically. Each row in the Requests table represents one resource. The default columns are Name (the resource URL), Status (the HTTP status code), Type (the resource type, such as document, stylesheet, script, or fetch), Initiator (what caused the request), Size (the transferred and decoded size), Time (the total duration), and Waterfall (a visual timeline) .
To record a full page load from scratch, reload the page. The first row is usually the main HTML document, and the subsequent rows are the resources that document references. To see what a first-time visitor experiences, right-click the reload button and select Empty cache and hard refresh. This forces the browser to bypass its cache and fetch every resource from the network .
b. Inspecting individual requests and reading the timing waterfall
Clicking any row in the Requests table opens a detail pane with several tabs. The Headers tab shows the request method, the URL, the status code, and both request and response headers . This is where you verify that the Content-Type is correct, that the Authorization header is present, or that the server returned the expected Cache-Control directive.
The Payload tab shows the query string parameters for GET requests and the form data or JSON body for POST requests . If an API call is failing because a parameter is missing or malformed, this is where you see it. The Response tab shows the raw response body, and the Preview tab shows a rendered version for HTML or a formatted view for JSON .
The Timing tab is the most important for performance analysis. It breaks the request into stages :
- Queueing: The request is waiting because the browser has reached its connection limit for the domain, or because it is waiting for a higher-priority request.
- DNS Lookup: The domain name is being resolved to an IP address.
- Initial Connection: The TCP handshake is establishing the connection.
- SSL: The TLS handshake is negotiating encryption (for HTTPS).
- Request Sent: The request headers are being transmitted.
- Waiting (TTFB): The time from sending the request to receiving the first byte of the response. This includes server processing time and network round-trip time.
- Content Download: The time to receive the entire response body.
The Waterfall column visualizes these stages as colored bars. A long blue bar in the Waiting stage means the server is slow. A long green bar in Content Download means the response body is large or the network is slow. A long bar at the start in Queueing means the browser is holding the request because too many are in flight . The waterfall turns a single “slow” number into a diagnosis.
c. Throttling and copying requests
Throttling simulates slower network conditions. The Throttling dropdown in the toolbar offers presets: No throttling, Fast 4G, Slow 4G, Fast 3G, Slow 3G, and Offline . Selecting a preset applies it to all subsequent requests, and an icon appears on the Network tab to remind you that throttling is active.
For fine-grained control, the Request conditions drawer lets you throttle specific patterns rather than the entire page. You can, for example, throttle only requests to an image CDN while leaving API calls unthrottled . The drawer also supports blocking specific requests entirely, which is useful for testing how a page behaves when a third-party script fails to load .
Copying a request is how you reproduce a problem outside the browser. Right-click any request in the table and select Copy, then choose Copy as cURL or Copy as fetch . The cURL command includes the URL, method, headers, and body, and can be pasted directly into a terminal. This is the fastest way to hand a backend developer a reproducible request or to verify that an API works independently of the browser.
Complete Example Session
The following session demonstrates a typical debugging workflow: open the panel, record a load, inspect a slow API request, throttle the connection, and copy the request for reproduction.
// ============================================
// PART 1: OPEN THE NETWORK PANEL
// ============================================
// Open DevTools (Ctrl+Shift+J or Command+Option+J)
// Click the Network tab
// The panel is empty until activity is recorded
// ============================================
// PART 2: RECORD A PAGE LOAD
// ============================================
// Reload the page
// The Requests table fills with resources
// The first row is the HTML document
// Subsequent rows are CSS, JS, images, and API calls
// ============================================
// PART 3: IDENTIFY A SLOW REQUEST
// ============================================
// Sort by the Time column (click the header)
// The slowest request appears at the top
// Example: GET /api/products takes 2.4 seconds
// Click the row to open the detail pane
// ============================================
// PART 4: INSPECT THE HEADERS
// ============================================
// Headers tab shows:
// Status: 200 OK
// Content-Type: application/json
// Content-Length: 2.3 MB
// The response body is large
// ============================================
// PART 5: READ THE TIMING BREAKDOWN
// ============================================
// Timing tab shows:
// Queueing: 320 ms (browser waited)
// DNS Lookup: 0.03 ms (cached)
// Initial Connection: 12 ms
// SSL: 28 ms
// Request Sent: 0.2 ms
// Waiting (TTFB): 82 ms (server is fast)
// Content Download: 740 ms (large body)
// Total: ~1.2 seconds
// Diagnosis: the server responds quickly,
// but the response body is too large
// ============================================
// PART 6: THROTTLE TO SIMULATE A SLOW NETWORK
// ============================================
// Select "Slow 3G" from the Throttling dropdown
// Reload with "Empty cache and hard refresh"
// The page now takes much longer to load
// The waterfall shows which resources dominate
// ============================================
// PART 7: COPY THE REQUEST FOR REPRODUCTION
// ============================================
// Right-click the slow request
// Select Copy ā Copy as cURL
// Paste into a terminal:
// curl 'https://example.com/api/products' \
// -H 'Accept: application/json'
// The response confirms the large body size
// ============================================
// PART 8: TEST WITH A SMALLER RESPONSE
// ============================================
// Modify the API call to request pagination:
// GET /api/products?limit=20
// Reload and inspect the new request
// Content-Length drops from 2.3 MB to 120 KB
// Content Download drops from 740 ms to 40 ms
// ============================================
// PART 9: VERIFY THE FIX
// ============================================
// The total request time drops from 1.2 s to 0.3 s
// The page loads faster because the response is smaller
// The waterfall confirms the improvement
// ============================================
// PART 10: THE FULL PICTURE
// ============================================
// Network panel records every request
// Headers tab shows status and metadata
// Timing tab diagnoses the bottleneck
// Throttling simulates real-world conditions
// Copy as cURL reproduces the request
The ten parts trace a complete debugging workflow: opening the panel, recording a load, identifying a slow request, inspecting headers, reading the timing breakdown, throttling the connection, copying the request, testing a fix, verifying the improvement, and summarizing the workflow. What the session demonstrates is that the Network panel is not just a list of requestsāit is a diagnostic tool that attributes delay to specific stages and provides the evidence needed to fix the problem.
Quick Reference
Opening the Network Panel
| Method | Shortcut |
|---|---|
| DevTools shortcut | Ctrl+Shift+J (Win/Linux), Command+Option+J (macOS) |
| Command Menu | Ctrl+Shift+P ā “Network” |
| Tab location | Action bar at top of DevTools |
Default Columns
| Column | Meaning |
|---|---|
| Name | Resource URL |
| Status | HTTP status code |
| Type | Resource type (document, script, fetch) |
| Initiator | What caused the request |
| Size | Transferred and decoded size |
| Time | Total duration |
| Waterfall | Visual timeline |
Timing Stages
| Stage | Meaning |
|---|---|
| Queueing | Waiting for connection slot |
| DNS Lookup | Resolving domain name |
| Initial Connection | TCP handshake |
| SSL | TLS handshake |
| Request Sent | Sending request headers |
| Waiting (TTFB) | Server processing + first byte |
| Content Download | Receiving response body |
Throttling Presets
| Preset | Simulates |
|---|---|
| No throttling | Fast local network |
| Fast 4G | Good mobile connection |
| Slow 4G | Average mobile connection |
| Fast 3G | Older mobile connection |
| Slow 3G | Poor mobile connection |
| Offline | No connection |
Copy Options
| Option | Output |
|---|---|
| Copy as cURL | Terminal command |
| Copy as fetch | JavaScript fetch call |
| Copy response | Raw response body |
| Copy all as HAR | Full network log |
Best Practices
ā Do This:
// Open Network panel before reloading
// Use "Empty cache and hard refresh" for first-visit testing
// Read the Timing tab to attribute delay
// Throttle to simulate your users' network
// Copy as cURL to reproduce API problems
ā Don’t Do This:
// Open Network panel after the page loaded
// Assume instant load means fast (cache may be serving)
// Guess at performance problems without the waterfall
// Ignore Queueing delays from connection limits
// Debug on a fast connection only
Common Pitfalls
| Pitfall | Why It Happens | Fix |
|---|---|---|
| Panel is empty | Opened after page loaded | Reload the page |
| Resource appears instant | Served from cache | Empty cache and hard refresh |
| Slow request not the server | Queueing or download stage is slow | Read the Timing tab |
| Throttling not applied | Forgot to select preset | Select from Throttling dropdown |
| Cannot reproduce API call | Missing headers in manual request | Copy as cURL instead |
Real-World Examples
1. Debugging a 404
// Network panel shows status 404 for /api/user
// Headers tab confirms the URL is correct
// Response tab shows the server's error message
2. Finding a large image
// Sort by Size column
// 2 MB hero image at the top
// Content Download dominates the timing
3. Diagnosing queueing delay
// Timing tab shows Queueing: 320 ms
// Too many concurrent requests to same domain
// Fix: use HTTP/2 or reduce request count
4. Simulating slow mobile
// Select Slow 3G from Throttling
// Reload with empty cache
// Page load time increases from 0.5s to 4s
5. Copying an API call
// Right-click request ā Copy ā Copy as cURL
// Paste into terminal to verify outside browser
6. Verifying a cache header
// Headers tab shows Cache-Control: max-age=3600
// Response should be cached for one hour
7. Checking a redirect chain
// Status column shows 301 ā 200
// Initiator column shows the redirect source
8. Testing offline behavior
// Select Offline from Throttling
// Reload to see if the page works without network
9. Finding the slowest resource
// Click Time column header to sort
// The slowest request appears at the top
10. Exporting a HAR file
// Right-click any request ā Copy all as HAR
// Share the file for remote debugging
Visual
The Network Panel Layout
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā TOOLBAR (filter, throttle, search) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā OVERVIEW GRAPH (traffic over time) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā REQUESTS TABLE ā
ā āāāāāāāā¬āāāāāāā¬āāāāāāā¬āāāāāāā¬āāāāāāāāāāāāāā ā
ā ā Name āStatusā Type ā Time ā Waterfall ā ā
ā āāāāāāāā¼āāāāāāā¼āāāāāāā¼āāāāāāā¼āāāāāāāāāāāāā⤠ā
ā ā / ā 200 ā doc ā 120msā āāā ā ā
ā ā app ā 200 ā js ā 340msā āāāāā ā ā
ā ā api ā 200 ā fetchā 1.2s ā āāāāāāāā ā
ā āāāāāāāā“āāāāāāā“āāāāāāā“āāāāāāā“āāāāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā DETAIL TABS (Headers, Payload, Timing, ...) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Timing Waterfall Stages
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Queueing āāā ā
ā DNS Lookup ā ā
ā Initial Conn. āā ā
ā SSL āāāā ā
ā Request Sent ā ā
ā Waiting (TTFB) āāāāāā ā
ā Content Download āāāāāāāāāāāāāāāāāā ā
ā ā
ā Long download ā response body is large ā
ā Long TTFB ā server is slow ā
ā Long queue ā too many concurrent requests ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Throttling Presets
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā No throttling ā local network speed ā
ā Fast 4G ā good mobile ā
ā Slow 4G ā average mobile ā
ā Fast 3G ā older mobile ā
ā Slow 3G ā poor mobile ā
ā Offline ā no network ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Copy as cURL
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Right-click request ā Copy ā Copy as cURL ā
ā ā ā
ā ā¼ ā
ā curl 'https://api.example.com/users' \ ā
ā -H 'Authorization: Bearer token' \ ā
ā -H 'Content-Type: application/json' ā
ā ā ā
ā ā¼ ā
ā Paste in terminal ā reproduce request ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Summary
| Item | Value |
|---|---|
| Panel purpose | Record and inspect network requests |
| Open shortcut | Ctrl+Shift+J then Network tab |
| Recording | Automatic while DevTools is open |
| First-visit test | Empty cache and hard refresh |
| Timing stages | Queueing ā DNS ā Connect ā SSL ā TTFB ā Download |
| Waterfall | Visual timeline of stages |
| Throttling | Simulate 3G/4G/offline |
| Copy as cURL | Reproduce request in terminal |
Key takeaways:
- The Network panel records every request the page makes. It shows the status code, headers, response body, and timing for each resource .
- The Timing tab attributes delay to specific stages. Queueing, TTFB, and Content Download each point to a different cause .
- The waterfall makes bottlenecks visible. Colored bars show where time is spent without reading numbers .
- Throttling simulates real-world networks. Fast local connections hide problems that slow mobile connections reveal .
- Empty cache and hard refresh shows first-visit behavior. Without it, cached resources make the page appear faster than it is .
- Copy as cURL reproduces the exact request. It includes headers and body, making it the fastest way to share or debug an API call .
- The panel is for diagnosis, not just inspection. The evidence it providesātiming stages, status codes, sizesāturns a vague “it’s slow” into a specific fix.
Remember: The Network panel is the window into the conversation between your browser and the server. Open it before the page loads, reload with an empty cache, and read the waterfall. The longest bar tells you which stage is slow. The status column tells you which request failed. The headers tell you why. Throttle the connection to see what your users see. Copy the request as cURL to reproduce it outside the browser. The panel does not just show you what happenedāit shows you why, and that is the difference between guessing and fixing.
Stop using slow, ad-bloated tool sites! š¤®
š Search “KandZ Tools” on Google to use many professional utilities for free.
KandZ.me is the ultimate minimalist hub for:
ā
Finance (Mortgage, Interest, Inflation)
ā
Tech (Base64, JSON, Dev Suite, IP)
ā
Health (BMI, BMR, TDEE)
ā
Productivity (Timer, Workspace, QR)
ā”ļø Fast & Private
š No data leaves your device
š 100% Free
š Use it now: https://tools.kandz.me
š Bookmark itāyouāll need it later!