Setting up Charles Web Debugging Proxy to debug ads

Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information). It is immensely helpful when debugging ad delivery and is likely already the tool of choice for adops.

Charles runs on Mac, Windows and Unix and the $50 license fee is worth every penny when you have an ad that needs debugging.

Since ad requests are sent over SSL, they are difficult/impossible to inspect in the browser’s debug console. Charles fixes that because it can be used as a man-in-the-middle HTTPS proxy, enabling you to view in plain text the communication between the web browser and SSL ad server.

Step by Step Setup Guide


  • If the certificate appears as untrusted, make sure to double click it and select “Always Trust” otherwise Charles may have failed responses:



  • Enable SSL Proxying in Charles to the url: load a page with ads, then right click on the url in the structure tab and select ‘Enable SSL Proxying’


  • Chrome should now work. To use with firefox, install the Charles extension:, and manually add the securepubads domain certificate.
  • Limit Charles to recording ad requests: add a filter for under proxy->recording settings->include:



Debugging Ad Requests

  • Load a page with ads
  • Select an ad call in the left hand pane for a request overview:


  • Check out the request tab to examine details of the request:


  • Check out the Response tab to inspect the actual ads the ad server returned. The _html_ field shows the code delivered by the ad server.


Happy Ad Debugging!