Version 8 (modified by cypherpunks, 3 years ago) (diff)


List of Pluggable Transports

Currently deployed PTs

These Pluggable Transports are currently deployed in Tor Browser, and you can start using them by downloading and using Tor Browser.


  • Description: Is a transport with the same features as ScrambleSuit but utilizing Dan Bernstein's elligator2 technique for public key obfuscation, and the tor protocol for one-way authentication. This results in a faster protocol.
  • Language: Go
  • Maintainer: Yawning Angel
  • Evaluation: Obfs4 Evaluation


  • Description: Uses HTTP, relays through a third party, TLS for obfuscation.
  • Language: Go.
  • Maintainer: David Fifield
  • Evaluation: meek Evaluation

Format-Transforming Encryption (FTE)

  • Description: Transforms data to arbitrary application-layer traffic.
  • Language: Python/C++
  • Maintainer: Kevin Dyer
  • Evaluation: FTE Evaluation


  • Description: Sophisticated look-like-nothing pluggable transport (in obfsproxy)
  • Language: Python
  • Maintainer: Philipp Winter
  • Evaluation: ScrambleSuit Evaluation
  • Status: Deployed, but superseded by obfs4 (Tor Browser)

Deprecated PTs;

These PTs was once part of Tor Browser, but are not used anymore, most of the time because a better version have come out.


  • Description: Look-like-nothing pluggable transport.
  • Language: Python
  • Notes: Superseded by Dust2
  • Maintainer: Brandon Wiley


  • Description: Pluggable transport with modular output formats.
  • Language: C++
  • Notes: Part of DEFIANCE framework
  • Maintainer: vmon (?)

Undeployed PTs

These Pluggable Transports exist but are not deployed as part of the Tor Browser.



  • Description: Look-like-nothing pluggable transport (in obfsproxy)
  • Language: Python
  • Notes: Superseded by obfs3
  • Maintainer: asn
  • Evaluation: obfs2 Evaluation


Other PTs being developed


  • Description: Intends to modernize the flashproxy concept with a more modern NAT traversal algorithm centered around ​WebRTC.
  • Language: The implementation is mostly Go, except for the WebRTC implementation, written in C/C++, which is called from the Go application via the cgo FFI interface.
  • Maintainer: Serene H.
  • Evaluation: SnowFlake Evaluation


  • Description: Modular obfs4 update with fingerprinting resistance, framing, negotiation, PQ
  • Language: Go
  • Maintainer: Yawning
  • Evaluation: basket2 Evaluation


  • Description: transforms Tor traffic flows so they look like Skype Video - design paper.
  • Maintained: Ian Goldberg.


  • Description: Markov-chains pluggable transport
  • Language: Python
  • Maintainer: David Stainton


  • Description: UDP-based pluggable transport.
  • Language: C
  • Maintainer: Yawning


  • Description: SSH-based pluggable transport.
  • Language: Python
  • Notes: Actually uses the ssh binary
  • Maintainer: Yawning


  • Description: XMPP-based pluggable transport.
  • Language: Python (SleekXMPP)
  • Notes: Bandwidth issues since most XMPP servers are throttled. Can be solved maybe with multiple hexchat bots.
  • Maintainer: Feynmann


  • Description: Transforms traffic to arbitrary formats based on sample traffic.
  • Language: Go / Python
  • Evaluation: Dust2 Evaluation
  • Maintainer: Brandon Wiley

Code Talker Tunnel (previously: SkypeMorph)

  • Description: Skype-based pluggable transport
  • Language: C/C++
  • Notes: Actually uses the Skype binary
  • Maintainer: Ian Goldberg


  • Description: Git-based pluggable transport (in obfsproxy)
  • Language: Python
  • Notes: Git is poll-based. Slow.
  • Maintainer: Björgvin Ragnarsson && Pieter Westein


  • Description: Encodes messages as commands in online video games.
  • Status: Prototyped.
  • Language: C++.

PT libraries

  • pyptlib is a Python library which makes it easier to turn a proxy into a Tor pluggable transport.
  • goptlib is a pluggable transports library for golang. Check the example client and example server.
  • PLUTO: Pluggable Libraries Using Transport Obfuscation for Android.
  • liballium is a C/C++ library for people that absolutely need to use C or C++ for a pluggable transport.