What sets us apart
We don’t ask for any personal info – not even your email – and we encourage anonymous payments with cash or cryptocurrency.
Your privacy is your privacy which is why we don’t log your activity. Our long-term goal is to not even store payment details.
We request independent audits of our app and infrastructure to provide transparency and improve our security practices.
The laws relevant to us as a VPN provider based in Sweden make our location a safe place for us and your privacy.
Integrated kill switch
If you have connectivity issues while Mullvad VPN is on, the built-in kill switch will automatically stop all network traffic.
No paid reviews
We steer clear of paid reviews and affiliates and instead let our track record speak for itself.
In-house support team
We don’t outsource your problems. Our dedicated support team works alongside our developers to give you knowledgeable answers.
We have consistently pioneered many technologies and security features that are today regarded as standard practice by VPN services.
Even if you’re a first-time customer, our app is designed to be easy to use so you can get on with protecting your privacy.
Code is open source
Custom DNS server
In-app problem reporting
DNS content blockers
Automatic WireGuard key rotation
The technical stuff
Curious about the protocols, primitives, and other wonderfully nerdy details that Mullvad VPN is built on? Here you go!
VPN protocols in the app
We support two protocols for the VPN tunnel, OpenVPN and WireGuard:
- We limit OpenVPN to TLS 1.3 (for the control channel) and AES-256-GCM (for the data channel). This is implemented in OpenSSL.
- For WireGuard, we use the standard Linux kernel implementation when available. Otherwise we use wireguard-go.
App API connection
The app uses TLS 1.2 or 1.3, implemented in Rustls*, to encrypt the communication with the API. This provides two features:
- The connection uses certificate pinning to prevent MitM attacks.
- To circumvent DNS spoofing, the app doesn’t use DNS to get the IP for the API.
App firewall and security
The app prevents leaks and enables the kill switch functionality by integrating with the system firewall (WFP on Windows, nftables on Linux, and PF on macOS). Learn more on our GitHub page
In all of our servers, we have specified default configurations and orders of priority for encryption to provide the strongest encryption available for each tunnel protocol.
Our OpenVPN servers have the following characteristics:
- 4096-bit RSA certificates (with SHA512) are used for server authentication.
- 4096-bit Diffie-Hellman parameters are used for key exchange
- DHE is utilized for perfect forward secrecy.
- A minimum TLS version of 1.2 is enforced for the control channel, with TLS 1.3 available.
For the latest OpenVPN client versions, we offer the following ciphers, used in the specified order (unless the user applies a different configuration):
- control channel ciphers: TLS_CHACHA20_POLY1305_SHA256, TLS_AES_256_GCM_SHA384.
- data channel ciphers: CHACHA20-POLY1305, AES-256-GCM.
- Re-keying is performed every 60 minutes.
WireGuard is opinionated and offers only one set of cryptographic primitives. See the WireGuard website for details.
Our bridges facilitate connecting to our website, API, and OpenVPN and WireGuard servers in locations where access to them is blocked. Our configurations make it difficult or impossible to access anything unencrypted through them, so the type of encryption used is of little importance.
To protect ourselves, our customers, and the quality of our service, we reserve the right to block any IP address or ports. We block outbound traffic to the following ports at all times:
- port 25 – to prevent spam
- ports 137, 138, 139, 445 – to protect customers from a Microsoft SMB/CIFS security issue
- ports 1900 and 2869 – to protect customers from malicious UPnP configuration.