WiFi Doctor · Diagnostic reference

Make sense of your network report.

Find a diagnostic code or topic. Each explanation describes what the check is, what it measures, why it matters, and how to read the result.

83 checks · 9 stages

W10Device state

W10-010

Device Wi-Fi support

What it is
Whether this device provides Wi-Fi capability for the network being diagnosed.
What it measures
Device Wi-Fi support and whether the prerequisite for a Wi-Fi diagnosis is present.
Why it matters
Establish that Wi-Fi checks can meaningfully run before interpreting later connection results.
How to read the result
Confirmed lack of Wi-Fi support is a critical prerequisite failure. An unreadable state is unavailable, not a failed network.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-010",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Device supports Wi-Fi.",
  "evidence": [
    {
      "name": "sdk",
      "value": "35",
      "unit": null
    },
    {
      "name": "supports5Ghz",
      "value": "true",
      "unit": null
    },
    {
      "name": "supports6Ghz",
      "value": "true",
      "unit": null
    },
    {
      "name": "supportsSae",
      "value": "true",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-010
W10-020

Wi-Fi on/off state

What it is
Whether the device's Wi-Fi radio is switched on and ready to connect.
What it measures
Current Wi-Fi power state, including on, off, or a transition between states.
Why it matters
Explain why Wi-Fi diagnosis cannot proceed when the radio is turned off.
How to read the result
Wi-Fi on is the usable state. Confirmed off is critical; enabling, disabling, or unknown states are inconclusive rather than failures.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-020",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Wi-Fi is on.",
  "evidence": [
    {
      "name": "radioTransitions",
      "value": "0",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2ERROR

Result excerpt

{
  "id": "W10-020",
  "execution": "DONE",
  "verdict": "ERROR",
  "summary": "Wi-Fi is off.",
  "evidence": [
    {
      "name": "radioTransitions",
      "value": "0",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "critical",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-020
W10-030

Network identity and session segments

What it is
The identity of the Wi-Fi network and separate connection periods within a report.
What it measures
Network name, access point, frequency, route changes, and time segments associated with observations.
Why it matters
Keep results from different networks or access points distinct when comparing connection quality.
How to read the result
An access point or network change is context, not automatically a fault. Measurements from different segments should not be combined.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-030",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Measurements separated by network path.",
  "evidence": [
    {
      "name": "segments",
      "value": "1",
      "unit": null
    },
    {
      "name": "currentSegment",
      "value": "1",
      "unit": null
    },
    {
      "name": "networkId",
      "value": "synthetic-wifi",
      "unit": null
    },
    {
      "name": "bssid",
      "value": "02:00:00:00:00:01",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-030
W10-040

Active Internet path

What it is
The network path currently used for the app's Internet traffic.
What it measures
Whether the active path uses Wi-Fi, mobile data, a VPN, or an unknown transport.
Why it matters
Clarify which connection a measurement describes, especially when several network paths are available.
How to read the result
Different paths can produce different results. Mobile data or VPN use alone is not a Wi-Fi failure or score deduction.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-040",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Internet traffic uses the Wi-Fi path.",
  "evidence": [
    {
      "name": "routeId",
      "value": "synthetic-wifi",
      "unit": null
    },
    {
      "name": "defaultNetwork",
      "value": "synthetic-wifi",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-040
W10-050

VPN and measurement limits

What it is
How VPN routing or network policy limits the measurements available in this session.
What it measures
VPN presence, relevant route information, and checks restricted by the active network policy.
Why it matters
Separate an unmeasurable connection path from a connection that has actually failed.
How to read the result
A restricted check is unavailable, not failed. Results describe the measured path and may not represent direct Wi-Fi access.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-050",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Android reports no active VPN.",
  "evidence": [
    {
      "name": "vpn",
      "value": "false",
      "unit": null
    },
    {
      "name": "policyFailures",
      "value": "0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-050
W10-060

Proxy and PAC

What it is
The proxy or automatic proxy configuration associated with the connection.
What it measures
Proxy host and port, automatic configuration information, and the route to which those settings apply.
Why it matters
Provide context for requests that must pass through a proxy before reaching a destination.
How to read the result
A configured proxy is not a fault. Connection or authentication problems require corresponding measured evidence.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-060",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "No proxy is configured for Wi-Fi.",
  "evidence": [
    {
      "name": "pac",
      "value": "false",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-060
W10-070

DNS and Private DNS settings

What it is
The DNS and Private DNS settings used to resolve hostnames on the connection.
What it measures
Configured DNS servers, Private DNS mode, and relevant resolver configuration.
Why it matters
Help interpret later name-resolution results and distinguish configuration from measured DNS behavior.
How to read the result
A setting alone does not establish a DNS fault. Actual lookup results determine whether resolution succeeds or fails.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-070",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "DNS resolver configuration recorded.",
  "evidence": [
    {
      "name": "wifiDns",
      "value": "[192.0.2.1]",
      "unit": null
    },
    {
      "name": "privateDns",
      "value": "false",
      "unit": null
    },
    {
      "name": "resolverDns",
      "value": "192.0.2.1",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-070
W10-080

Permissions and data access

What it is
Whether WiFi Doctor can access the information required by particular diagnostic checks.
What it measures
Granted permissions, missing permissions, and observations affected by access restrictions.
Why it matters
Explain missing report fields and identify which checks cannot be assessed on this device.
How to read the result
Denied permission means limited evidence, not poor Wi-Fi. It does not lower the connection score.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-080",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Current permissions and data availability.",
  "evidence": [
    {
      "name": "scanAllowed",
      "value": "true",
      "unit": null
    },
    {
      "name": "lanAllowed",
      "value": "true",
      "unit": null
    },
    {
      "name": "ssidVisible",
      "value": "true",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-080
W10-090

Power and network policies

What it is
Device power and network policies that may influence the observed connection.
What it measures
Power-saving settings, network restrictions, and interruptions occurring alongside those conditions.
Why it matters
Provide device context when investigating disconnections, pauses, or unexpected changes in network use.
How to read the result
A power-saving setting alone is not a fault. Connection impact must be observed before attributing an issue to it.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-090",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Power settings and network limits recorded.",
  "evidence": [
    {
      "name": "metered",
      "value": "false",
      "unit": null
    },
    {
      "name": "powerSave",
      "value": "false",
      "unit": null
    },
    {
      "name": "thermalStatus",
      "value": "0",
      "unit": null
    },
    {
      "name": "airplaneMode",
      "value": "0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-090
W10-100

Recent observations

What it is
Recent observations retained for comparison with the current diagnosis session.
What it measures
Previously observed events, signal readings, observation age, and gaps in monitoring coverage.
Why it matters
Help distinguish a recurring connection issue from something seen only during the current test.
How to read the result
History is supporting evidence. No recorded problem during a monitoring gap does not prove the connection was stable.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-100",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Recent observations within the retention period used for comparison.",
  "evidence": [
    {
      "name": "historyEvents",
      "value": "3",
      "unit": null
    },
    {
      "name": "historyCoverageMs",
      "value": "60000",
      "unit": null
    },
    {
      "name": "retentionMs",
      "value": "900000",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-100
W10-110

Measurement validity

What it is
Whether observations were affected by measurement activity or incomplete collection conditions.
What it measures
Measurement timing, active test periods, and conditions that may influence the samples being interpreted.
Why it matters
Keep ordinary network behavior separate from behavior observed while a test generates traffic.
How to read the result
Affected observations need context. Missing or unsuitable data is not automatically a pass, a failure, or a zero-valued measurement.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-110",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Measurements retain their timestamps, network paths and limits.",
  "evidence": [
    {
      "name": "probeCount",
      "value": "184",
      "unit": null
    },
    {
      "name": "limitedCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "ruleVersion",
      "value": "catalog-score-4.0.1",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-110
W10-120

Device clock and TLS

What it is
Whether the device clock appears inconsistent with a sufficiently reliable time reference.
What it measures
Device time, available reference time, and related certificate or secure-connection symptoms.
Why it matters
Identify clock discrepancies that may explain HTTPS certificate validation problems.
How to read the result
Only a reliable comparison supports a clock finding. Clock and related TLS problems should be understood as one possible issue.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-120",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "No large clock offset found between the tested time sources.",
  "evidence": [
    {
      "name": "offsetMs",
      "value": "[400.0, 400.0]",
      "unit": null
    },
    {
      "name": "uncertaintyMs",
      "value": "[1030.0, 1030.0]",
      "unit": null
    },
    {
      "name": "probeRefs",
      "value": "clock-0,clock-1",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W10-120",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Two sufficiently fresh HTTPS time readings are required.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-120
W10-130

OS and certificates

What it is
Operating-system and certificate context relevant to secure connections.
What it measures
Android version, available certificate information, and observed TLS compatibility errors.
Why it matters
Help explain supported cases where platform compatibility affects access to secure websites.
How to read the result
An older Android version alone is not a failure. Compatibility concerns require a corresponding TLS error and suitable comparison evidence.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-130",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Android version recorded to help assess TLS errors.",
  "evidence": [
    {
      "name": "sdk",
      "value": "35",
      "unit": null
    },
    {
      "name": "securityPatch",
      "value": "2026-10-01",
      "unit": null
    },
    {
      "name": "tlsFailureRefs",
      "value": "[]",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-130
W10-140

DNS / VPN filtering

What it is
Possible DNS or VPN filtering associated with selective access problems.
What it measures
Filtering-related configuration and evidence that particular destinations fail while other access remains available.
Why it matters
Help distinguish selective restrictions from a complete loss of Internet connectivity.
How to read the result
Filtering is context unless blocking is corroborated. One inaccessible service does not prove that all Internet access has failed.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-140",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "DNS and VPN context included when checking selective access.",
  "evidence": [
    {
      "name": "vpn",
      "value": "false",
      "unit": null
    },
    {
      "name": "privateDns",
      "value": "false",
      "unit": null
    },
    {
      "name": "serviceCheckRef",
      "value": "W70-160",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-140
W10-150

Device Wi-Fi optimization

What it is
Device Wi-Fi optimization behavior observed during the session.
What it measures
Changes such as switching to mobile data, turning Wi-Fi off, and any associated interruption.
Why it matters
Identify device settings worth reviewing when automatic connection changes coincide with problems.
How to read the result
An optimization setting or network switch is not inherently faulty. Advice depends on observed behavior and its connection impact.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W10-150",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Default-path and Wi-Fi status changes observed.",
  "evidence": [
    {
      "name": "defaultChanges",
      "value": "0",
      "unit": null
    },
    {
      "name": "radioChanges",
      "value": "0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W10-150

W20Wi-Fi connection

W20-010

Current Wi-Fi association

What it is
Whether the phone is currently associated with the intended Wi-Fi access point.
What it measures
Wi-Fi association state, identifiable target network, and observed connection loss.
Why it matters
Establish the radio connection before evaluating address configuration or Internet reachability.
How to read the result
An established link satisfies this prerequisite. Confirmed absence is critical; missing IP settings belong to later checks, not association failure.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W20-010",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Connected to Wi-Fi.",
  "evidence": [
    {
      "name": "supplicantState",
      "value": "COMPLETED",
      "unit": null
    },
    {
      "name": "networkId",
      "value": "synthetic-wifi",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W20-010
W20-020

Target access point visibility

What it is
Whether the target Wi-Fi access point appears in available observations.
What it measures
Target access point visibility, observation times, freshness, and coverage of the surveyed period.
Why it matters
Help explain difficulty finding or reconnecting to a particular Wi-Fi network.
How to read the result
Fresh repeated observations support visibility conclusions. Missing permission or repeated cached data cannot establish that the access point disappeared.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W20-020",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Scan rounds detecting the access point: 3.",
  "evidence": [
    {
      "name": "seenRounds",
      "value": "3",
      "unit": null
    },
    {
      "name": "totalRounds",
      "value": "3",
      "unit": null
    },
    {
      "name": "linked",
      "value": "true",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W20-020",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No fresh scan results yet.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W20-020
W20-030

Signal during connection

What it is
Signal conditions observed while establishing or losing the Wi-Fi connection.
What it measures
Signal strength, variability, and timing relative to connection attempts or failures.
Why it matters
Provide signal context for connection-stage problems and link them to the detailed radio assessment.
How to read the result
One reading describes only that moment. Signal findings are assessed in W30 and are not deducted again here.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W20-030",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Signal samples around the connection attempt.",
  "evidence": [
    {
      "name": "rssiP50Dbm",
      "value": "-52.0",
      "unit": null
    },
    {
      "name": "sampleCount",
      "value": "91",
      "unit": null
    },
    {
      "name": "signalResultRef",
      "value": "W30-010",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W20-030",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Fewer than two signal samples from the same access point.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W20-030
W20-040

Supported bands and channels

What it is
Compatibility between the device and the network's advertised band and channel requirements.
What it measures
Supported bands, available channels, advertised channel width, and relevant device connection capabilities.
Why it matters
Identify a clear capability mismatch that could prevent connection to the target access point.
How to read the result
A mandatory unsupported requirement can explain failure. A negotiable channel width or older Wi-Fi standard alone does not prove incompatibility.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W20-040",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "The observed band matches the device's reported data.",
  "evidence": [
    {
      "name": "primaryMhz",
      "value": "5180",
      "unit": null
    },
    {
      "name": "linked",
      "value": "true",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W20-040
W20-050

Security compatibility

What it is
Compatibility of network security requirements with the device and connection setup.
What it measures
Advertised security modes, authentication information, and available enterprise or certificate-related connection evidence.
Why it matters
Help distinguish incompatible security settings from other reasons the phone cannot join a network.
How to read the result
Absence of a security mode supported by both endpoints is a concern. Missing enterprise-authentication evidence is inconclusive; transition mode or protected management frames alone are not faults.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W20-050",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Advertised security settings compared.",
  "evidence": [
    {
      "name": "security",
      "value": "[WPA2-PSK-CCMP][ESS]",
      "unit": null
    },
    {
      "name": "eapConfiguration",
      "value": "not exposed for third-party saved networks",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W20-050
W20-060

System connection errors

What it is
Connection errors actually reported while joining the Wi-Fi network.
What it measures
Available association or authentication error codes and the stage at which a connection attempt failed.
Why it matters
Describe a connection-stage failure using the specific evidence available rather than guessing its cause.
How to read the result
A specific rejection code supports a specific finding. Not found or no response does not prove rejection or an incorrect password.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W20-060",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Original error from the connection attempt recorded.",
  "evidence": [
    {
      "name": "trialId",
      "value": "join-1",
      "unit": null
    },
    {
      "name": "outcome",
      "value": "AUTHENTICATION",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W20-060",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No failed app-initiated connection attempt in this session.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W20-060
W20-070

Recorded authentication failures

What it is
An observed authentication failure that prevents the phone from joining Wi-Fi.
What it measures
Recorded authentication outcome, relevant connection attempt, and whether a link was subsequently established.
Why it matters
Identify authentication failure while distinguishing an incorrect password from other access point problems.
How to read the result
Confirmed authentication failure while disconnected is critical. It does not by itself prove the password is wrong; missing evidence is unavailable.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W20-070",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "The current Wi-Fi link works; the earlier sign-in error is no longer active.",
  "evidence": [
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W20-070
W20-080

Disconnections and reconnect loops

What it is
Disconnections and repeated reconnection behavior observed during the session.
What it measures
Number of link interruptions, disconnected duration, observation window, and whether the link recovered.
Why it matters
Explain unstable association rather than treating every access point change as a failure.
How to read the result
At least 10 seconds of coverage is required. Recovered interruptions of 1/2/3+ deduct 10/20/30%; downtime at least 20% deducts 40%; still disconnected deducts 50%, unless a critical prerequisite overrides it.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W20-080",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "No disconnection recorded during the observation period.",
  "evidence": [
    {
      "name": "disconnectCount",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "downtimeFraction",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "observedWindowMs",
      "value": "45000.0",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W20-080
W20-090

Network security

What it is
Security characteristics publicly advertised by the Wi-Fi network.
What it measures
Security type and available indications such as an open network, WEP, or advertised WPS support.
Why it matters
Provide security advice separately from the assessment of connection quality and speed.
How to read the result
Open or legacy security may warrant advice, but does not reduce connection-quality scoring. WPS advertisement alone is not proof of a vulnerability.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W20-090",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Wi-Fi security: WPA2-Personal.",
  "evidence": [
    {
      "name": "security",
      "value": "WPA2-Personal",
      "unit": null
    },
    {
      "name": "securityAdvisory",
      "value": "false",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W20-090

W30Radio link

W30-010

Received signal strength

What it is
The strength of the Wi-Fi signal received by the phone.
What it measures
Median RSSI in dBm, valid sample count, observed range, and weak-signal observations for the same access point.
Why it matters
Identify weak coverage and assess whether it coincides with actual connectivity problems.
How to read the result
Higher, less-negative dBm is stronger. Median >=-55 dBm has no deduction; below -55/-60/-65/-70/-75/-80/-85/-90/-95 deducts 5/10/15/20/25/30/40/45/50%. At least two valid samples are required; an error also needs access impact.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W30-010",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Median signal strength: -52 dBm",
  "evidence": [
    {
      "name": "minDbm",
      "value": "-52.0",
      "unit": null
    },
    {
      "name": "maxDbm",
      "value": "-52.0",
      "unit": null
    },
    {
      "name": "weakFraction",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "rssiP50Dbm",
      "value": "-52.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W30-010",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "Median signal strength: -81 dBm",
  "evidence": [
    {
      "name": "minDbm",
      "value": "-82.0",
      "unit": null
    },
    {
      "name": "maxDbm",
      "value": "-79.0",
      "unit": null
    },
    {
      "name": "weakFraction",
      "value": "1.0",
      "unit": null
    },
    {
      "name": "rssiP50Dbm",
      "value": "-81.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 30,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W30-010
W30-020

Signal stability

What it is
How much received signal strength varies during an adequately observed period.
What it measures
RSSI variation, including the difference between the 90th and 10th percentiles, in dB.
Why it matters
Distinguish consistently weak coverage from a signal that fluctuates substantially over time.
How to read the result
A P90-P10 spread <=12 dB has no deduction; >12/>20/>30 dB deducts 3/6/10%. Requires five samples over at least 10 seconds. Variability alone does not prove router failure.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W30-020",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Signal was stable during the measurement period.",
  "evidence": [
    {
      "name": "rangeDb",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "p90MinusP10Db",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "sampleCount",
      "value": "91.0",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W30-020",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "At least 10 seconds and five samples from the same access point are needed.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W30-020
W30-030

TX/RX PHY link quality

What it is
Wi-Fi transmit and receive link rates observed while data is being transferred.
What it measures
Loaded TX/RX PHY medians in Mbps and the difference between the two directions.
Why it matters
Identify limited or asymmetric radio-link performance without confusing link rate with Internet download speed.
How to read the result
Loaded PHY below 30/12/6 Mbps deducts 5/10/15%. If the slower direction is below 100 Mbps, direction ratios >3/>6/>10 deduct 5/10/15%; use the larger deduction. Idle or insufficient samples are not assessed.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W30-030",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "PHY TX/RX link rates, not Internet throughput.",
  "evidence": [
    {
      "name": "lowLoadedPhyMbps",
      "value": "866.0",
      "unit": null
    },
    {
      "name": "txP50Mbps",
      "value": "866.0",
      "unit": null
    },
    {
      "name": "rxP50Mbps",
      "value": "866.0",
      "unit": null
    },
    {
      "name": "txSamples",
      "value": "4.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W30-030",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "PHY TX/RX link rates, not Internet throughput.",
  "evidence": [
    {
      "name": "lowLoadedPhyMbps",
      "value": "24.0",
      "unit": null
    },
    {
      "name": "txP50Mbps",
      "value": "24.0",
      "unit": null
    },
    {
      "name": "rxP50Mbps",
      "value": "72.0",
      "unit": null
    },
    {
      "name": "txSamples",
      "value": "7.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 5,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W30-030
W30-060

Access point and band selection

What it is
Whether another observed access point or band may provide a better usable connection.
What it measures
Current and candidate signal, band, capabilities, and sustained differences supported by observations.
Why it matters
Highlight a connection improvement opportunity when the current access point is weak or limited.
How to read the result
A consistently better supported candidate is an optimization opportunity. It is not proof of a sticky-client fault or a guaranteed speed improvement.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W30-060",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "No clearly better candidate found.",
  "evidence": [
    {
      "name": "candidateCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "securityMatched",
      "value": "true",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W30-060",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No current signal reading.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W30-060
W30-070

Roaming and reconnection

What it is
Changes between access points, bands, or connection states and their observed effects.
What it measures
Roaming, band switches, reconnection events, and interruptions on the same timeline.
Why it matters
Distinguish normal Wi-Fi transitions from transitions associated with a measurable loss of connectivity.
How to read the result
A transition without observed interruption can be normal. Several symptoms from the same transition should not be counted as separate failures.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W30-070",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Access point and band changes monitored.",
  "evidence": [
    {
      "name": "bssidChanges",
      "value": "0",
      "unit": null
    },
    {
      "name": "bandChanges",
      "value": "0",
      "unit": null
    },
    {
      "name": "segments",
      "value": "1",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W30-070
W30-090

Same-name access point settings

What it is
Configuration differences between access points that advertise the same network name.
What it measures
Observed security, capability, band, and other relevant settings across same-name access points.
Why it matters
Explain why connection behavior can differ when moving between access points within a named network.
How to read the result
Different settings are context. A shared name or configuration difference alone does not prove unstable access or reduce the stability score.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W30-090",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Access points sharing this name: 2. Settings compared for compatibility.",
  "evidence": [
    {
      "name": "bssidCount",
      "value": "2",
      "unit": null
    },
    {
      "name": "frequenciesMhz",
      "value": "[5180, 5260]",
      "unit": null
    },
    {
      "name": "securityAdvertisements",
      "value": "[[WPA2-PSK-CCMP][ESS]]",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W30-090",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No multiple access points with the same name detected.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W30-090
W30-100

Per-link MLO quality

What it is
Available information about individual links in a Wi-Fi multi-link connection.
What it measures
Per-link signal, connection state, variation, and relevant comparisons where the device exposes them.
Why it matters
Interpret weak or variable parts of an MLO connection without judging only one link in isolation.
How to read the result
An unused or unaffiliated link is not automatically a fault. Overall impact requires available data and suitable connection-level comparisons.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W30-100",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Per-link MLO information obtained from Android.",
  "evidence": [
    {
      "name": "links",
      "value": "id=0,state=3,rssi=-52,tx=866,rx=866, id=1,state=3,rssi=-61,tx=1200,rx=1200",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2UNSUPPORTED

Result excerpt

{
  "id": "W30-100",
  "execution": "UNSUPPORTED",
  "verdict": null,
  "summary": "The device does not provide MLO link data.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W30-100
W30-120

Wi-Fi connection capability

What it is
The supported Wi-Fi link-speed ceiling of the phone and connected access point.
What it measures
Known maximum supported PHY rates, the limiting endpoint ceiling, and associated channel-width context.
Why it matters
Identify connection capabilities that constrain achievable Wi-Fi speed even when signal is adequate.
How to read the result
A known limiting ceiling <150 Mbps deducts 5%; 150 to <300 Mbps deducts 3%. Pass requires both endpoints known and >=300 Mbps. Missing capability is not zero; PHY is not Internet throughput.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W30-120",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Both supported link-speed ceilings are at least 300 Mbps.",
  "evidence": [
    {
      "name": "rateSource",
      "value": "Synthetic advertised VHT capability",
      "unit": null
    },
    {
      "name": "deviceRateSource",
      "value": "WifiInfo maximum supported link speed",
      "unit": null
    },
    {
      "name": "apMaxPhyMbps",
      "value": "866.7",
      "unit": null
    },
    {
      "name": "deviceMaxSupportedPhyMbps",
      "value": "866.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W30-120

W40Radio channels

W40-010

Survey freshness and coverage

What it is
How current and complete the available Wi-Fi channel observations are.
What it measures
Survey age, freshness, coverage, and restrictions affecting available scan information.
Why it matters
Show whether channel advice is based on current observations or incomplete information.
How to read the result
Fresh, adequate coverage supports interpretation. Stale or missing survey data is a limitation, not a connection failure or evidence of an empty band.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W40-010",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Survey rounds: 3.",
  "evidence": [
    {
      "name": "roundCount",
      "value": "3",
      "unit": null
    },
    {
      "name": "observationCount",
      "value": "6",
      "unit": null
    },
    {
      "name": "cachedReads",
      "value": "0",
      "unit": null
    },
    {
      "name": "duplicateReads",
      "value": "0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W40-010",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No valid scan results yet.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W40-010
W40-020

Channel availability

What it is
Availability of the primary channel and component channels required by the selected width.
What it measures
Primary channel, frequency, channel width, component channels, and available channel-use information.
Why it matters
Identify unavailable channel requirements and help interpret the network's actual channel configuration.
How to read the result
Known unavailable requirements deserve attention. Missing availability data is unverified; DFS alone is not a fault, and advertised neighboring channels do not prove measured coverage.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W40-020",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Primary channel and channel-width configuration.",
  "evidence": [
    {
      "name": "primaryMhz",
      "value": "5180",
      "unit": null
    },
    {
      "name": "primaryChannel",
      "value": "36",
      "unit": null
    },
    {
      "name": "center0Mhz",
      "value": "5210",
      "unit": null
    },
    {
      "name": "widthEnum",
      "value": "2",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W40-020",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No scan advertisement from the current access point.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W40-020
W40-030

Recommended channel and width

What it is
Channel and width options that may offer a better supported operating choice.
What it measures
Observed channel conditions, candidate scores, channel widths, and available usability evidence across the survey.
Why it matters
Guide channel optimization using meaningful, sustained differences in the local Wi-Fi environment.
How to read the result
A better supported option is a recommendation, not a promise of higher speed. Unobserved bands cannot be assumed empty or assigned perfect quality.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W40-030",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "No clearly better channel was found, or channel availability could not be verified.",
  "evidence": [
    {
      "name": "scoreVersion",
      "value": "wifi-scan-risk-v1.1",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W40-030",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Not enough data to recommend a channel.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W40-030
W40-040

Channel contention and overlap

What it is
Contention and overlap around the current Wi-Fi channel.
What it measures
Current channel quality score, channel width, and neighboring access point overlap from fresh observations.
Why it matters
Identify channel conditions that may contribute to radio interference or reduced performance.
How to read the result
A current channel score >=7 has no deduction; <7/<5/<3 deducts 3/6/10%. Requires two fresh surveys. Access point count alone does not prove slow connectivity.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W40-040",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Radio contention estimated from Wi-Fi advertisements.",
  "evidence": [
    {
      "name": "score",
      "value": "9.933333333333334",
      "unit": null
    },
    {
      "name": "contenders",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "model",
      "value": "wifi-scan-risk-v1.1",
      "unit": null
    },
    {
      "name": "excludedCurrentBssid",
      "value": "02:00:00:00:00:01",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W40-040",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "Radio contention estimated from Wi-Fi advertisements.",
  "evidence": [
    {
      "name": "score",
      "value": "3.5055448172942096",
      "unit": null
    },
    {
      "name": "contenders",
      "value": "5.0",
      "unit": null
    },
    {
      "name": "model",
      "value": "wifi-scan-risk-v1.1",
      "unit": null
    },
    {
      "name": "excludedCurrentBssid",
      "value": "02:00:00:00:00:01",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 6,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W40-040
W40-060

Channel utilization and clients

What it is
Channel activity and connected-client information advertised by the access point.
What it measures
Advertised channel utilization percentage, station count, and changes across distinct observations.
Why it matters
Provide evidence of a busy radio channel while distinguishing utilization from connected-device count.
How to read the result
Median utilization <=70% has no deduction; >70/>85/>95% deducts 3/6/10%. Requires three distinct observations over 10 seconds outside transfers. Client count alone does not deduct.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W40-060",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Channel utilization and client count reported by the access point.",
  "evidence": [
    {
      "name": "busyPercent",
      "value": "21.568627450980394",
      "unit": null
    },
    {
      "name": "busyP50Percent",
      "value": "21.568627450980394",
      "unit": null
    },
    {
      "name": "freshSamples",
      "value": "3.0",
      "unit": null
    },
    {
      "name": "stationCount",
      "value": "4.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W40-060",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "Channel utilization and client count reported by the access point.",
  "evidence": [
    {
      "name": "busyPercent",
      "value": "90.19607843137256",
      "unit": null
    },
    {
      "name": "busyP50Percent",
      "value": "90.19607843137256",
      "unit": null
    },
    {
      "name": "freshSamples",
      "value": "3.0",
      "unit": null
    },
    {
      "name": "stationCount",
      "value": "4.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "duplicate_cause",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W40-060
W40-070

Access point channel changes

What it is
Changes in the access point's operating channel during the observed period.
What it measures
Observed channel switches, access point visibility, timing, and any correlated connection interruption.
Why it matters
Explain brief interruptions or changing radio conditions when the access point moves channels.
How to read the result
Channel changes are not automatically faults. Severity depends on observed connectivity impact, and the same transition should not be counted again elsewhere.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W40-070",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Access points with a frequency change: 0.",
  "evidence": [
    {
      "name": "changedApCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "roundCount",
      "value": "3",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W40-070

W50LAN connectivity

W50-010

IPv4 configuration

What it is
Availability of usable IPv4 address configuration on the Wi-Fi connection.
What it measures
Assigned IPv4 information, provisioning state, and whether a usable IPv6 alternative exists.
Why it matters
Distinguish missing network addressing from valid operation on an IPv6-only connection.
How to read the result
No usable IPv4 or IPv6 address after provisioning while associated deducts 60%. One usable address family is sufficient; missing IPv4 alone is not failure.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W50-010",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "A usable IPv4 address is assigned.",
  "evidence": [
    {
      "name": "ipv4",
      "value": "[192.0.2.10/24]",
      "unit": null
    },
    {
      "name": "usableAddress",
      "value": "1.0",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "maxPenaltyPercent",
      "value": "60.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W50-010
W50-020

IPv6 configuration

What it is
Availability and scope of the connection's IPv6 configuration.
What it measures
IPv6 addresses, usable scope, and configuration relevant to reaching local or Internet destinations.
Why it matters
Explain IPv6 availability without treating a valid IPv4-only network as broken.
How to read the result
IPv4-only operation is valid. Link-local IPv6 alone does not establish Internet configuration; actual IPv6 reachability is assessed separately.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W50-020",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "An IPv6 address is available for connectivity testing.",
  "evidence": [
    {
      "name": "addressesV6",
      "value": "[2001:db8:1::10/64]",
      "unit": null
    },
    {
      "name": "gatewaysV6",
      "value": "[fe80::1%wlan0]",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W50-020
W50-030

Addresses and network routes

What it is
Whether the connection has addresses and routes suitable for the intended destinations.
What it measures
Usable IP addresses, matching routes, gateway information where required, and evidence of working access.
Why it matters
Identify missing or unsuitable addressing and routing that can prevent communication beyond the local link.
How to read the result
No usable address with a matching default route after provisioning deducts 60%. Missing telemetry is not failure; working VPN or confirmed Internet access prevents a false missing-route finding.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W50-030",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Network routes and address settings collected.",
  "evidence": [
    {
      "name": "addresses",
      "value": "[192.0.2.10/24, 2001:db8:1::10/64]",
      "unit": null
    },
    {
      "name": "routes",
      "value": "0.0.0.0/0 via 192.0.2.1; ::/0 via fe80::1%wlan0",
      "unit": null
    },
    {
      "name": "gateways",
      "value": "[192.0.2.1, fe80::1%wlan0]",
      "unit": null
    },
    {
      "name": "mtu",
      "value": "1500",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W50-030",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Not enough applicable measurements for this assessment.",
  "evidence": [
    {
      "name": "addresses",
      "value": "[192.0.2.10/24, 2001:db8:1::10/64]",
      "unit": null
    },
    {
      "name": "gateways",
      "value": "[192.0.2.1, fe80::1%wlan0]",
      "unit": null
    },
    {
      "name": "mtu",
      "value": "1500",
      "unit": null
    }
  ],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W50-030
W50-040

Gateway connectivity

What it is
Whether the local next hop responds to the types of requests measured.
What it measures
Gateway response observations, available connection outcomes, and evidence that traffic can still pass through it.
Why it matters
Separate a quiet gateway from a genuinely unusable local network path.
How to read the result
A reply or refusal proves a responder was reached. No ping reply alone does not prove gateway failure when forwarding or Internet access works.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W50-040",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "The gateway responded to a probe.",
  "evidence": [
    {
      "name": "probeRefs",
      "value": "ping-192.0.2.1-0,ping-192.0.2.1-1,ping-192.0.2.1-2,ping-192.0.2.1-3,ping-192.0.2.1-4,ping-192.0.2.1-5,ping-192.0.2.1-6,ping-192.0.2.1-7,ping-192.0.2.1-8,ping-192.0.2.1-9,ping-192.0.2.1-10,ping-192.0.2.1-11,ping-192.0.2.1-12,ping-192.0.2.1-13,ping-192.0.2.1-14,ping-192.0.2.1-15,ping-192.0.2.1-16,ping-192.0.2.1-17,ping-192.0.2.1-18,ping-192.0.2.1-19",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W50-040",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "The gateway did not reply; this alone does not establish a LAN failure.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W50-040
W50-050

Gateway connection stability

What it is
The stability of measured responses from the local gateway.
What it measures
Idle gateway round-trip time, missing-response percentage, and the number of attempts and replies.
Why it matters
Assess local responsiveness while accounting for gateways that limit or ignore diagnostic replies.
How to read the result
RTT >30/>100/>300 ms deducts 3/5/8%; loss >0/>10/>30/>50% deducts 3/8/12/15%; use the larger. Requires 10 attempts and 3 replies. A fully silent gateway is unavailable, not automatically failed.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W50-050",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "20/20 replies · Median 3 ms",
  "evidence": [
    {
      "name": "target",
      "value": "192.0.2.1",
      "unit": null
    },
    {
      "name": "n",
      "value": "20",
      "unit": null
    },
    {
      "name": "received",
      "value": "20",
      "unit": null
    },
    {
      "name": "p95Ms",
      "value": "3.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W50-050",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Fewer than 10 samples for the same target, path and test phase.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W50-050
W50-060

Network configuration changes

What it is
Changes in IP configuration or network routing during the session.
What it measures
Address, gateway, route, or related configuration changes and their relationship to observed connectivity.
Why it matters
Explain failures or recovery that coincide with a network configuration change.
How to read the result
A valid change is not automatically a warning. Multiple DHCP sources are only an investigation clue when accompanied by anomalous configuration.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W50-060",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Network configuration changes monitored.",
  "evidence": [
    {
      "name": "ipChanges",
      "value": "0",
      "unit": null
    },
    {
      "name": "gatewayChanges",
      "value": "0",
      "unit": null
    },
    {
      "name": "dnsChanges",
      "value": "0",
      "unit": null
    },
    {
      "name": "dhcpChanges",
      "value": "0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W50-060
W50-080

IP / gateway anomalies

What it is
Evidence suggesting an IP address conflict or abnormal gateway identity behavior.
What it measures
Device identities, gateway changes, address-conflict indications, and related response-loss or connectivity impact.
Why it matters
Identify supported conflict symptoms without assuming malicious activity or naming an attacker.
How to read the result
A qualified gateway-loss signature deducts 5%; repeated identity conflict with impact 10%; current-address conflict or required IPv6 duplicate-address failure with impact 15%. Identity differences without impact are advisory.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W50-080",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "No IP conflict detected. The connection was stable with no packet loss observed.",
  "evidence": [
    {
      "name": "gatewaySamples",
      "value": "20",
      "unit": null
    },
    {
      "name": "internetSamples",
      "value": "28",
      "unit": null
    },
    {
      "name": "lossPercent",
      "value": "0",
      "unit": null
    },
    {
      "name": "observationOnly",
      "value": "true",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W50-080",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Not enough evidence to determine whether an IP address conflict exists.",
  "evidence": [
    {
      "name": "coverage",
      "value": "IPv6 DAD; mDNS, SSDP and NBSTAT identities; conditional gateway-loss signature. No self-IP unicast; IP assignment unknown.",
      "unit": null
    },
    {
      "name": "probeRefs",
      "value": "",
      "unit": null
    }
  ],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W50-080
W50-110

LAN device discovery

What it is
Reachability and discovery of the local devices and services actually checked.
What it measures
Replies from tested LAN destinations, service-discovery observations, and relevant unicast or multicast comparisons.
Why it matters
Investigate local access restrictions while separating LAN behavior from Internet connectivity.
How to read the result
Successful replies support local reachability. Missing discovery alone is inconclusive; intentional client isolation is not an Internet failure.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W50-110",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "A LAN service responded.",
  "evidence": [
    {
      "name": "responders",
      "value": "1",
      "unit": null
    },
    {
      "name": "probeRefs",
      "value": "[lan-service]",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W50-110",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No valid LAN discovery response yet.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W50-110
W50-120

Uplink and backhaul

What it is
Evidence about the internal uplink or backhaul between network components.
What it measures
Available negotiated-link information, supported telemetry, and performance symptoms for the relevant local segment.
Why it matters
Identify a possible internal bottleneck without blaming every speed limit on a cable or port.
How to read the result
A 100 Mbps link requires negotiated-link evidence. A roughly 90-95 Mbps speed ceiling alone is a symptom, not proof of a faulty cable or backhaul.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1UNSUPPORTED

Result excerpt

{
  "id": "W50-120",
  "execution": "UNSUPPORTED",
  "verdict": null,
  "summary": "Uplink/backhaul statistics are not provided by the access point.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W50-120

W60WAN connectivity

W60-010

Router and WAN path

What it is
Router and upstream-path identity information actually available to the diagnosis.
What it measures
Available router identity, public IP, Internet provider or ASN, and related path context.
Why it matters
Explain the observed topology and identify which upstream connection the report describes.
How to read the result
Identity information alone neither proves a fault nor confirms router or WAN health. Unavailable fields should remain unknown.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W60-010",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Network and access point identities collected from responding sources.",
  "evidence": [
    {
      "name": "publicIp",
      "value": "203.0.113.10",
      "unit": null
    },
    {
      "name": "asn",
      "value": "",
      "unit": null
    },
    {
      "name": "provider",
      "value": "Example network provider",
      "unit": null
    },
    {
      "name": "country",
      "value": "",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W60-010",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Network/access point identity unavailable.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W60-010
W60-020

WAN session stability

What it is
The router's WAN connection state and observed WAN-session interruptions.
What it measures
WAN status, session uptime or reconnections, relevant error information, and independently measured Internet impact.
Why it matters
Distinguish a confirmed upstream-session problem from missing router status or an isolated test failure.
How to read the result
Confirmed WAN disconnected with impaired Internet deducts 60%. Recovered events of 1/2/3+ with impact deduct 10/20/30%. Missing router telemetry is unavailable; connected status alone does not prove Internet access.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W60-020",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Router-reported WAN session status obtained.",
  "evidence": [
    {
      "name": "activeRouteBasis",
      "value": "Single advertised WAN connection on the current Wi-Fi gateway",
      "unit": null
    },
    {
      "name": "gateway",
      "value": "192.0.2.1",
      "unit": null
    },
    {
      "name": "service",
      "value": "urn:schemas-upnp-org:service:WANIPConnection:1",
      "unit": null
    },
    {
      "name": "NewConnectionStatus",
      "value": "Connected",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2UNSUPPORTED

Result excerpt

{
  "id": "W60-020",
  "execution": "UNSUPPORTED",
  "verdict": null,
  "summary": "Router WAN status is unavailable.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W60-020
W60-030

WAN physical link

What it is
Physical WAN-link state supported by telemetry from the current gateway.
What it measures
Physical-link status, negotiated speed where available, repeated observations, and accompanying Internet impairment.
Why it matters
Identify an actual upstream physical-link problem rather than inferring one from speed alone.
How to read the result
Current physical WAN down with impaired Internet deducts 60%; a recovered down event with impact 15%. Requires two relevant observations; unavailable router telemetry is not failure.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W60-030",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Physical WAN link status reported by the router.",
  "evidence": [
    {
      "name": "activeRouteBasis",
      "value": "Single advertised WAN connection on the current Wi-Fi gateway",
      "unit": null
    },
    {
      "name": "gateway",
      "value": "192.0.2.1",
      "unit": null
    },
    {
      "name": "service",
      "value": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1",
      "unit": null
    },
    {
      "name": "NewPhysicalLinkStatus",
      "value": "Up",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2UNSUPPORTED

Result excerpt

{
  "id": "W60-030",
  "execution": "UNSUPPORTED",
  "verdict": null,
  "summary": "Router physical WAN status is unavailable.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W60-030
W60-040

WAN traffic

What it is
WAN traffic volumes and supported evidence of traffic outside the measurement.
What it measures
Available upstream traffic counters, traffic changes, and simultaneous reference measurements of connection quality.
Why it matters
Assess whether other traffic may coincide with degraded connectivity or reduced performance.
How to read the result
Traffic volume alone is not a fault. Attribution to particular devices requires per-client router information, and impact needs simultaneous evidence.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W60-040",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Total WAN traffic during the observation period.",
  "evidence": [
    {
      "name": "aggregateMbps",
      "value": "0.8",
      "unit": null
    },
    {
      "name": "intervalMs",
      "value": "5000",
      "unit": null
    },
    {
      "name": "scope",
      "value": "router WAN aggregate",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W60-040",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Fewer than two WAN counter samples.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W60-040
W60-050

Router resources

What it is
Router resource or capacity conditions that can actually be verified.
What it measures
Available resource telemetry and corresponding measured access or performance symptoms.
Why it matters
Explain supported resource concerns without inventing CPU, memory, or connection-table failures.
How to read the result
A resource finding needs relevant telemetry and observed impact. Missing router data leaves the cause unknown rather than confirming a resource problem.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1UNSUPPORTED

Result excerpt

{
  "id": "W60-050",
  "execution": "UNSUPPORTED",
  "verdict": null,
  "summary": "Router CPU, RAM and connection-tracking data are unavailable.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W60-050
W60-060

WAN address and NAT

What it is
Addressing evidence about upstream NAT and directly assigned public IPv4 availability.
What it measures
Available WAN address, observed public address, and supported signs of private addressing or upstream translation.
Why it matters
Explain topology that may matter for inbound connections or some applications.
How to read the result
Double NAT or carrier-grade NAT is topology context, not automatically an Internet error or score deduction. Missing address evidence is inconclusive.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W60-060",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "WAN and public IP addresses collected to compare network topology.",
  "evidence": [
    {
      "name": "wanIpv4",
      "value": "203.0.113.10",
      "unit": null
    },
    {
      "name": "publicIp",
      "value": "203.0.113.10",
      "unit": null
    },
    {
      "name": "privateOrShared",
      "value": "false",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W60-060",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "The router's WAN IPv4 address is unavailable.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W60-060

W70Internet access

W70-010

Network sign-in requirements

What it is
Whether the network requires a sign-in or acceptance step before normal Internet access.
What it measures
Portal indicators, relevant redirect or login responses, and independently measured access beyond the portal.
Why it matters
Explain limited connectivity on hotspots, guest networks, or networks requiring renewed authentication.
How to read the result
A confirmed portal with some outside access deducts 20%; one preventing outside access deducts 60%. An Android portal flag alone is a warning without deduction.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-010",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "No network sign-in requirement detected.",
  "evidence": [
    {
      "name": "systemPortal",
      "value": "false",
      "unit": null
    },
    {
      "name": "controlRedirects",
      "value": "0",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "maxPenaltyPercent",
      "value": "60.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W70-010",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No response to verify whether sign-in is required.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-010
W70-030

DNS resolution

What it is
Whether hostnames can be resolved to usable addresses on the measured connection.
What it measures
Successful and failed domain lookups, address-family availability, and results across independent providers.
Why it matters
Identify name-resolution problems while distinguishing a single unavailable hostname from broader DNS failure.
How to read the result
Failure fractions of 0, up to 1/3, up to 2/3, below 1, and all deduct 0/10/20/40/60%. Requires three domains and two providers. Missing IPv6 answers alone are not failure.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-030",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Answers with addresses: 15 · lookup errors: 0.",
  "evidence": [
    {
      "name": "nonPublicAnswerCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "answerCount",
      "value": "15",
      "unit": null
    },
    {
      "name": "failureCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "timeoutCount",
      "value": "0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2ERROR

Result excerpt

{
  "id": "W70-030",
  "execution": "DONE",
  "verdict": "ERROR",
  "summary": "Could not resolve an address for the connection.",
  "evidence": [
    {
      "name": "nonPublicAnswerCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "answerCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "failureCount",
      "value": "15",
      "unit": null
    },
    {
      "name": "timeoutCount",
      "value": "0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 60,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-030
W70-040

DNS stability

What it is
How consistently and promptly DNS lookups succeed across repeated observations.
What it measures
Comparable successful lookup times by domain, including the median of domain medians in milliseconds.
Why it matters
Show whether delayed name resolution may contribute to slow initial access.
How to read the result
Median DNS time <=500 ms has no deduction; >500/>1000/>2000 ms deducts 2/5/8%. Requires two domains with three successful comparable samples each. This does not isolate server processing time.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-040",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "DNS lookup time by domain and IP family.",
  "evidence": [
    {
      "name": "groups",
      "value": "{google.com/A=n=3,ok=3,p50Ms=25.0, cloudflare.com/A=n=3,ok=3,p50Ms=25.0, microsoft.com/A=n=3,ok=3,p50Ms=25.0, apple.com/A=n=3,ok=3,p50Ms=25.0, wikipedia.org/A=n=3,ok=3,p50Ms=25.0}",
      "unit": null
    },
    {
      "name": "dnsP50Ms",
      "value": "25.0",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "maxPenaltyPercent",
      "value": "8.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W70-040",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "DNS lookup time by domain and IP family.",
  "evidence": [
    {
      "name": "groups",
      "value": "{google.com/A=n=3,ok=3,p50Ms=1200.0, cloudflare.com/A=n=3,ok=3,p50Ms=1200.0, microsoft.com/A=n=3,ok=3,p50Ms=1200.0, apple.com/A=n=3,ok=3,p50Ms=1200.0, wikipedia.org/A=n=3,ok=3,p50Ms=1200.0}",
      "unit": null
    },
    {
      "name": "dnsP50Ms",
      "value": "1200.0",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "5.0",
      "unit": null
    },
    {
      "name": "maxPenaltyPercent",
      "value": "8.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 5,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-040
W70-070

Direct-IP reference check

What it is
Reachability of a known address used as a reference alongside DNS results.
What it measures
Direct-IP reference outcomes and corresponding hostname-resolution or other access observations.
Why it matters
Distinguish a resolution-layer problem from a broader destination or network-path problem.
How to read the result
Working IP access while DNS fails supports a DNS finding. A failed reference alone cannot establish a complete Internet outage.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-070",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Successful attempts: 1/1.",
  "evidence": [
    {
      "name": "successCount",
      "value": "1",
      "unit": null
    },
    {
      "name": "attemptCount",
      "value": "1",
      "unit": null
    },
    {
      "name": "timeoutCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "failureStage",
      "value": "",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W70-070",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Not enough valid measurements for direct_ip.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-070
W70-080

IPv4 / IPv6 connectivity

What it is
How the configured IPv4 and IPv6 paths compare in actual reachability.
What it measures
Address-family-specific outcomes, configured family availability, and comparisons across independent providers.
Why it matters
Find a partially broken IP family without penalizing networks providing only one usable family.
How to read the result
A configured family partly or fully failing while the other works deducts 5/10%, with two providers required. An unconfigured family does not deduct.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-080",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "IPv4 and IPv6 connectivity checked separately.",
  "evidence": [
    {
      "name": "families",
      "value": "[IPv4:ok, IPv6:ok, IPv4:ok, IPv6:ok, IPv4:ok, IPv6:ok, IPv4:ok, IPv6:ok, IPv4:ok, IPv6:ok]",
      "unit": null
    },
    {
      "name": "unconfiguredFamilyProbes",
      "value": "0",
      "unit": null
    },
    {
      "name": "probeRefs",
      "value": "family-0-IPv4,family-0-IPv6,family-1-IPv4,family-1-IPv6,family-2-IPv4,family-2-IPv6,family-3-IPv4,family-3-IPv6,family-4-IPv4,family-4-IPv6",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W70-080",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No reference address for the configured IP family.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-080
W70-100

TCP connectivity

What it is
Whether TCP connections can reach the specific destinations and ports tested.
What it measures
Successful connections, failures, refusals, and failed-domain proportion across independent destinations.
Why it matters
Identify transport-layer access problems and distinguish broad failure from a destination-specific response.
How to read the result
Failed-domain fractions <=1/3, <=1/2, <0.8, <1, and all deduct 0/10/25/45/60%. Requires three domains and two providers. A refused connection still demonstrates a response.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-100",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Successful attempts: 5/5.",
  "evidence": [
    {
      "name": "successCount",
      "value": "5",
      "unit": null
    },
    {
      "name": "attemptCount",
      "value": "5",
      "unit": null
    },
    {
      "name": "timeoutCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "failureStage",
      "value": "",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W70-100",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Not enough valid measurements for tcp.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-100
W70-110

TLS validation

What it is
Whether secure connections complete TLS and certificate validation successfully.
What it measures
TLS errors, certificate validation outcomes, independent affected providers, and successful HTTPS comparisons.
Why it matters
Explain secure-connection failures, including those associated with device-clock or certificate problems.
How to read the result
An isolated TLS failure warns without deduction. Two affected independent providers deduct 20% if other HTTPS works, or 60% when all applicable TLS attempts fail after TCP succeeds.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-110",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Successful attempts: 5/5.",
  "evidence": [
    {
      "name": "successCount",
      "value": "5",
      "unit": null
    },
    {
      "name": "attemptCount",
      "value": "5",
      "unit": null
    },
    {
      "name": "timeoutCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "failureStage",
      "value": "",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W70-110",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Not enough valid measurements for tls.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-110
W70-130

HTTP / HTTPS responses

What it is
Whether Internet destinations can be reached through HTTP or HTTPS.
What it measures
Web connection outcomes, response availability, failed-domain proportion, and independent provider coverage.
Why it matters
Separate inaccessible network paths from portal behavior, service restrictions, or remote server errors.
How to read the result
Transport-failure fractions <=1/3, <=1/2, <0.8, <1, and all deduct 0/10/25/45/60%. Requires three domains and two providers. A valid HTTP error response still demonstrates reachability.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-130",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Successful attempts: 5/5.",
  "evidence": [
    {
      "name": "successCount",
      "value": "5",
      "unit": null
    },
    {
      "name": "attemptCount",
      "value": "5",
      "unit": null
    },
    {
      "name": "timeoutCount",
      "value": "0",
      "unit": null
    },
    {
      "name": "failureStage",
      "value": "",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W70-130",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Not enough valid measurements for http.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-130
W70-150

Device Internet status

What it is
Agreement between Android's Internet-status indication and access actually measured.
What it measures
System validation or portal state, current route, and successful web responses from independent providers.
Why it matters
Explain situations where the device's connectivity label differs from observed Internet access.
How to read the result
Disagreement with successful HTTP from two providers on the same active route deducts 5%, unless already represented by an access or portal issue. Validation never guarantees every service works.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-150",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Android validation agrees with successful Internet probes.",
  "evidence": [
    {
      "name": "systemValidated",
      "value": "true",
      "unit": null
    },
    {
      "name": "successfulProviderGroups",
      "value": "5",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "maxPenaltyPercent",
      "value": "5.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-150
W70-160

Popular service access

What it is
Access to individual popular services compared with independent working references.
What it measures
Service-domain outcomes, affected access layers, failed-domain proportion, and availability of comparison services.
Why it matters
Find selective access problems without treating one service's restriction as complete Internet loss.
How to read the result
Failed-domain fractions <=10%, <=30%, <=50%, and higher deduct 0/3/6/10%. Requires five domains and two providers. Server errors or service policy restrictions are not client transport failures.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-160",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Services with an HTTP response: 5/5.",
  "evidence": [
    {
      "name": "timedOutServices",
      "value": "[]",
      "unit": null
    },
    {
      "name": "failedServices",
      "value": "[]",
      "unit": null
    },
    {
      "name": "httpRestrictions",
      "value": "[]",
      "unit": null
    },
    {
      "name": "responses",
      "value": "[https://google.com/:ok/200.0, https://cloudflare.com/:ok/200.0, https://microsoft.com/:ok/200.0, https://apple.com/:ok/200.0, https://wikipedia.org/:ok/200.0]",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W70-160",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No valid service-test results yet.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-160
W70-170

VPN / proxy path

What it is
Connectivity and authentication behavior on the VPN or proxy path actually in use.
What it measures
Route outcomes, proxy responses, authentication-required responses, and independent control access.
Why it matters
Explain measured problems on an intermediary path while distinguishing unsupported measurement from genuine failure.
How to read the result
Repeated confirmed HTTP 407 from the applied proxy deducts 20% if some access works, or 60% if all controls are blocked. Unsupported configurations remain unavailable.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1WARNING

Result excerpt

{
  "id": "W70-170",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "The proxy requires sign-in.",
  "evidence": [
    {
      "name": "probeRefs",
      "value": "proxy-1,proxy-2",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "20.0",
      "unit": null
    },
    {
      "name": "maxPenaltyPercent",
      "value": "60.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 20,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2UNSUPPORTED

Result excerpt

{
  "id": "W70-170",
  "execution": "UNSUPPORTED",
  "verdict": null,
  "summary": "No VPN or proxy applies to this measurement path.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-170
W70-190

UDP connectivity

What it is
Whether the tested UDP services return replies before their response deadlines.
What it measures
Sent UDP requests, received replies, deadline non-response rate, and comparisons between available service providers.
Why it matters
Investigate protocol-specific response problems alongside TCP and other access results.
How to read the result
After excluding an isolated silent provider, non-response of 0, <=20%, <=50%, and >50% deducts 0/5/10/15%. Requires five requests and one reply. Both providers silent is not proof of blocking.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-190",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "UDP is working: 10/10 responses.",
  "evidence": [
    {
      "name": "udpReachable",
      "value": "true",
      "unit": null
    },
    {
      "name": "sent",
      "value": "10",
      "unit": null
    },
    {
      "name": "responses",
      "value": "10",
      "unit": null
    },
    {
      "name": "rttP50Ms",
      "value": "40.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W70-190",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "UDP could not be tested on this network.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-190
W70-200

Traceroute

What it is
The responding hops observed on a route toward a reachable website.
What it measures
Returned hop information, relevant ICMP errors, trace completeness, and destination reachability.
Why it matters
Provide route context without guessing the fault location of nonresponding hops.
How to read the result
Reaching the destination has no deduction; a completed supported trace that does not reach it deducts 5%. Silent intermediate hops are not individually penalized; unsupported or cancelled traces are unavailable.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-200",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Traceroute hops that responded.",
  "evidence": [
    {
      "name": "hops",
      "value": "[1.0:192.0.2.1, 2.0:192.0.2.2, 3.0:1.1.1.1]",
      "unit": null
    },
    {
      "name": "hopCount",
      "value": "3",
      "unit": null
    },
    {
      "name": "penaltyPercent",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "maxPenaltyPercent",
      "value": "5.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2UNSUPPORTED

Result excerpt

{
  "id": "W70-200",
  "execution": "UNSUPPORTED",
  "verdict": null,
  "summary": "Traceroute is not needed or is unavailable on this path.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-200
W70-210

Internet connection preference

What it is
Whether the phone prefers mobile data even though connected Wi-Fi has verified Internet access.
What it measures
Active default transport, connected Wi-Fi path, and successful Wi-Fi access across independent providers.
Why it matters
Highlight a preference that may prevent the user from using a working Wi-Fi connection.
How to read the result
Confirmed mobile preference despite working Wi-Fi deducts 3%. Mixed, VPN, unknown, portal, or inadequately observed paths are inconclusive. The result does not establish why Android chose mobile data.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W70-210",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "The device is using Wi-Fi as its default Internet connection.",
  "evidence": [
    {
      "name": "wifiNetwork",
      "value": "synthetic-wifi",
      "unit": null
    },
    {
      "name": "defaultNetwork",
      "value": "synthetic-wifi",
      "unit": null
    },
    {
      "name": "defaultTransports",
      "value": "WIFI",
      "unit": null
    },
    {
      "name": "mobileInternetPreferred",
      "value": "false",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W70-210

W80Network performance

W80-010

Idle Internet latency

What it is
Response delay to the selected Internet target while the connection is not under test load.
What it measures
Idle round-trip times in milliseconds, median, available upper-percentile information, attempts, replies, and measurement window.
Why it matters
Establish a baseline for responsiveness and later delay increases under traffic load.
How to read the result
Median RTT <=300 ms has no deduction; >300/>600/>1000 ms deducts 5/10/20%. Requires 10 attempts and 3 replies on the same path. High delay alone is not an outage.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W80-010",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "20/20 replies · Median 40 ms",
  "evidence": [
    {
      "name": "target",
      "value": "1.1.1.1",
      "unit": null
    },
    {
      "name": "p95Ms",
      "value": "40.0",
      "unit": null
    },
    {
      "name": "lossPercent",
      "value": "0.0",
      "unit": null
    },
    {
      "name": "protocol",
      "value": "ICMP Echo",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W80-010",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Fewer than 10 samples for the same target, path and test phase.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W80-010
W80-030

Short download speed test

What it is
Download goodput actually observed during a short controlled transfer.
What it measures
Received data volume, transfer duration, and measured download throughput in Mbps.
Why it matters
Provide a practical download snapshot without claiming the maximum speed of the Internet subscription.
How to read the result
>=20 Mbps deducts 0%; 5 to <20 deducts 5%; 1 to <5 deducts 10%; >0 to <1 deducts 20%. Rate-limited or invalid measurements are unavailable, not 0 Mbps.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W80-030",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Short download speed: 24.0 Mbps",
  "evidence": [
    {
      "name": "bytes",
      "value": "1.1201029E7",
      "unit": null
    },
    {
      "name": "durationMs",
      "value": "3736.0",
      "unit": null
    },
    {
      "name": "windowMs",
      "value": "6000.0",
      "unit": null
    },
    {
      "name": "requestedBytes",
      "value": "1.6082053E7",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W80-030",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "Short download speed: 3.0 Mbps",
  "evidence": [
    {
      "name": "bytes",
      "value": "1856454.0",
      "unit": null
    },
    {
      "name": "durationMs",
      "value": "4951.0",
      "unit": null
    },
    {
      "name": "windowMs",
      "value": "6000.0",
      "unit": null
    },
    {
      "name": "requestedBytes",
      "value": "1973782.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 10,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W80-030
W80-040

Loaded latency and recovery

What it is
The increase in response delay while downloading or uploading, and subsequent recovery.
What it measures
Idle and loaded RTT medians, their ratio, transfer direction, and recovery observations on the same path.
Why it matters
Identify degradation under load without claiming that a short clean test proves congestion is absent.
How to read the result
Download ratio bands >2.5-5, >5-15, and >15 require loaded RTT >200/500/1000 ms for 3/5/10% deductions. Upload bands >3.5-7, >7-20, and >20 require >300/600/1500 ms. Use the larger deduction from either direction; no lower-band fallback when its absolute threshold fails.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W80-040",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Loaded latency was assessed for the directions with enough samples.",
  "evidence": [
    {
      "name": "downloadAvailability",
      "value": "measured",
      "unit": null
    },
    {
      "name": "downloadTarget",
      "value": "1.1.1.1",
      "unit": null
    },
    {
      "name": "uploadAvailability",
      "value": "measured",
      "unit": null
    },
    {
      "name": "uploadTarget",
      "value": "1.1.1.1",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W80-040",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "Latency increased or replies timed out during data transfer.",
  "evidence": [
    {
      "name": "downloadAvailability",
      "value": "measured",
      "unit": null
    },
    {
      "name": "downloadTarget",
      "value": "1.1.1.1",
      "unit": null
    },
    {
      "name": "uploadAvailability",
      "value": "measured",
      "unit": null
    },
    {
      "name": "uploadTarget",
      "value": "1.1.1.1",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 5,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W80-040
W80-060

Upload speed

What it is
Upload goodput based on data confirmed received during a short transfer.
What it measures
Confirmed uploaded volume, transfer duration, and measured upload throughput in Mbps.
Why it matters
Describe upstream performance without treating sender progress as proof of successful receipt.
How to read the result
>=5 Mbps deducts 0%; 1 to <5 deducts 5%; 0.25 to <1 deducts 10%; >0 to <0.25 deducts 20%. Rate-limited or unconfirmed results are unavailable, not 0 Mbps.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

The current app export uses “Short download speed” in this upload result’s summary. W80-060 and its measurements refer to upload speed; the original output is preserved below.

Example 1PASS

Result excerpt

{
  "id": "W80-060",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Short download speed: 24.0 Mbps",
  "evidence": [
    {
      "name": "bytes",
      "value": "8585029.0",
      "unit": null
    },
    {
      "name": "durationMs",
      "value": "2864.0",
      "unit": null
    },
    {
      "name": "windowMs",
      "value": "6000.0",
      "unit": null
    },
    {
      "name": "requestedBytes",
      "value": "1.6082053E7",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W80-060",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "Short download speed: 0.6 Mbps",
  "evidence": [
    {
      "name": "bytes",
      "value": "287406.0",
      "unit": null
    },
    {
      "name": "durationMs",
      "value": "3833.0",
      "unit": null
    },
    {
      "name": "windowMs",
      "value": "6000.0",
      "unit": null
    },
    {
      "name": "requestedBytes",
      "value": "474886.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 10,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W80-060
W80-070

Transfer stability

What it is
Variability and pauses within valid portions of a data transfer.
What it measures
Continuous zero-data periods and throughput variation relative to the median across comparable windows.
Why it matters
Explain transfers that pause or fluctuate despite an acceptable overall average speed.
How to read the result
Zero-data periods of at least 1/2/3 seconds deduct 5/10/15%. With adequate coverage, (P90-P10)/P50 >1/>2 deducts 3/5%; use the larger. Measurement pauses or incomplete uploads are excluded.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W80-070",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Throughput variation for each transfer direction.",
  "evidence": [
    {
      "name": "downloadAvailability",
      "value": "measured",
      "unit": null
    },
    {
      "name": "downloadAssessment",
      "value": "limited",
      "unit": null
    },
    {
      "name": "downloadSamples",
      "value": "4",
      "unit": null
    },
    {
      "name": "downloadObservedMs",
      "value": "2000",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W80-070",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "Throughput variation for each transfer direction.",
  "evidence": [
    {
      "name": "downloadAvailability",
      "value": "measured",
      "unit": null
    },
    {
      "name": "downloadAssessment",
      "value": "stalled",
      "unit": null
    },
    {
      "name": "downloadSamples",
      "value": "8",
      "unit": null
    },
    {
      "name": "downloadObservedMs",
      "value": "4000",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 5,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W80-070
W80-080

Missing replies and jitter

What it is
Missing ping replies and changes between adjacent successful response times.
What it measures
Deadline non-response percentage, jitter in milliseconds, jitter-to-median ratio, and supporting access evidence.
Why it matters
Assess consistency beyond average latency while accounting for targets that do not reliably answer ping.
How to read the result
Loss >0/>10/>20/>40/>60/>80% deducts 5/10/20/30/40/50%, subject to corroboration; one uncorroborated target is capped at 5%. Jitter >20 ms with ratios >0.25/>0.5/>1 deducts 3/5/8%; use the larger. Silent ping with working web access is not an outage.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W80-080",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Every ping in the sequence received a reply.",
  "evidence": [
    {
      "name": "maxFailureRun",
      "value": "0",
      "unit": null
    },
    {
      "name": "target",
      "value": "1.1.1.1",
      "unit": null
    },
    {
      "name": "timeoutMs",
      "value": "3000",
      "unit": null
    },
    {
      "name": "probeRefs",
      "value": "ping-1.1.1.1-0,ping-1.1.1.1-1,ping-1.1.1.1-2,ping-1.1.1.1-3,ping-1.1.1.1-4,ping-1.1.1.1-5,ping-1.1.1.1-6,ping-1.1.1.1-7,ping-1.1.1.1-8,ping-1.1.1.1-9,ping-1.1.1.1-10,ping-1.1.1.1-11,ping-1.1.1.1-12,ping-1.1.1.1-13,ping-1.1.1.1-14,ping-1.1.1.1-15,ping-1.1.1.1-16,ping-1.1.1.1-17,ping-1.1.1.1-18,ping-1.1.1.1-19",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2WARNING

Result excerpt

{
  "id": "W80-080",
  "execution": "DONE",
  "verdict": "WARNING",
  "summary": "No response within the expected time (3000 ms)",
  "evidence": [
    {
      "name": "maxFailureRun",
      "value": "2",
      "unit": null
    },
    {
      "name": "target",
      "value": "1.1.1.1",
      "unit": null
    },
    {
      "name": "timeoutMs",
      "value": "3000",
      "unit": null
    },
    {
      "name": "probeRefs",
      "value": "ping-1.1.1.1-0,ping-1.1.1.1-1,ping-1.1.1.1-2,ping-1.1.1.1-3,ping-1.1.1.1-4,ping-1.1.1.1-5,ping-1.1.1.1-6,ping-1.1.1.1-7,ping-1.1.1.1-8,ping-1.1.1.1-9,ping-1.1.1.1-10,ping-1.1.1.1-11,ping-1.1.1.1-12,ping-1.1.1.1-13,ping-1.1.1.1-14,ping-1.1.1.1-15,ping-1.1.1.1-16,ping-1.1.1.1-17,ping-1.1.1.1-18,ping-1.1.1.1-19",
      "unit": null
    }
  ],
  "scoring": {
    "status": "deducted",
    "appliedPercent": 5,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W80-080
W80-090

Background traffic and temperature

What it is
Device temperature and background-traffic context accompanying a measured performance decline.
What it measures
Android thermal state, comparable throughput changes, and verified traffic shares on the same route.
Why it matters
Identify supported device-side conditions that may affect a speed or stability result.
How to read the result
Deduct 5% for severe thermal state lasting at least 5 seconds, or moderate thermal state/background share >=50% with throughput decline >=30%. Battery temperature alone does not prove a heat-related reduction in device performance.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W80-090",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Device traffic, battery temperature and power settings.",
  "evidence": [
    {
      "name": "sampleCount",
      "value": "2",
      "unit": null
    },
    {
      "name": "thermalStatus",
      "value": "0",
      "unit": null
    },
    {
      "name": "powerSave",
      "value": "false",
      "unit": null
    },
    {
      "name": "batteryCelsius",
      "value": "32.0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "pass",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W80-090
W80-100

Reference target comparison

What it is
Performance differences between the reference destinations and paths actually measured.
What it measures
Comparable destination-specific latency or throughput observations and related connection context.
Why it matters
Show whether a performance symptom is widespread or more specific to the tested path.
How to read the result
Differences are contextual, not a separate deduction. Throughput below Wi-Fi link rate or a roughly 90-95 Mbps plateau alone does not identify a faulty component.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W80-100",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Latency compared across targets using the same network path.",
  "evidence": [
    {
      "name": "targetP50Ms",
      "value": "{1.1.1.1=40.0, 8.8.8.8=40.0}",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W80-100",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Two targets with enough comparable samples are required.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W80-100

W90Diagnostic conclusions

W90-010

Anomaly verification

What it is
Whether an observed anomaly persists, recovers, or appears limited to a particular destination.
What it measures
Repeated findings, successful comparisons, recovery timing, and the availability of required evidence.
Why it matters
Distinguish recurring problems from temporary interruptions while retaining the history of what occurred.
How to read the result
A later success does not erase an earlier failure. Unmet prerequisites and unperformed checks are not additional network faults.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W90-010",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Automatic verification of the initial test.",
  "evidence": [
    {
      "name": "verifications",
      "value": "[google.com:ok]",
      "unit": null
    },
    {
      "name": "originalRefs",
      "value": "[tcp-0]",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W90-010",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No relevant anomaly requiring another probe.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W90-010
W90-020

Signal and connectivity correlation

What it is
How Wi-Fi signal changes relate in time to connectivity or performance problems.
What it measures
Signal-strength variation, connection symptoms, matching times, and corroborating observations.
Why it matters
Indicate whether a radio-link problem is a supported explanation for reduced connection quality.
How to read the result
Coinciding events increase confidence but do not prove causation alone. Signal penalties remain in W30 and are not applied again here.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W90-020",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Weak signal compared with Internet responses.",
  "evidence": [
    {
      "name": "weakPairedWindows",
      "value": "48",
      "unit": null
    },
    {
      "name": "weakFailedWindows",
      "value": "6",
      "unit": null
    },
    {
      "name": "associationOnly",
      "value": "true",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W90-020",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "Not enough simultaneous weak-signal and ping samples.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W90-020
W90-030

Roaming and interruption correlation

What it is
How roaming, band changes, and reconnections relate to service interruptions.
What it measures
Transition timing, interruption timing, repeated switching, and observations before and after the event.
Why it matters
Explain whether a Wi-Fi handover coincided with a noticeable connection problem.
How to read the result
A transition with no measured interruption is not a fault. Multiple consequences of the same handover remain one incident.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W90-030",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Link changes compared with missed-response times.",
  "evidence": [
    {
      "name": "transitions",
      "value": "1",
      "unit": null
    },
    {
      "name": "withResponseGap",
      "value": "0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W90-030",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No access point or band changes during this session.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W90-030
W90-040

Configuration and failure correlation

What it is
How network configuration changes align with failures or recovery.
What it measures
Addressing or route changes, access outcomes, recovery timing, and available comparison evidence.
Why it matters
Identify configuration-related hypotheses while preserving uncertainty about the underlying cause.
How to read the result
Correlation can support investigation, but confirmed causation needs stronger evidence. Related addressing findings are consolidated rather than penalized twice.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W90-040",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Configuration changes compared with connection errors.",
  "evidence": [
    {
      "name": "configurationChanges",
      "value": "1",
      "unit": null
    },
    {
      "name": "withFailure",
      "value": "0",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
Example 2INCONCLUSIVE

Result excerpt

{
  "id": "W90-040",
  "execution": "INCONCLUSIVE",
  "verdict": null,
  "summary": "No IP or DNS configuration changes during this session.",
  "evidence": [],
  "scoring": {
    "status": "unavailable",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W90-040
W90-050

Fault localization

What it is
The most specific affected part of the network supported by the report's evidence.
What it measures
Combined Wi-Fi, local addressing, gateway, Internet-path, and individual-service results.
Why it matters
Focus troubleshooting on the supported scope instead of replacing equipment or changing unrelated settings.
How to read the result
A finding beyond the gateway does not automatically identify the ISP or router as the cause. Missing router telemetry does not invalidate other measured results.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W90-050",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Likely location: Connection loss not confirmed.",
  "evidence": [
    {
      "name": "faultLayer",
      "value": "Connection loss not confirmed",
      "unit": null
    },
    {
      "name": "basis",
      "value": "[W20-010, W50-030, W70-010, W70-030, W70-130]",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W90-050
W90-060

Evidence confidence

What it is
How much confidence the available evidence supports for the report's conclusions.
What it measures
Completed and unavailable checks, evidence coverage, supported verdicts, and information missing from the assessment.
Why it matters
Make uncertainty visible so users and AI tools do not interpret incomplete testing as a perfect connection.
How to read the result
N/A is neither pass nor failure and does not deduct. A few passing checks do not establish a perfect score; missing core evidence can leave the score unavailable.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W90-060",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Diagnostic scope based on collected evidence.",
  "evidence": [
    {
      "name": "completed",
      "value": "70",
      "unit": null
    },
    {
      "name": "notEvaluated",
      "value": "5",
      "unit": null
    },
    {
      "name": "probeCount",
      "value": "184",
      "unit": null
    },
    {
      "name": "segments",
      "value": "1",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W90-060
W90-070

Conclusions and recommendations

What it is
Consolidated issues, supporting evidence, and suggested next actions in the report.
What it measures
Distinct findings, related evidence, recovered incidents, and recommendations without repeatedly counting the same cause.
Why it matters
Turn measurements into a concise troubleshooting summary while keeping independent problems and advisory notes distinct.
How to read the result
One DNS problem must not become several unperformed transport failures. Recovered incidents remain documented; security or optimization advice does not automatically reduce the stability score.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W90-070",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Issues grouped by connection layer and supporting evidence.",
  "evidence": [
    {
      "name": "actionOrder",
      "value": "Wi-Fi / IP / portal / DNS / Internet / quality",
      "unit": null
    },
    {
      "name": "ruleVersion",
      "value": "catalog-score-4.0.1",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W90-070
W90-080

Report summary

What it is
The final summary of the session's findings and their observation context.
What it measures
Supported conclusions, original errors, verification times, recovery state, and important remaining uncertainties.
Why it matters
Help users and AI tools understand what the report establishes and what needs further investigation.
How to read the result
Measured improvement before and after a change does not alone prove the change caused it. A symptom that does not recur may need further observation.

Sample result

JSON

Generated by WiFi Doctor’s diagnostic engine from synthetic measurements. Field names and technical output remain in English, as in the app’s data export.

Example 1PASS

Result excerpt

{
  "id": "W90-080",
  "execution": "DONE",
  "verdict": "PASS",
  "summary": "Report includes stable check IDs, methods and evidence references.",
  "evidence": [
    {
      "name": "catalogVersion",
      "value": "3.0",
      "unit": null
    },
    {
      "name": "schemaVersion",
      "value": "3",
      "unit": null
    },
    {
      "name": "aiByteBudget",
      "value": "12000",
      "unit": null
    },
    {
      "name": "legacyCode",
      "value": "W90-0800",
      "unit": null
    }
  ],
  "scoring": {
    "status": "context",
    "appliedPercent": 0,
    "ruleVersion": "catalog-score-4.0.1"
  }
}
View the full result JSON
W90-080

These examples show the app’s output format. They are illustrative scenarios, not measurements of your network.