Skip to main content
Master Fiddler Breakpoints: Edit Requests Before They Leave Your Machine
Request Modification7 min read

Master Fiddler Breakpoints: Edit Requests Before They Leave Your Machine

Learn how to set and use breakpoints in Fiddler to intercept and edit HTTP(S) requests before they leave your machine — essential for API testing and security validation.

Share:

Why Breakpoints Are Essential for HTTP Debugging

Breakpoints in Fiddler aren’t just for pausing traffic — they’re your surgical tool for precise request editing, API testing, and security validation. Unlike passive inspection, breakpoints let you intercept, inspect, and modify HTTP(S) requests before they reach the server or responses before they hit your app. This capability is indispensable for developers debugging authentication flows, testers validating edge-case payloads, and security researchers probing for injection vectors.

Fiddler’s breakpoint system integrates seamlessly with its proxy architecture and supports full HTTPS decryption — meaning you can edit encrypted requests without compromising visibility. Whether you're mocking backend behavior, injecting custom headers, or tampering with JWTs, breakpoints turn Fiddler from a passive sniffer into an active manipulation engine.

Understanding Fiddler’s Two Breakpoint Modes

Fiddler offers two distinct breakpoint types — request and response — each triggered at different stages of the HTTP pipeline:

  • Request breakpoints pause before Fiddler forwards the request to the server. You can alter URL, headers, body, method, or even cancel it entirely.
  • Response breakpoints pause after the server replies but before Fiddler delivers the response to the client. Ideal for modifying status codes, injecting cookies, or rewriting JSON payloads.

Both modes respect Fiddler’s HTTPS decryption settings — so as long as HTTPS decryption is enabled, you’ll see and edit plaintext TLS-encrypted traffic.

How Breakpoints Fit Into Your Fiddler Proxy Workflow

Breakpoints operate within Fiddler’s core proxy logic — they don’t require external tools or script injection. When enabled, Fiddler injects a temporary hold state into its request/response pipeline, displays the session in the main grid with a red BREAKPOINT icon, and opens the Inspectors tab pre-loaded with editable fields. This makes Fiddler debugging fast, deterministic, and reproducible — no guesswork, no race conditions.

Setting Request Breakpoints: Four Practical Methods

Method 1: Using the Quick Breakpoint Toolbar Button

The fastest way to set a global request breakpoint:

  1. Launch Fiddler (v5.0.20234.57100 or later recommended).
  2. Click the Breakpoints button (🔍 icon) on the toolbar — it toggles between Off, Before Requests, and Before Responses.
  3. Select Before Requests.
  4. All subsequent HTTP(S) requests will pause automatically.

💡 Pro tip: Use this mode when exploring unknown APIs or reverse-engineering mobile app traffic. It gives you full visibility before any request leaves your machine — critical for fiddler debugging of third-party SDKs.

Method 2: Rule-Based Breakpoints with `bpu` and `bpafter`

For targeted control, use FiddlerScript’s built-in commands in the QuickExec box (bottom-left corner):

  • bpu example.com/login — breaks only on requests to example.com/login (case-insensitive, partial match).
  • bpafter api.example.com/v2/users — breaks only on responses from that path.
  • bpv POST — breaks on all POST requests.
  • bpm PUT — breaks on all PUT requests.

To clear breakpoints, type bpu or bpafter with no argument — or use bpclear.

✅ Example: While testing a React frontend calling /api/auth/token, run bpu /api/auth/token. Now every login attempt pauses, letting you inject expired tokens or malformed scopes to verify error handling.

Method 3: Manual Breakpoints via the Web Sessions List

Right-click any captured session → Breakpoints → choose Break Request or Break Response. This is ideal for iterative testing:

  • Capture a few requests using Fiddler’s auto-capture.
  • Identify the exact session you want to manipulate.
  • Right-click → Break Request → modify headers/body → click Run to Completion.

This avoids blanket breakpoints and reduces noise — especially helpful during fiddler tutorial sessions where learners focus on one endpoint.

Method 4: Advanced Scripted Breakpoints in CustomRules.js

For programmatic control, edit CustomRules.js (Rules → Customize Rules…) and add logic inside OnBeforeRequest or OnBeforeResponse:

static function OnBeforeRequest(oSession: Session) {
    if (oSession.hostname == "dev-api.internal" && oSession.uriContains("/v3/payment")) {
        if (oSession.HTTPMethod == "POST") {
            oSession.utilSetResponseBody("{\"error\":\"simulated failure\"}");
            oSession.responseCode = 500;
            oSession.oResponse.headers.SetStatus(500, "Internal Server Error");
        }
    }
}

This transforms Fiddler into a lightweight mock server — powerful for frontend isolation testing and CI integration.

Editing Requests at the Breakpoint

Once paused, Fiddler highlights the session and loads inspectors. Here’s what to do next:

Step-by-Step Editing Flow

  1. Confirm the breakpoint is active: Look for the red BREAKPOINT badge in the Result column and the Paused indicator in the status bar.
  2. Switch to the Inspectors tab → select TextView, WebForms, or JSON depending on payload type.
  3. Modify fields directly:
    • Headers: Click Headers → edit Authorization, Content-Type, X-Forwarded-For, etc.
    • Body: In TextView, change raw JSON/XML/form-data. For multipart uploads, use WebForms.
    • URL & Method: Click the Raw tab → edit the first line (POST /path HTTP/1.1) and headers above the double-CRLF.
  4. Click Run to Completion (green ▶️) to forward the edited request — or Drop (red ×) to abort.

⚠️ Troubleshooting Tip: If edits don’t persist, ensure you’re not in AutoResponder mode (which overrides breakpoints) and verify that Filters tab isn’t hiding the session.

Real-World Example: Bypassing CSRF Protection

Many apps require a valid X-CSRF-Token header. To test token reuse or missing validation:

  • Set bpu /api/transfer
  • Let the request pause
  • Copy the current token from X-CSRF-Token header
  • Paste it into a second request’s header
  • Click Run to Completion

This kind of controlled manipulation is only possible with reliable http debugging tooling — and Fiddler’s breakpoint fidelity ensures zero corruption of binary payloads or encoding.

Combining Breakpoints With HTTPS Decryption

Breakpoints work identically over HTTP and HTTPS — but only if HTTPS decryption is properly configured. Without it, encrypted TLS payloads appear as gibberish in inspectors, making editing impossible.

Prerequisites for Editing HTTPS Requests

  1. Enable Decrypt HTTPS traffic in Tools → Options → HTTPS.
  2. Install Fiddler’s root certificate (click Actions → Trust Root Certificate).
  3. Ensure your target app trusts the Fiddler cert (especially true for Android/iOS apps or .NET Core apps using HttpClientHandler.ServerCertificateCustomValidationCallback).

Once enabled, you’ll see decrypted GET /secure/data requests — complete with readable cookies, JWTs, and JSON bodies — ready for editing. This makes Fiddler one of the few tools capable of true end-to-end https decryption and real-time request modification.

🔐 Security Note: Never enable HTTPS decryption on shared or production machines. Use dedicated test environments — and always disable it when not actively debugging.

Pro Tips & Common Pitfalls

  • Avoid overlapping breakpoints: Running bpu and bpafter simultaneously causes confusion. Clear with bpclear before switching modes.
  • Watch for cached responses: If a request doesn’t pause, check if it’s served from browser cache (status 200 (from disk cache)). Disable caching in Rules → Performance → Disable Caching.
  • Mobile devices need extra config: iOS/Android must point to your Fiddler proxy and install the FiddlerRoot certificate manually. See our more tutorials for step-by-step mobile setup guides.
  • Use Filters wisely: The Filters tab can hide paused sessions — uncheck Hide If URL Includes or adjust filters to keep breakpoints visible.
  • Script breakpoints > UI breakpoints: For repeatable workflows (e.g., QA regression suites), prefer CustomRules.js over manual bpu — it survives Fiddler restarts and scales across teams.

Conclusion: Breakpoints Are Your Most Powerful Fiddler Proxy Feature

Breakpoints transform Fiddler from a passive monitoring tool into an interactive HTTP manipulation environment. With support for both request and response interception, seamless integration with https decryption, and granular targeting via rules or scripts, they’re foundational for modern web and API development.

You now know how to:

  • Activate breakpoints via toolbar, command, right-click, or script,
  • Edit headers, methods, URLs, and bodies safely and precisely,
  • Combine them with HTTPS decryption for full-stack visibility,
  • Avoid common pitfalls like caching interference or certificate trust issues.

Whether you’re validating auth flows, simulating network failures, or fuzzing endpoints, breakpoints give you deterministic control over every byte in flight. Master them, and you’ll unlock 80% of what makes Fiddler indispensable for professional fiddler debugging and http debugging.

Ready to go deeper? Browse Request Modification tutorials for advanced techniques like auto-replay, conditional mocking, and header injection pipelines — or contact us if you’re building custom automation around Fiddler’s breakpoint API.

Share:

Related Topics

fiddler tutorialfiddler debugginghttp debuggingfiddler proxyhttps decryption

Get Fiddler Tips & Tutorials

Stay updated with the latest Fiddler tutorials, HTTP debugging guides, request modification tips, and web traffic analysis techniques.

Free forever. New tutorials published daily.

Related Articles