Acceptable
Mullvad VPN
Paying monthly
$5.69 per month
Paying yearly
$69.60 billed once a year
Coverage
50 countries with an exit
Free tier
No paid plans only
Security
Usability
Mullvad VPN was assessed by the HushFleet team and placed in the Acceptable band, with a security score of 60/100 and a usability score of 64/100. In the overall security ranking of VPN providers it ranks 2 of 68. Commercial VPN, company jurisdiction Sweden. It has an independent security audit: the full report is published, evidence level B.
7 fields sit on this record without entering the score, and the contract says so in the field itself: scored: false. They are here because a reader asking who owns this company, or who signed the audit, is asking something the record answers — and because a value that never touches the arithmetic should be visibly outside it rather than quietly mixed in.
Every country the provider offers an exit location in, counted from its own server page: 50. There are no per-country server counts here and no fleet total anywhere on the site — the contract carries neither, and a number nobody can source is worse than an absent one. The 1 countries marked mandate impose data retention; that mark comes from the methodology’s own country table, not from the provider.
Alternatives
Acceptable
Paying monthly
$5.69 per month
Paying yearly
$69.60 billed once a year
Coverage
50 countries with an exit
Free tier
No paid plans only
Security
Usability
| Offered countries that sit under a logging mandateC09_mandate_countries | Turkey |
|---|---|
| Country of the ultimate beneficial ownerM11_owner_jurisdiction | SE |
| Owner group cluster keyM15_owner_group | independent |
| Date the current owner took controlM16_control_since | not applicable |
| Role of this brand inside the groupM17_brand_role | principal |
| Infrastructure shared with cluster siblingsM18_shared_infrastructure | separate |
| Total published auditsV10_audit_count | 8 |
| Service class | Commercial VPN — security leads |
|---|---|
| Security score | 60 of 100 · Acceptable |
| Usability score | 64 of 100 · state known · 75% established · 79.4% of the weight read |
| Legal entity | Mullvad VPN AB, Box 53049, 400 14 Gothenburg, Sweden |
| Jurisdiction | Sweden |
| Ultimate owner | Amagicom AB, 100% owned by founders Fredrik Stromberg and Daniel Berntsson |
| Exposure | Medium · dominant channel: retention |
| Retention | Nothing that links traffic to a person |
| Latest audit | Assured Security Consultants (GotaTun code review) and Leviathan Security Group (Android Mobile App Profile assessment) — two engagements, both reports dated 2026-02-17 · 17 Feb 2026 · Repeated, at no fixed interval · Yes, and the report was read |
| Countries with exits | 50 |
| Protocols | WireGuard |
| Works under active censorship | Claimed to work |
| Weakest protocol still offered | not applicable |
| Own DNS inside the tunnel | Yes, on the provider's word |
| Platforms | AndroidiOSLinuxmacOSWindows |
| Simultaneous devices | 5 |
| Kill switch | unknown |
| Split tunnelling | Available |
| Signing up | No account needed |
| Free tier | No free tier |
| P2P allowed | unknown |
| Major streaming services reachable | unknown |
| Price, monthly | $5.69 per month |
| Price, yearly | $69.60 a year at renewal, billed once |
25 Sep 20261 changes
Monthly price USD, month-to-month plan, as chargedU04_price_monthly
5.8 changed to 5.69
12 Sep 20266 changes
Security scoresecurity.score
65 changed to 64
Security scoresecurity.score
64 changed to 60
Works under active censorshipU06_censorship_circumvention
none changed to claimed
Usability scoreusability.score
55 changed to 64
Monthly price USD, month-to-month plan, as chargedU04_price_monthly
5.79 changed to 5.8
Yearly plan price USD, first term as chargedU04b_price_yearly
69.48 changed to 69.6
30 Aug 20261 changes
Weakest protocol still offeredC13_weakest_protocol
wireguard changed to not on the record
29 Aug 20262 changes
Weakest protocol still offeredC13_weakest_protocol
not on the record changed to wireguard
Servers in the fleet, as claimedU03_network_size
700 changed to not on the record
29 Aug 202612 changes
Fastest protocol offeredU07_modern_protocol
wireguard changed to not on the record
Protocols offeredU07_protocols
not on the record changed to wireguard
Yearly plan price USD, first term as chargedU04b_price_yearly
not on the record changed to 5
Monthly price USD, month-to-month plan, as chargedU04_price_monthly
5 changed to 5.79
Yearly plan price USD, first term as chargedU04b_price_yearly
5 changed to 5.79
Yearly plan price USD, first term as chargedU04b_price_yearly
5.79 changed to 69.48
Weakest protocol still offeredC13_weakest_protocol
wireguard changed to not on the record
Protocols offeredU07_protocols
wireguard
not on the recordUsability scoreusability.score
55 changed to 49
Weakest protocol still offeredC13_weakest_protocol
not on the record changed to wireguard
Protocols offeredU07_protocols
not on the record changed to wireguard
Usability scoreusability.score
49 changed to 55
28 Aug 202612 changes
Usability scoreusability.score
58 changed to 55
Why this provider is in the catalogueM14_inclusion_basis
market_incumbent changed to hand_picked
Security scoresecurity.score
64 changed to 63
Anonymous payment optionsC05_payment_anonymous
cash, crypto_processor changed to cash, crypto_direct, voucher
Security scoresecurity.score
63 changed to 64
App store data declaration against the provider's own policyX12_store_data_declaration
not on the record changed to matches_policy
Security scoresecurity.score
64 changed to 65
Subject of the latest auditV03_audit_subject
protocol changed to protocol, app_security
Auditor nameV05_audit_firm
Assured Security Consultants (GotaTun code review, 2026) changed to Assured Security Consultants (GotaTun code review) and Leviathan Security Group (Android Mobile App Profile assessment) — two engagements, both reports dated 2026-02-17
Audit cadenceV09_audit_regularity
annual_series changed to repeated_irregular
Total published auditsV10_audit_count
7 changed to 8
Usability stateusability.state
not on the record changed to known
27 Aug 20261 changes
Server fleet coverageV04_scope_servers
sample changed to not on the record
Coverage147countries
Paying monthly$9.99monthly
Paying yearly$53.88yearly total
Free tierYeslimited free plan
Devices10at once
Security
Usability
Coverage41countries
Paying monthly$6.00monthly
Paying yearly$60.00yearly total
Free tierNopaid plans only
Devices5at once
Security
Usability
Coverage23countries
Paying monthly$8.11monthly
Paying yearly$56.74yearly total
Free tierNopaid plans only
Devices5at once
Security
Usability
Eight channels, each asking one question of the published record and reading a named set of fields to answer it. They multiply rather than add — the factor beside a channel is what is left after the pressure it found, and open a channel to see every field it read, as it is stored. How the model works
Security fields
67 55 of them feed a channel
Established
54 7 left unknown, 6 not applicable
Completeness
87% the share the model could weigh
Citations
74 across 25 documents
Every value carries what it rests on, and the model weighs the four levels differently. Weight, then how many citations on this record sit at that level:
A weighs 1.00 · 9 hereB weighs 0.85 · 61 hereC weighs 0.70 · 4 here
The weights are methodology.json’s own; a claim seen in the artefact itself counts for more than the same claim reported second-hand. The date at the end of a row is the day that value was last read.
A channel does not price every field it reads. The ones it did are marked along their edge and carry what they added; everything else was read and cost nothing. Only a channel that composes field by field can mark a field at all — the rest price themselves by the parameters printed above their rows.
Still open on this record.
The audit cadence. Mullvad publishes an audit index in the app repository and it is honest about cadence: the index states outright that the main app audits happen every two years, with extras in between, which is why regularity is recorded as repeated at no fixed interval rather than as an annual series — no annual cadence is claimed by anyone.
Two reports, one date. Two separate engagements share 2026-02-17 and the record names both: Assured's code review of GotaTun, the userspace WireGuard implementation (no critical, high or medium issues; two low and nine notes), and Leviathan's Mobile App Profile assessment of the Android app, whose compliance report gives February 17, 2026 as its date of evaluation and AL2 as its assurance level. One date, two reports, no contradiction.
Why the count reads eight. The audit count is eight because the GotaTun review sits outside the app repository's own list. Before them, a 30 person-day X41 D-Sec review across all five platforms found six vulnerabilities — three high, two medium, one low, none critical.
What no engagement covers. What none of these engagements covers is the server fleet: every one of them examines the app or the tunnel protocol, which is why fleet coverage is recorded as not applicable rather than as a sample. The no-logs claim on the infrastructure side therefore rests on the April 2023 search warrant — Swedish police came for customer data and left without it — and not on any audit.
Reproducible builds, Android only. Reproducible builds are Android-only, from version 2025.2 onward, so the field stays partial; the desktop and iOS builds are not verifiable bit-for-bit. Turkey is the one mandate country on the offered list and the hosting behind it is not established.
Nothing published about demands. Nothing on record rests on anything the provider publishes about demands it receives: there is no transparency report and no warrant canary, so the April 2023 seizure carries that ground alone. Kill-switch coverage and P2P policy are unestablished; the latest audit is a protocol code review, not a no-logs engagement, so V11 is silent and retention leans on the declaration.
On the record as a whole.
The April 2023 search warrant is the strongest single item in this record: police attended the office and left with nothing, which is practice evidence rather than paper and ages far more slowly than an audit. Pricing is a flat 5 EUR/month on every term; U04_price_monthly carries 5.80 (the USD equivalent Mullvad states on its own page); U04b_price_yearly is 69.60, the full year at that rate.
Composed rather than added: a prior of 0.55 on the silent branch, moved by what the paper says (0.0687) and by what the practice shows (0.608), at credence 0.6389 from the audit and 0.855 from how the provider engaged, against a severity of 0.03 for what is actually retained.
Retention linkable to a person as declaredmaterialC01_linkable_retention
none_linkable
Bmullvad.net13 Aug 2026
Report a problem with C01_linkable_retentionPersistent device identifier the provider holdsC12_device_identifier
none
Bplay.google.com15 Aug 2026
Report a problem with C12_device_identifierComputed
×0.601 of a clean record completeness 87%
Where the drop comes from: Retention. It is the channel this record's risk is concentrated in — on its own it takes a clean record to ×0.782, and its bar above is filled to that.
Exposure is recorded as medium and the integrity status as clean.
This record sits above the register's average on all 8 channels. The narrowest margin is Disclosure, ×1.000 against ×0.970.
Published score
60Every row above is one field of the published record, and every one of them can be challenged: every row carries Report, or raise something about the record as a whole. A correction with a source behind it is made the same day, and if it moves the score it moves the rank.
How the report is publishedV02_report_publication
full_pdf
Bgithub.com17 Feb 2026
Report a problem with V02_report_publicationSubject of the latest auditV03_audit_subject
protocolapp_security
Aassured.seAgithub.com28 Aug 2026
Report a problem with V03_audit_subjectServer fleet coverageV04_scope_servers
not applicable
nothing published · recorded as asserted
Auditor categoryV06_firm_category
security_specialist
Bgithub.com17 Feb 2026
Report a problem with V06_firm_categoryAssurance standardV07_audit_standard
other
Bgithub.com17 Feb 2026
Report a problem with V07_audit_standardDate of latest reportmaterialV08_audit_date_latest
2026-02-17
Aassured.seAgithub.com28 Aug 2026
Report a problem with V08_audit_date_latestAudit cadenceV09_audit_regularity
repeated_irregular
Bgithub.com28 Aug 2026
Report a problem with V09_audit_regularityWhat the report states is retainedV11_audit_findings
not_stated
Bgithub.com17 Feb 2026
Report a problem with V11_audit_findingsStrength of the assurance opinionV15_assurance_strength
not applicable
nothing published · recorded as asserted
Chronology of documented enforcement eventsP12_case_history
2023-04seizure→nothing_produced
Bmullvad.net28 Aug 2026
Report a problem with P12_case_historyPriced from what is missing: 0.87 of the weighted record is established, on a slope of 0.9 under a cap of 0.6, with a posture of 0.3 relieved by 0.4.
Record completenessS08_completeness
87%
derived from the record itself
Response to a national logging mandatealso read by jurisdictionP04_mandate_response
no_presence
Bmullvad.net13 Aug 2026
Report a problem with P04_mandate_responseTransparency reportalso read by integrity, silenceP05_transparency_report
unknown
nothing published · recorded as asserted
Reported numbers plausible for this scalealso read by integrityP06_report_plausibility
not applicable
nothing published · recorded as asserted
Warrant canary disciplinealso read by disclosureP07_warrant_canary
unknown
nothing published · recorded as asserted
Security incident and how it was disclosedalso read by integrityX09_incident_handling
self_disclosed_prompt
Bmullvad.net20 May 2026
Report a problem with X09_incident_handlingWhere the company sits 0.0, where its owner sits 0.0, the exits it offers 0.05, the gag-order regime 0.0 — one circumstance, priced once rather than compounded.
Hosting in the mandate countries it offersC09b_mandate_hosting
unknown
nothing published · recorded as asserted
Incorporation country mandates retentionC10_company_under_mandate
no
Bmullvad.net13 Aug 2026
Report a problem with C10_company_under_mandateBeneficial owner sits under a retention regimeC11_owner_under_mandate
no
Cmullvad.net13 Aug 2026
Report a problem with C11_owner_under_mandateResponse to a national logging mandatealso read by ignoranceP04_mandate_response
no_presence
Bmullvad.net13 Aug 2026
Report a problem with P04_mandate_responseSecret-order regime in the incorporation countryP11_gag_order_regime
judicial_only
Bmullvad.net28 Aug 2026
Report a problem with P11_gag_order_regimeA capped sum — the one channel that adds: 0.05 of a possible 0.28, from the fields marked below.
RAM-only diskless serversC02_ram_only
yes_declared+0.015
Bmullvad.net13 Aug 2026
Report a problem with C02_ram_onlySignup without emailC04_signup_no_email
yes_declared+0.005
Bmullvad.net13 Aug 2026
Report a problem with C04_signup_no_emailAnonymous payment optionsC05_payment_anonymous
cashcrypto_directvoucher
Bmullvad.net13 Aug 2026
Report a problem with C05_payment_anonymousOwn DNS inside the tunnelC06_own_dns_in_tunnel
yes_declared+0.005
Bmullvad.net13 Aug 2026
Report a problem with C06_own_dns_in_tunnelWorst third-party SDK category in the appC07a_app_sdk
none
Bmullvad.net13 Aug 2026
Report a problem with C07a_app_sdkWorst third-party tracker category on the siteC07b_site_trackers
none
Bmullvad.net13 Aug 2026
Report a problem with C07b_site_trackersWho owns the hardwareC08_servers_ownership
mixed+0.010
Bmullvad.net13 Aug 2026
Report a problem with C08_servers_ownershipWeakest protocol still offeredC13_weakest_protocol
not applicable
Bmullvad.netBmullvad.net29 Aug 2026
Report a problem with C13_weakest_protocolClient source code publishedV12_client_open_source
all
Bgithub.com13 Aug 2026
Report a problem with V12_client_open_sourceReproducible buildsV13_reproducible_builds
partial+0.015
Bmullvad.net28 Aug 2026
Report a problem with V13_reproducible_buildsSeparate client or infrastructure pentestV14_pentest_exists
yes_verified
Ax41-dsec.deAgithub.com28 Aug 2026
Report a problem with V14_pentest_existsWhat this channel priced on this record:Price 0.05
Who operates the exitC00_architecture
provider_operated+0.000
Bmullvad.net13 Aug 2026
Report a problem with C00_architectureWhat the exit does to passing trafficC14_traffic_modification
unknown+0.050
nothing published · recorded as asserted
User base scale (mass >=10M, mid >=1M, niche <1M)also read by silenceM08_user_scale
mid
Bmullvad.net13 Aug 2026
Report a problem with M08_user_scaleOther businesses of the owner groupM10_owner_other_business
none_disclosed
Bmullvad.net13 Aug 2026
Report a problem with M10_owner_other_businessTransparency reportalso read by ignorance, silenceP05_transparency_report
unknown
nothing published · recorded as asserted
Reported numbers plausible for this scalealso read by ignoranceP06_report_plausibility
not applicable
nothing published · recorded as asserted
Documented gap between claim and behaviourX01_documented_lie
none
Cgithub.com13 Aug 2026
Report a problem with X01_documented_lieMarketing versus audit findingsX02_claim_gap
none
Cgithub.com13 Aug 2026
Report a problem with X02_claim_gapOwnership structure transparencyX03_owner_transparency
clear
Bmullvad.net13 Aug 2026
Report a problem with X03_owner_transparencyAdverse events on the owner group recordX04_owner_group_history
clean
Cmullvad.net13 Aug 2026
Report a problem with X04_owner_group_historyHow the service is paid forX05_monetisation_model
paid_only
Bmullvad.net13 Aug 2026
Report a problem with X05_monetisation_modelClaims of 100% anonymity or military-grade cryptoX06_absolute_claims
unknown
nothing published · recorded as asserted
Aggressive lifetime subscriptionsX07_lifetime_push
no
Bmullvad.net13 Aug 2026
Report a problem with X07_lifetime_pushCoverage exists only on affiliate sitesX08_affiliate_only_reviews
no
Bmullvad.net13 Aug 2026
Report a problem with X08_affiliate_only_reviewsSecurity incident and how it was disclosedalso read by ignoranceX09_incident_handling
self_disclosed_prompt
Bmullvad.net20 May 2026
Report a problem with X09_incident_handlingAffiliate programme and payout tierX10_affiliate_program
none
Bmullvad.net13 Aug 2026
Report a problem with X10_affiliate_programOwner-run review media discloses the tieX11_review_media_disclosure
not applicable
nothing published · recorded as asserted
App store data declaration against the provider's own policyX12_store_data_declaration
matches_policy
Bapps.apple.comBplay.google.comBmullvad.net28 Aug 2026
Report a problem with X12_store_data_declarationContagion from the owner groupS18_cluster_contagion
0.0
no owner group on this record, so nothing to carry
Server seizure by law enforcementalso read by silenceP01_seizure_event
seizure_no_data
Bmullvad.net28 Aug 2026
Report a problem with P01_seizure_eventActual disclosure historyP02_disclosure_history
none_known
Bmullvad.net12 Sep 2026
Report a problem with P02_disclosure_historyCourt record of compelled productionalso read by silenceP03_court_record
none_known
Bmullvad.net12 Sep 2026
Report a problem with P03_court_recordWarrant canary disciplinealso read by ignoranceP07_warrant_canary
unknown
nothing published · recorded as asserted
Requests received in periodP08_requests_received
unknown
nothing published · recorded as asserted
Requests where data was providedP09_data_provided
unknown
nothing published · recorded as asserted
17 years in operation at 0.015 a year under a cap of 0.3, weighted 1.0: the rule did not fire.
Year the service launchedM07_launch_year
2009
Bmullvad.net13 Aug 2026
Report a problem with M07_launch_yearUser base scale (mass >=10M, mid >=1M, niche <1M)also read by integrityM08_user_scale
mid
Bmullvad.net13 Aug 2026
Report a problem with M08_user_scaleServer seizure by law enforcementalso read by disclosureP01_seizure_event
seizure_no_data
Bmullvad.net28 Aug 2026
Report a problem with P01_seizure_eventCourt record of compelled productionalso read by disclosureP03_court_record
none_known
Bmullvad.net12 Sep 2026
Report a problem with P03_court_recordTransparency reportalso read by ignorance, integrityP05_transparency_report
unknown
nothing published · recorded as asserted