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.
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:
- Launch Fiddler (v5.0.20234.57100 or later recommended).
- Click the Breakpoints button (🔍 icon) on the toolbar — it toggles between Off, Before Requests, and Before Responses.
- Select Before Requests.
- 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 toexample.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, runbpu /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
- Confirm the breakpoint is active: Look for the red
BREAKPOINTbadge in the Result column and thePausedindicator in the status bar. - Switch to the Inspectors tab → select TextView, WebForms, or JSON depending on payload type.
- 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.
- Headers: Click Headers → edit
- 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
Filterstab 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-Tokenheader - 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
- Enable Decrypt HTTPS traffic in Tools → Options → HTTPS.
- Install Fiddler’s root certificate (click Actions → Trust Root Certificate).
- 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
bpuandbpaftersimultaneously causes confusion. Clear withbpclearbefore 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.jsover manualbpu— 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.