[
  {
    "id": "networksize",
    "title": "Relays and bridges",
    "type": "Graph",
    "description": "<p>This graph shows the number of running <a href=\"glossary.html#relay\">relays</a> and <a href=\"glossary.html#bridge\">bridges</a> in the network.</p>",
    "function": "networksize",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "relayflags",
    "title": "Relays by relay flag",
    "type": "Graph",
    "description": "<p>This graph shows the number of running <a href=\"glossary.html#relay\">relays</a> that have had certain <a href=\"glossary.html#relay-flag\">flags</a> assigned by the <a href=\"glossary.html#directory-authority\">directory authorities</a>.  These flags indicate that a relay should be preferred for either guard (\"Guard\") or exit positions (\"Exit\"), that a relay is suitable for high-bandwidth (\"Fast\") or long-lived circuits (\"Stable\"), or that a relay is considered a onion service directory (\"HSDir\").</p>",
    "function": "relayflags",
    "parameters": [
      "start",
      "end",
      "flag"
    ]
  },
  {
    "id": "versions",
    "title": "Relays by tor version",
    "type": "Graph",
    "description": "<p>This graph shows the number of running <a href=\"glossary.html#relay\">relays</a> by tor software version.  Relays report their tor software version when they announce themselves in the network.  New major versions are added to the graph as soon as they are first recommended by the directory authorities.  More details on when these versions were declared stable or unstable can be found on the <a href=\"https://www.torproject.org/download/download.html\">download page</a> and in the <a href=\"https://gitweb.torproject.org/tor.git/tree/ChangeLog\">changes file</a>.</p>",
    "function": "versions",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "platforms",
    "title": "Relays by platform",
    "type": "Graph",
    "description": "<p>This graph shows the number of running <a href=\"glossary.html#relay\">relays</a> by operating system.  Relays report their operating system when they announce themselves in the network.</p>",
    "function": "platforms",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "relays-ipv6",
    "title": "Relays by IP version",
    "type": "Graph",
    "description": "<p>This graph shows the number of <a href=\"glossary.html#relay\">relays</a> supporting IPv6 as compared to all relays. A relay can support IPv6 by announcing an IPv6 address and port for the OR protocol, which may then be confirmed as reachable by the <a href=\"glossary.html#directory-authority\">directory authorities</a>, and by permitting exiting to IPv6 targets. These sets are not distinct, because relays can have various combinations of announced/confirmed OR ports and exit policies.</p>",
    "function": "relays_ipv6",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "bridges-ipv6",
    "title": "Bridges by IP version",
    "type": "Graph",
    "description": "<p>This graph shows the number of <a href=\"glossary.html#bridge\">bridges</a> supporting IPv6 as compared to all bridges. A bridge can support IPv6 by announcing an IPv6 address and port for the OR protocol.</p>",
    "function": "bridges_ipv6",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "bandwidth",
    "title": "Total relay bandwidth",
    "type": "Graph",
    "description": "<p>This graph shows the total <a href=\"glossary.html#advertised-bandwidth\">advertised</a> and <a href=\"glossary.html#bandwidth-history\">consumed bandwidth</a> of all <a href=\"glossary.html#relay\">relays</a> in the network.</p>",
    "function": "bandwidth",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "bandwidth-flags",
    "title": "Advertised and consumed bandwidth by relay flags",
    "type": "Graph",
    "description": "<p>This graph shows <a href=\"glossary.html#advertised-bandwidth\">advertised</a> and <a href=\"glossary.html#bandwidth-history\">consumed bandwidth</a> of relays with \"Exit\" and/or \"Guard\" <a href=\"glossary.html#relay-flag\">flags</a> assigned by the directory authorities.</p>",
    "function": "bandwidth_flags",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "dirbytes",
    "title": "Bandwidth spent on answering directory requests",
    "type": "Graph",
    "description": "<p>This graph shows the portion of <a href=\"glossary.html#bandwidth-history\">consumed bandwidth</a> that <a href=\"glossary.html#directory-authority\">directory authorities</a> and <a href=\"glossary.html#directory-mirror\">directory mirrors</a> have spent on answering directory requests.</p>",
    "function": "dirbytes",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "advbw-ipv6",
    "title": "Advertised bandwidth by IP version",
    "type": "Graph",
    "description": "<p>This graph shows total <a href=\"glossary.html#advertised-bandwidth\">advertised bandwidth</a> by relays supporting IPv6 as compared to all relays. A relay can support IPv6 by announcing an IPv6 address and port for the OR protocol, which may then be confirmed as reachable by the <a href=\"glossary.html#directory-authority\">directory authorities</a>, and by permitting exiting to IPv6 targets. In some cases, relay sets are broken down by whether relays got the \"Guard\" and/or \"Exit\" <a href=\"glossary.html#relay-flag\">relay flags</a> indicating their special qualification for the first or last position in a <a href=\"glossary.html#circuit\">circuit</a>. These sets are not distinct, because relays can have various combinations of announced/confirmed OR ports, exit policies, and relay flags.</p>",
    "function": "advbw_ipv6",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "advbwdist-perc",
    "title": "Advertised bandwidth distribution",
    "type": "Graph",
    "description": "<p>This graph shows the distribution of the <a href=\"glossary.html#advertised-bandwidth\">advertised bandwidth</a> of relays in the network.  Each percentile represents the advertised bandwidth that a given percentage of relays does not exceed (and that in turn the remaining relays either match or exceed).  For example, 99% of relays advertise at most the bandwidth value shown in the 99th percentile line (and the remaining 1% advertise at least that amount).</p>",
    "function": "advbwdist_perc",
    "parameters": [
      "start",
      "end",
      "p"
    ]
  },
  {
    "id": "advbwdist-relay",
    "title": "Advertised bandwidth of n-th fastest relays",
    "type": "Graph",
    "description": "<p>This graph shows the <a href=\"glossary.html#advertised-bandwidth\">advertised bandwidth</a> of the n-th fastest relays in the network for different values of n.</p>",
    "function": "advbwdist_relay",
    "parameters": [
      "start",
      "end",
      "n"
    ]
  },
  {
    "id": "bubbles",
    "title": "Network bubble graphs",
    "type": "Graph"
  },
  {
    "id": "userstats-relay-country",
    "title": "Relay users",
    "type": "Graph",
    "description": "<p>This graph shows the estimated number of directly-connecting <a href=\"glossary.html#client\">clients</a>; that is, it excludes clients connecting via <a href=\"glossary.html#bridge\">bridges</a>.  These estimates are derived from the number of directory requests counted on <a href=\"glossary.html#directory-authority\">directory authorities</a> and <a href=\"glossary.html#directory-mirror\">mirrors</a>.  Relays resolve client IP addresses to country codes, so that graphs are available for most countries.  Furthermore, it is possible to display indications of censorship events as obtained from an anomaly-based censorship-detection system (for more details, see this <a href=\"https://research.torproject.org/techreports/detector-2011-09-09.pdf\">technical report</a>).  For further details see these <a href=\"https://gitweb.torproject.org/metrics-web.git/tree/src/main/resources/doc/users-q-and-a.txt\">questions and answers about user statistics</a>.</p>",
    "function": "userstats_relay_country",
    "parameters": [
      "start",
      "end",
      "country",
      "events"
    ],
    "include_related_events": true
  },
  {
    "id": "userstats-relay-table",
    "title": "Top-10 countries by relay users",
    "type": "Table",
    "description": "<p>This table shows the top-10 countries by estimated number of directly-connecting <a href=\"glossary.html#client\">clients</a>.  These numbers are derived from directory requests counted on <a href=\"glossary.html#directory-authority\">directory authorities</a> and <a href=\"glossary.html#directory-mirror\">mirrors</a>.  Relays resolve client IP addresses to country codes, so that numbers are available for most countries.  For further details see these <a href=\"https://gitweb.torproject.org/metrics-web.git/tree/src/main/resources/doc/users-q-and-a.txt\">questions and answers about user statistics</a>.</p>",
    "function": "write_userstats_relay",
    "parameters": [
      "start",
      "end"
    ],
    "table_headers": [
      "Country",
      "Mean daily users"
    ],
    "table_cell_formats": [
      "<a href=\"userstats-relay-country.html?graph=userstats-relay-country&amp;country=${cc}\">${country}</a>&emsp;",
      "${abs} (${rel} %)"
    ]
  },
  {
    "id": "userstats-censorship-events",
    "title": "Top-10 countries by possible censorship events",
    "type": "Table",
    "description": "<p>This table shows the top-10 countries by possible censorship events, as obtained from an anomaly-based censorship-detection system (for more details, see this <a href=\"https://research.torproject.org/techreports/detector-2011-09-09.pdf\">technical report</a>).  For further details see these <a href=\"https://gitweb.torproject.org/metrics-web.git/tree/src/main/resources/doc/users-q-and-a.txt\">questions and answers about user statistics</a>.</p>",
    "function": "write_userstats_censorship_events",
    "parameters": [
      "start",
      "end"
    ],
    "table_headers": [
      "Country",
      "Downturns",
      "Upturns"
    ],
    "table_cell_formats": [
      "<a href=\"userstats-relay-country.html?graph=userstats-relay-country&amp;country=${cc}&events=on\">${country}</a>&emsp;",
      "${downturns}",
      "${upturns}"
    ]
  },
  {
    "id": "userstats-bridge-country",
    "title": "Bridge users by country",
    "type": "Graph",
    "description": "<p>This graph shows the estimated number of <a href=\"glossary.html#client\">clients</a> connecting via <a href=\"glossary.html#bridge\">bridges</a>.  These numbers are derived from directory requests counted on bridges.  Bridges resolve client IP addresses of incoming directory requests to country codes, so that graphs are available for most countries.  For further details see these <a href=\"https://gitweb.torproject.org/metrics-web.git/tree/src/main/resources/doc/users-q-and-a.txt\">questions and answers about user statistics</a>.</p>",
    "function": "userstats_bridge_country",
    "parameters": [
      "start",
      "end",
      "country"
    ],
    "include_related_events": true
  },
  {
    "id": "userstats-bridge-table",
    "title": "Top-10 countries by bridge users",
    "type": "Table",
    "description": "<p>This table shows the top-10 countries by estimated number of <a href=\"glossary.html#client\">clients</a> connecting via <a href=\"glossary.html#bridge\">bridges</a>.  These numbers are derived from directory requests counted on bridges.  Bridges resolve client IP addresses of incoming directory requests to country codes, so that numbers are available for most countries.  For further details see these <a href=\"https://gitweb.torproject.org/metrics-web.git/tree/src/main/resources/doc/users-q-and-a.txt\">questions and answers about user statistics</a>.</p>",
    "function": "write_userstats_bridge",
    "parameters": [
      "start",
      "end"
    ],
    "table_headers": [
      "Country",
      "Mean daily users"
    ],
    "table_cell_formats": [
      "<a href=\"userstats-bridge-country.html?graph=userstats-bridge-country&amp;country=${cc}\">${country}</a>&emsp;",
      "${abs} (${rel} %)"
    ]
  },
  {
    "id": "userstats-bridge-transport",
    "title": "Bridge users by transport",
    "type": "Graph",
    "description": "<p>This graph shows the estimated number of <a href=\"glossary.html#client\">clients</a> connecting via <a href=\"glossary.html#bridge\">bridges</a>.  These numbers are derived from directory requests counted on bridges.  Bridges distinguish connecting clients by transport protocol, which may include <a href=\"glossary.html#pluggable-transport\">pluggable transports</a>, so that graphs are available for different transports.  For further details see these <a href=\"https://gitweb.torproject.org/metrics-web.git/tree/src/main/resources/doc/users-q-and-a.txt\">questions and answers about user statistics</a>.</p>",
    "function": "userstats_bridge_transport",
    "parameters": [
      "start",
      "end",
      "transport"
    ],
    "include_related_events": true
  },
  {
    "id": "userstats-bridge-combined",
    "title": "Bridge users by country and transport",
    "type": "Graph",
    "description": "<p>This graph shows the estimated number of <a href=\"glossary.html#client\">clients</a> connecting via <a href=\"glossary.html#bridge\">bridges</a>.  These numbers are derived from directory requests counted on bridges.  Bridges resolve client IP addresses of incoming directory requests to country codes, and they distinguish connecting clients by transport protocol, which may include <a href=\"glossary.html#pluggable-transport\">pluggable transports</a>.  Even though bridges don't report a combination of clients by country and transport, it's possible to derive and graph lower and upper bounds from existing usage statistics.  For further details see these <a href=\"https://gitweb.torproject.org/metrics-web.git/tree/src/main/resources/doc/users-q-and-a.txt\">questions and answers about user statistics</a>.</p>",
    "function": "userstats_bridge_combined",
    "parameters": [
      "start",
      "end",
      "country"
    ],
    "include_related_events": true
  },
  {
    "id": "userstats-bridge-version",
    "title": "Bridge users by IP version",
    "type": "Graph",
    "description": "<p>This graph shows the estimated number of <a href=\"glossary.html#client\">clients</a> connecting via <a href=\"glossary.html#bridge\">bridges</a>.  These numbers are derived from directory requests counted on bridges.  Bridges distinguish connecting clients by IP version, so that graphs are available for both IP versions 4 and 6.  For further details see these <a href=\"https://gitweb.torproject.org/metrics-web.git/tree/src/main/resources/doc/users-q-and-a.txt\">questions and answers about user statistics</a>.</p>",
    "function": "userstats_bridge_version",
    "parameters": [
      "start",
      "end",
      "version"
    ],
    "include_related_events": true
  },
  {
    "id": "oxford-anonymous-internet",
    "title": "&ldquo;The anonymous Internet&rdquo;",
    "type": "Link",
    "description": "<p>The Oxford Internet Institute made a cartogram visualization of Tor users as compared to the overall Internet population.  They used the average number of Tor <a href=\"glossary.html#client\">users</a> per country from August 2012 to August 2013 and put it in relation to total Internet users per country.  More details and conclusions can be found on the <a href=\"http://geography.oii.ox.ac.uk/the-anonymous-internet/\" target=\"_blank\">Information Geographies website at the Oxford Internet Institute</a>.</p><p><a href=\"http://geography.oii.ox.ac.uk/the-anonymous-internet/\"><img src=\"images/oxford-anonymous-internet.png\" alt=\"The anonymous Internet\"></a></p>"
  },
  {
    "id": "torperf",
    "title": "Time to download files over Tor",
    "type": "Graph",
    "description": "<p>This graph shows overall performance when downloading static files of different sizes over Tor, either from a server on the public internet or from a version 2 onion server.  The graph shows the range of measurements from first to third quartile, and highlights the median.  The slowest and fastest quarter of measurements are omitted from the graph.</p>",
    "function": "torperf",
    "parameters": [
      "start",
      "end",
      "server",
      "filesize"
    ]
  },
  {
    "id": "torperf-failures",
    "title": "Timeouts and failures of downloading files over Tor",
    "type": "Graph",
    "description": "<p>This graph shows the fraction of timeouts and failures when downloading static files of different sizes over Tor, either from a server on the public internet or from a version 2 onion server.  A timeout occurs when a download does not complete within the scheduled time, in which case it is aborted in order not to overlap with the next scheduled download.  A failure occurs when the download completes, but the response is smaller than expected.</p>",
    "function": "torperf_failures",
    "parameters": [
      "start",
      "end",
      "server",
      "filesize"
    ]
  },
  {
    "id": "onionperf-buildtimes",
    "title": "Circuit build times",
    "type": "Graph",
    "description": "<p>This graph shows build times of circuits used for downloading static files of different sizes over Tor. We disable Entry Guards in the Tor client configuration used by OnionPerf, to ensure a new guard is selected for each circuit we measure. In comparison, standard clients will reuse connections to a small number of long-term entry guards, and do not see the latency introduced by establishing new guard connections. As a result, first hop build times appear higher for these measurements compared to those commonly observed in Tor clients. The graph shows the range of measurements from first to third quartile, and highlights the median. The slowest and fastest quarter of measurements are omitted from the graph.</p>",
    "function": "onionperf_buildtimes",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "onionperf-latencies",
    "title": "Circuit round-trip latencies",
    "type": "Graph",
    "description": "<p>This graph shows round-trip latencies of circuits used for downloading static files of different sizes over Tor, either from a server on the public internet or from a version 2 onion server. Round-trip latencies are measured as the time between sending the HTTP request and receiving the HTTP response header. The graph shows the median of measurements as thick line, the range of measurements from first to third quartile as ribbon, and the highest and lowest non-outlier measurements as thin lines.</p>",
    "function": "onionperf_latencies",
    "parameters": [
      "start",
      "end",
      "server"
    ]
  },
  {
    "id": "onionperf-throughput",
    "title": "Throughput",
    "type": "Graph",
    "description": "<p>This graph shows throughput when downloading static files of different sizes over Tor, either from a server on the public internet or from a version 2 onion server. Throughput is calculated from the time between receiving 0.5 and 1 MiB of the response. The graph shows the median of measurements as thick line, the range of measurements from first to third quartile as ribbon, and the highest and lowest non-outlier measurements as thin lines.</p>",
    "function": "onionperf_throughput",
    "parameters": [
      "start",
      "end",
      "server"
    ]
  },
  {
    "id": "connbidirect",
    "title": "Fraction of connections used uni-/bidirectionally",
    "type": "Graph",
    "description": "<p>This graph shows the fraction of direct connections between a <a href=\"glossary.html#relay\">relay</a> and other nodes in the network that are used uni- or bi-directionally.  Every 10 seconds, relays determine for every direct connection whether they read and wrote less than a threshold of 20 KiB.  Connections below this threshold are excluded from the graph.  For the remaining connections, relays determine whether they read/wrote at least 10 times as many bytes as they wrote/read.  If so, they classify a connection as \"Mostly reading\" or \"Mostly writing\", respectively.  All other connections are classified as \"Both reading and writing\".  After classifying connections, read and write counters are reset for the next 10-second interval.  The graph shows daily medians and inter-quartile ranges of reported fractions.</p>",
    "function": "connbidirect",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "hidserv-dir-onions-seen",
    "title": "Unique .onion addresses (version 2 only)",
    "type": "Graph",
    "description": "<p>This graph shows the number of unique .onion addresses for version 2 onion services in the network per day.  These numbers are extrapolated from aggregated statistics on unique version 2 .onion addresses reported by single <a href=\"glossary.html#relay\">relays</a> acting as <a href=\"glossary.html#onion-service\">onion-service</a> directories, if at least 1% of relays reported these statistics.  For more details on the extrapolation algorithm, see <a href=\"https://blog.torproject.org/blog/some-statistics-about-onions\">this blog post</a> and <a href=\"https://research.torproject.org/techreports/extrapolating-hidserv-stats-2015-01-31.pdf\">this technical report</a>.</p>",
    "function": "hidserv_dir_onions_seen",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "hidserv-rend-relayed-cells",
    "title": "Onion-service traffic (versions 2 and 3)",
    "type": "Graph",
    "description": "<p>This graph shows the amount of onion-service traffic from version 2 and version 3 onion services relayed by <a href=\"glossary.html#rendezvous-point\">rendezvous points</a>.  This number is extrapolated from aggregated statistics on onion-service traffic reported by single <a href=\"glossary.html#relay\">relays</a> acting as <a href=\"glossary.html#rendezvous-point\">rendezvous points</a> for version 2 and 3 <a href=\"glossary.html#onion-service\">onion services</a>, if at least 1% of relays reported these statistics.  For more details on the extrapolation algorithm, see <a href=\"https://blog.torproject.org/blog/some-statistics-about-onions\">this blog post</a> and <a href=\"https://research.torproject.org/techreports/extrapolating-hidserv-stats-2015-01-31.pdf\">this technical report</a>.</p>",
    "function": "hidserv_rend_relayed_cells",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "uncharted-data-flow",
    "title": "&ldquo;TorFlow&rdquo;",
    "type": "Link",
    "description": "<p>Uncharted made a visualization of data flow in the Tor network where they place each <a href=\"glossary.html#relay\">relay</a> on a world map and illustrate traffic exchanged between relays as animated dots. More details can be found on the <a href=\"https://torflow.uncharted.software/\" target=\"_blank\">Uncharted website</a>.</p><p><a href=\"https://torflow.uncharted.software/\"><img src=\"images/uncharted-data-flow.png\" alt=\"Data flow in the Tor network\"></a></p>"
  },
  {
    "id": "uptimes",
    "title": "Monthly uptime of relays",
    "type": "Link",
    "description": "<p>This image illustrates the uptime of all known <a href=\"glossary.html#relay\">relays</a> in a given month.  Each row of pixels denotes one <a href=\"glossary.html#consensus\">consensus</a> (that is, one hour), and each column denotes one relay.  Each pixel denotes if a given relay was online or offline at a given hour: black means online, white means offline, and red highlights relays with identical uptime patterns.  The complete image gallery can be found on <a href=\"https://nymity.ch/sybilhunting/uptime-visualisation/\" target=\"_blank\">Philipp Winter's homepage</a>.</p><p><a href=\"https://nymity.ch/sybilhunting/uptime-visualisation/\"><img src=\"images/uptimes.jpg\" alt=\"Monthly uptime of relays\"></a></p>"
  },
  {
    "id": "networkchurn",
    "title": "Network churn rate by relay flag",
    "type": "Link",
    "description": "<p>This image shows the churn rate of the Tor network by <a href=\"glossary.html#relay-flag\">relay flag</a> in a given month.  The churn rate, a value in the interval <b>[0,1]</b>, captures the rate of <a href=\"glossary.html#relay\">relays</a> joining and leaving the network from one <a href=\"glossary.html#consensus\">consensus</a> to the next (that is, within one hour).  The complete image gallery can be found on <a href=\"https://nymity.ch/sybilhunting/churn-values/\" target=\"_blank\">Philipp Winter's homepage</a>.</p><p><a href=\"https://nymity.ch/sybilhunting/churn-values/\"><img src=\"images/networkchurn.png\" alt=\"Network churn rate by relay flag\"></a></p>"
  },
  {
    "id": "webstats-tb",
    "title": "Tor Browser downloads and updates",
    "type": "Graph",
    "description": "<p>This graph shows absolute numbers of requests to Tor's web servers related to Tor Browser.  <em>Initial downloads</em> and <em>signature downloads</em> are requests made by the user to download a Tor Browser executable or a corresponding signature file from the Tor website.  <em>Update pings</em> and <em>update requests</em> are requests made by Tor Browser to check whether a newer version is available or to download a newer version.</p>",
    "function": "webstats_tb",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "webstats-tb-platform",
    "title": "Tor Browser downloads and updates by platform",
    "type": "Graph",
    "description": "<p>This graph shows absolute numbers of requests to Tor's web servers to download a Tor Browser executable and requests made by Tor Browser to check for an update, broken down by platform (Windows, macOS, Linux). Note that, at least for initial downloads, this graph does <em>not</em> show the platform used to download Tor Browser but the platform that it was downloaded for.</p>",
    "function": "webstats_tb_platform",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "webstats-tb-locale",
    "title": "Tor Browser downloads and updates by locale",
    "type": "Graph",
    "description": "<p>This graph shows absolute numbers of requests to Tor's web servers to download a Tor Browser executable and requests made by Tor Browser to check for an update, broken down by locale.</p>",
    "function": "webstats_tb_locale",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "webstats-tb-channel",
    "title": "Tor Browser updates by release channel",
    "type": "Graph",
    "description": "<p>This graph shows absolute numbers of requests to Tor's web servers made by Tor Browser to check whether a newer version is available or to download a newer version, broken down by release channel.</p>",
    "function": "webstats_tb_channel",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "webstats-tm",
    "title": "Tor Messenger downloads and updates",
    "type": "Graph",
    "description": "<p>This graph shows absolute numbers of requests to Tor's web servers related to Tor Messenger.  <em>Initial downloads</em> are requests made by the user to download a Tor Messenger executable from the Tor website.  <em>Update pings</em> are requests made by Tor Messenger to check whether a newer version is available.</p><p>Note that <a href=\"https://blog.torproject.org/sunsetting-tor-messenger\">Tor Messenger has been sunset</a> on April 2, 2018. This graph is soon going to disappear, too.</p>",
    "function": "webstats_tm",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "totalcw",
    "title": "Total consensus weights across bandwidth authorities",
    "type": "Graph",
    "description": "<p>This graph shows total consensus weights across bandwidth authorities. This graph may be useful for comparing bandwidth authority implementations by comparing their total bandwidth weights.</p>",
    "function": "totalcw",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "bridgedb-transport",
    "title": "BridgeDB requests by requested transport",
    "type": "Graph",
    "description": "<p>This graph shows the number of BridgeDB requests for each requested transport. BridgeDB requests over Tor are not included in these numbers.</p>",
    "function": "bridgedb_transport",
    "parameters": [
      "start",
      "end"
    ]
  },
  {
    "id": "bridgedb-distributor",
    "title": "BridgeDB requests by distributor",
    "type": "Graph",
    "description": "<p>This graph shows the number of BridgeDB requests for each distributor. HTTPS requests over Tor are not included in these numbers.</p>",
    "function": "bridgedb_distributor",
    "parameters": [
      "start",
      "end"
    ]
  }
]
