# mitmproxy

Published January 1, 2026 · Updated August 10, 2026

Interactive HTTPS proxy for debugging and testing

Category: Developer Tools · Free · Replaces Charles Proxy ($50) · [Official website](https://mitmproxy.org)

## Install with Homebrew

`brew install --cask mitmproxy`

## Quick take

mitmproxy 12.2.x remains the open-source standard for HTTPS interception. Interactive Contentviews and HTTP/3 keep it competitive with paid Mac GUIs for power users and automation. Choose Proxyman if you want the least friction; choose mitmproxy if you want free depth and scripts.

Best for: API developers debugging request/response issues, Mobile app developers inspecting network traffic, Security researchers and penetration testers, Developers who need scriptable traffic modification

## What is mitmproxy?

August 2026 status: mitmproxy **12.2.3** (PyPI, 12 May 2026) is current in the 12.x line. Version 12 (April 2025) introduced Interactive Contentviews,edit prettified gRPC/Protobuf, MsgPack and other binary views and re-encode them on the wire. Version 11 delivered full HTTP/3 support. The project remains free MIT-licensed software with mitmproxy (TUI), mitmweb (browser UI) and mitmdump (headless) interfaces, active on macOS including Apple Silicon. mitmproxy is an open-source interactive HTTPS proxy that lets you intercept, inspect, modify and replay HTTP and HTTPS traffic flowing through your machine. If you've ever needed to see exactly what an API request looks like, debug a mobile app's network calls, test how your backend handles malformed requests, or understand what a third-party SDK is sending home, mitmproxy is the tool. It ships with three interfaces: `mitmproxy` (a terminal-based TUI with vim-style keybindings), `mitmweb` (a browser-based GUI) and `mitmdump` (a headless CLI for scripting and automation). All three use the same proxy engine , you choose the interface that fits your workflow. The TUI is fastest for keyboard-driven developers, the web UI is easiest for visual inspection and mitmdump is what you want for automated testing pipelines. The 'man-in-the-middle' in the name describes the technical approach: mitmproxy sits between your client (browser, mobile app, CLI tool) and the server, terminating and re-establishing TLS connections so it can read encrypted traffic. You install mitmproxy's CA certificate on your device and from that point forward, all HTTPS traffic flowing through the proxy is visible in plaintext. This sounds alarming and it should, because it's exactly what attackers do. But for developers and security researchers, it's an indispensable debugging tool. mitmproxy competes with commercial tools like Proxyman and Charles Proxy on macOS. The commercial tools have prettier GUIs and easier certificate setup. mitmproxy's advantages are that it's free, open-source, scriptable with Python and significantly more powerful for automated testing and modification of traffic. If you need to write a script that automatically modifies API responses for testing, mitmproxy is the only free tool that does it well.

## Features

- **Interactive Contentviews (v12+).** Edit human-readable views of binary protocols and let mitmproxy re-encode bytes. gRPC/Protobuf works with or without .proto files; unknown protobufs still allow primitive field edits. Rust-backed contentviews and centralized tree-sitter highlighting improve performance for large captures.
- **Three Interfaces: TUI, Web, CLI.** mitmproxy (the TUI) gives you a vim-like interface where you navigate flows with j/k, press Enter to inspect details, Tab between request/response and use `:` for commands. mitmweb opens a browser-based dashboard with clickable flows, searchable request lists and formatted JSON/XML views. mitmdump runs headlessly, outputting to stdout or piping to Python scripts. Same engine, three different ways to interact.
- **HTTPS Interception.** mitmproxy generates a CA certificate that you install on your client devices. Once trusted, mitmproxy performs TLS interception , it terminates the client's TLS connection, reads the traffic and opens a new TLS connection to the upstream server. This lets you inspect encrypted HTTPS traffic in plaintext. Every API call, every header, every cookie, every request body is visible.
- **Python Scripting API.** mitmproxy's scripting API lets you write Python scripts that modify traffic in real time. Intercept requests and change headers before they reach the server. Modify responses before they reach the client. Block specific URLs. Inject delays to simulate slow networks. Record specific API calls to a database. The API exposes the full request/response lifecycle with hooks for every stage.
- **Request Replay.** Select any captured request and replay it , either as-is or with modifications. Change a parameter, modify a header, alter the request body and send it again. This is very useful for testing API endpoints: capture a valid request, then replay it with invalid data to test error handling, with missing auth tokens to test security, or with edge-case values to test validation.
- **Flow Filtering and Search.** Filter captured flows using a powerful filter expression language. Filter by URL pattern (`~u /api/`), by method (`~m POST`), by response code (`~c 500`), by content type (`~t json`), or by body content (`~b error`). Combine filters with AND/OR logic. This lets you focus on the specific traffic you care about in a stream of hundreds of requests.
- **Map Local / Map Remote.** Map Remote redirects requests from one URL to another , useful for pointing an API call at a local server instead of production, or replacing a CDN resource with a local file. Map Local serves responses from local files instead of making upstream requests. Both features let you test how your application behaves with different API responses without modifying the application code.
- **HTTP/3 and Modern Protocol Coverage.** Since mitmproxy 11, HTTP/3 is supported in transparent and reverse proxy modes alongside HTTP/1, HTTP/2 and WebSockets. Socket.IO-over-WebSocket content views and TLS 1.3 post-handshake authentication landed in the 12.x series.

## How to Install mitmproxy on Mac

mitmproxy is available as a Homebrew formula. It's a Python application distributed as a self-contained binary.

1. **Install via Homebrew.** Run `brew install --cask mitmproxy`. This installs all three tools: mitmproxy (TUI), mitmweb (web GUI) and mitmdump (CLI).
2. **Start the Proxy.** Run `mitmproxy` for the TUI or `mitmweb` for the browser interface. By default, the proxy listens on port 8080.
3. **Configure Your Client.** Set your browser or system proxy to `localhost:8080`. For macOS system-wide: System Settings > Network > Wi-Fi > Details > Proxies > Web Proxy (HTTP) and Secure Web Proxy (HTTPS), both pointing to 127.0.0.1:8080.
4. **Install the CA Certificate.** With the proxy running, visit http://mitm.it in your browser. Download the macOS certificate and install it in Keychain Access. Set it to 'Always Trust' in the certificate details. This enables HTTPS interception.

## Pros

- Three interfaces: TUI, web GUI and headless CLI for different workflows
- Python scripting for automated traffic modification and testing
- Powerful flow filtering with a dedicated expression language
- Request replay with modification for API testing
- Map Local and Map Remote for response mocking
- Completely free and open source (MIT License)
- Cross-platform with consistent behavior
- Active development since 2010 with a mature, stable codebase

## Cons

- CA certificate installation required for HTTPS interception
- Certificate setup on mobile devices is fiddly (especially iOS)
- TUI has a learning curve (vim-style keybindings)
- No native macOS GUI , web interface or terminal only
- Python scripting API requires Python knowledge
- Does not support HTTP/3 (QUIC) interception yet

## Closer look: How mitmproxy Intercepts HTTPS

A technical look at the TLS interception mechanism that makes mitmproxy possible and why it matters for developers.

## FAQ

### What is the latest mitmproxy version?

PyPI lists 12.2.3 as of 12 May 2026 within the 12.x Interactive Contentviews line.

### Does mitmproxy support HTTP/3?

Yes. Full HTTP/3 support shipped in mitmproxy 11 and continues in 12.x.

### Can I edit gRPC or Protobuf traffic?

Yes with Interactive Contentviews in v12+, with or without protobuf definitions.

### Is mitmproxy free?

Yes, MIT licensed with no premium SKU.

### How does it compare to Proxyman on Mac?

Proxyman offers a smoother Mac-native GUI and cert flow. mitmproxy is free, more scriptable in Python and stronger for binary protocol editing and automation.

### Does it run on Apple Silicon Macs?

Yes. Homebrew and pipx installs work on Apple Silicon. Pair with Keychain trust for local CA.

### What interfaces are included?

mitmproxy (terminal UI), mitmweb (browser UI with multi-select flows) and mitmdump (headless CLI).

## Sources

- [Mitmproxy 12 release notes](https://www.mitmproxy.org/posts/releases/mitmproxy-12/)
- [Mitmproxy 11 release notes](https://www.mitmproxy.org/posts/releases/mitmproxy-11/)
- [mitmproxy on PyPI](https://pypi.org/project/mitmproxy/)
- [mitmproxy GitHub releases](https://github.com/mitmproxy/mitmproxy/releases)
- [mitmproxy docs](https://docs.mitmproxy.org/stable/)
- [mitmproxy.org](https://www.mitmproxy.org/)

## Related

- [Cursor](https://bundl.run/apps/cursor)
- [Claude Code](https://bundl.run/apps/claude-code)
- [ChatGPT](https://bundl.run/apps/chatgpt)
- [Claude](https://bundl.run/apps/claude)
- [Codex](https://bundl.run/apps/codex)
- [Windsurf](https://bundl.run/apps/windsurf)
- [mitmproxy vs Proxyman](https://bundl.run/compare/proxyman-vs-mitmproxy)
- [Free alternative to Charles Proxy](https://bundl.run/https:/)

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://bundl.run/#organization",
      "name": "Bundl.run",
      "url": "https://bundl.run",
      "logo": {
        "@type": "ImageObject",
        "url": "https://bundl.run/og-image.png",
        "width": 1200,
        "height": 630
      },
      "description": "The Ninite for Mac. Install all your essential Mac apps with one terminal command.",
      "sameAs": [
        "https://github.com/abhiofficial/bundl-mac-setup",
        "https://x.com/bundlrun",
        "https://www.producthunt.com/products/bundl-run"
      ],
      "foundingDate": "2024",
      "contactPoint": {
        "@type": "ContactPoint",
        "contactType": "customer support",
        "url": "https://bundl.run/faq"
      }
    },
    {
      "@type": "WebSite",
      "@id": "https://bundl.run/#website",
      "name": "Bundl.run",
      "url": "https://bundl.run",
      "description": "The Ninite for Mac. Install all your essential Mac apps with one terminal command.",
      "publisher": {
        "@id": "https://bundl.run/#organization"
      },
      "inLanguage": "en-US"
    },
    {
      "@type": "Person",
      "@id": "https://bundl.run/authors/alex-chen#person",
      "name": "Alex Chen",
      "jobTitle": "Senior Developer Tools Specialist",
      "url": "https://bundl.run/authors/alex-chen",
      "worksFor": {
        "@id": "https://bundl.run/#organization"
      },
      "description": "Alex Chen has been evaluating developer tools and productivity software for over 12 years, with deep expertise in code editors, terminal emulators, and development environments. As a former software engineer at several Bay Area startups, Alex brings hands-on experience with the real-world workflows these tools are meant to enhance. Alex tests each application extensively on both Intel and Apple Silicon Macs, documenting performance metrics, integration capabilities, and workflow efficiency. When not reviewing software, Alex contributes to open-source projects and writes technical tutorials for the developer community.",
      "knowsAbout": [
        "Code Editors & IDEs",
        "Terminal Emulators",
        "Version Control Tools",
        "DevOps & CI/CD",
        "API Development",
        "Performance Benchmarking"
      ],
      "image": "https://bundl.run/authors/alex-chen.svg"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://bundl.run/apps/mitmproxy#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://bundl.run"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Apps",
          "item": "https://bundl.run/apps"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "mitmproxy",
          "item": "https://bundl.run/apps/mitmproxy"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://bundl.run/apps/mitmproxy",
      "url": "https://bundl.run/apps/mitmproxy",
      "name": "mitmproxy for Mac",
      "description": "Interactive HTTPS proxy for debugging and testing",
      "isPartOf": {
        "@id": "https://bundl.run/#website"
      },
      "publisher": {
        "@id": "https://bundl.run/#organization"
      },
      "inLanguage": "en-US",
      "datePublished": "2026-01-01T00:00:00Z",
      "dateModified": "2026-08-10T13:34:04.000Z",
      "author": {
        "@id": "https://bundl.run/authors/alex-chen#person"
      },
      "mainEntity": {
        "@id": "https://bundl.run/apps/mitmproxy#software"
      },
      "breadcrumb": {
        "@id": "https://bundl.run/apps/mitmproxy#breadcrumb"
      }
    },
    {
      "@type": "SoftwareApplication",
      "@id": "https://bundl.run/apps/mitmproxy#software",
      "name": "mitmproxy",
      "description": "Interactive HTTPS proxy for debugging and testing",
      "applicationCategory": "DeveloperApplication",
      "operatingSystem": "macOS",
      "url": "https://bundl.run/apps/mitmproxy",
      "image": {
        "@type": "ImageObject",
        "url": "https://img.logo.dev/mitmproxy.org",
        "caption": "mitmproxy app icon for Mac"
      },
      "sameAs": [
        "https://mitmproxy.org/",
        "https://formulae.brew.sh/cask/mitmproxy"
      ],
      "review": {
        "@type": "Review",
        "author": {
          "@id": "https://bundl.run/authors/alex-chen#person"
        },
        "reviewBody": "mitmproxy 12.2.x remains the open-source standard for HTTPS interception. Interactive Contentviews and HTTP/3 keep it competitive with paid Mac GUIs for power users and automation. Choose Proxyman if you want the least friction; choose mitmproxy if you want free depth and scripts."
      },
      "about": {
        "@type": "Thing",
        "name": "mitmproxy",
        "description": "Interactive HTTPS proxy for debugging and testing"
      },
      "isPartOf": {
        "@id": "https://bundl.run/#website"
      }
    },
    {
      "@type": "Article",
      "@id": "https://bundl.run/apps/mitmproxy#article",
      "headline": "mitmproxy for Mac — Full Review & Installation Guide 2026",
      "description": "mitmproxy 12.2.x remains the open-source standard for HTTPS interception. Interactive Contentviews and HTTP/3 keep it competitive with paid Mac GUIs for power users and automation. Choose Proxyman if you want the least friction; choose mitmproxy if you want free depth and scripts.",
      "image": "https://img.logo.dev/mitmproxy.org",
      "author": {
        "@id": "https://bundl.run/authors/alex-chen#person"
      },
      "publisher": {
        "@id": "https://bundl.run/#organization"
      },
      "datePublished": "2026-01-01T00:00:00Z",
      "dateModified": "2026-08-10T13:34:04.000Z",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://bundl.run/apps/mitmproxy"
      },
      "articleSection": "DeveloperApplication",
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          "h1",
          ".key-facts"
        ]
      },
      "about": {
        "@type": "SoftwareApplication",
        "name": "mitmproxy",
        "url": "https://bundl.run/apps/mitmproxy"
      },
      "mentions": [
        {
          "@type": "SoftwareApplication",
          "name": "Charles Proxy"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://bundl.run/apps/mitmproxy#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "What is the latest mitmproxy version?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "PyPI lists 12.2.3 as of 12 May 2026 within the 12.x Interactive Contentviews line."
          }
        },
        {
          "@type": "Question",
          "name": "Does mitmproxy support HTTP/3?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes. Full HTTP/3 support shipped in mitmproxy 11 and continues in 12.x."
          }
        },
        {
          "@type": "Question",
          "name": "Can I edit gRPC or Protobuf traffic?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes with Interactive Contentviews in v12+, with or without protobuf definitions."
          }
        },
        {
          "@type": "Question",
          "name": "Is mitmproxy free?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes, MIT licensed with no premium SKU."
          }
        },
        {
          "@type": "Question",
          "name": "How does it compare to Proxyman on Mac?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Proxyman offers a smoother Mac-native GUI and cert flow. mitmproxy is free, more scriptable in Python and stronger for binary protocol editing and automation."
          }
        },
        {
          "@type": "Question",
          "name": "Does it run on Apple Silicon Macs?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes. Homebrew and pipx installs work on Apple Silicon. Pair with Keychain trust for local CA."
          }
        },
        {
          "@type": "Question",
          "name": "What interfaces are included?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "mitmproxy (terminal UI), mitmweb (browser UI with multi-select flows) and mitmdump (headless CLI)."
          }
        }
      ],
      "isPartOf": {
        "@id": "https://bundl.run/apps/mitmproxy"
      }
    }
  ]
}
```