How SoniFi works
What SoniFi measures, how it reaches an answer and a score, what it connects to, and what no Android app can see.
Answers come from rules
Every verdict in SoniFi comes from fixed rules that run on your phone, not from a server or an AI. A rule fires only when a measurement crosses a stated limit, and the finding shows that measurement. If a check can't run, SoniFi lists it as not checked instead of guessing.
The limits the 60-second check uses:
- Signal Weak at −75 dBm or below.
- Router Five pings. Slow when the middle reply takes over 100 ms, very slow over 400 ms; lost replies are counted.
- Name lookups Slow when they take over 150 ms.
- Speed Slower than usual only when at least three earlier tests on this network, at other times of day in the last 30 days, give a typical speed, today's is half of it or less, and your router answered every ping.
- Findings At most three per check, each with its cause, the reading and a fix to try.
The whole check is given 60 seconds: three each for signal and channel, up to ten for the router and for name lookups, and up to thirty for speed.
How the score is built
The network score starts from six checks, each worth a fixed number of points. A check SoniFi can't make is skipped and named, and the score is scaled to the checks it made. There is no score until the internet check and at least 35 points' worth of checks can be judged.
| Check | Points | Loses points when |
|---|---|---|
| Internet | 25 | The internet answers slowly (12) or not at all (25). |
| Signal | 20 | Your signal is good but not excellent (4), fair (10), weak (15) or very weak (20). |
| Channel | 15 | A clearer channel exists and 3, 6, or 9 or more networks share yours (5, 10, 15). |
| Stability | 15 | The outage journal logged downtime this week: 1 point per full 10 minutes. Needs monitoring on. |
| Speed | 15 | Your latest test is below 80, 60 or 40 % of your usual speed on this network (5, 10, 15). Needs at least three earlier tests on this network; your usual speed is the middle of your last ten earlier tests. |
| Names | 10 | Devices that SoniFi can't identify and you haven't named: 2 points each. |
A slow internet answer and a slow speed test are the same slowness seen twice, so when both happen they count once, as the larger loss. Levels add up points for what you do: a finished check 20, a speed test 10, naming a device 15, a score check that comes back to full 25, a mapped room 30. Each event counts once. Your level never drops in the app and unlocks nothing.
The Wi-Fi room and scan limits
SoniFi reads the list of nearby networks that Android gives it and draws each network's signal and channel. It recommends the clearest channel for your band and shows why. Android lets apps start only about four scans every two minutes, so SoniFi tells you when the next scan is allowed.
When SoniFi hits that limit it tells you when it can scan again instead of showing old results as new. Results Android collects on its own still appear between scans.
On Android 10 to 12, Android only shows Wi-Fi scan results to apps with location permission, and location services may need to be on. SoniFi never records where you are. On Android 13 and later it uses the nearby-devices permission instead.
A name on several access points is usually a mesh system. SoniFi flags it so you know, and says Possible imposter when their security types differ; it can't prove a network is fake. 6 GHz networks appear only on phones and in countries that support them.
How SoniFi tells the layers apart
SoniFi checks in order: is the phone on Wi-Fi, does the router answer a ping, can the phone reach public internet addresses directly by IP, and do name lookups work. The first failure names the layer: the Wi-Fi, the router, past the router (likely your provider) or DNS. A router that ignores pings isn't a failure while the internet answers.
Is the phone on Wi-Fi?
If not: Left the Wi-Fi network
Does the router answer a ping?
If not, and public addresses don't answer either: Router unreachable
Do public internet addresses answer by IP?
If not: Past the router (likely ISP)
Do name lookups work?
If not: Name lookups broken (DNS)
The labels above are exactly what the outage journal shows. It says "likely ISP", not "ISP", because it sees only your side of the connection.
Monitoring is off until you turn it on. Then checks run about every 15 minutes (Android may run them later to save battery) and each time your phone's network changes. An outage is logged after two failed checks in a row and closed after two good ones. On recovery a notification says how long it lasted, for example "Down 22 minutes — looked like your ISP".
If your router is set not to answer pings, a provider outage can be logged as the router, and the router check in the 60-second check can report a problem that isn't there. The Evidence button shows each check so you can judge.
What SoniFi connects to
SoniFi has no server of its own. It connects to devices on your network, to any address you type into ping, traceroute or port scan, to public speed-test servers when you test, and to Google, Cloudflare and Quad9 addresses that answer one question: is the internet up? Exports go only where you send them.
| When | What SoniFi contacts |
|---|---|
| You scan for devices | Your phone's part of the network (up to 254 addresses): pings, connections to 12 common ports, and listening for devices that announce themselves. With monitoring on, a short repeat scan to spot new devices. |
| You use ping, traceroute or port scan | The host you type, which can be on the internet (your router by default). Traceroute also looks up the name of each step through your phone's DNS. |
| You use Wake-on-LAN | A wake-up packet to the device you choose. |
| You run a speed test, or the speed step of the 60-second check | One public speed-test server: speedtest.cesnet.cz (CESNET), ams.speedtest.clouvider.net (Clouvider, Amsterdam), librespeed.a573.net or atl.speedtest.clouvider.net (Clouvider, Atlanta), tried in that order, or servers you add. |
| Home is on screen | When it opens and every minute: name lookups and a connection to Google's connectivity check (connectivitycheck.gstatic.com, www.google.com) and Cloudflare (cloudflare.com). |
| Monitoring is on | About every 15 minutes and on network changes: name lookups, connections to 1.1.1.1, 8.8.8.8 and 9.9.9.9, Google's connectivity check, and a ping to your router. |
| You run the 60-second check | Five pings to your router, and name lookups of google.com, cloudflare.com and example.com through your phone's DNS. |
| You export or share | Only the app you pick: a speed CSV, a map image, the report-card image or a Wi-Fi QR code. |
Each server sees your phone's internet address, as with any connection. SoniFi sends no account, identifier or saved data with them. SoniFi privacy policy
The speed test
The speed test is SoniFi's own. It measures delay to a public test server, then downloads and uploads over four connections for ten seconds each. If a server doesn't answer, it tries the next one in your list. Results are saved on your phone with the network's name.
Delay is the lowest of five tries. The servers speak the LibreSpeed test format, and you can edit the list or add your own in Settings.
The result is the speed between your phone and one public test server at that moment. It depends on your Wi-Fi signal, other traffic and how far away the server is, so it can differ from your plan's speed and from other speed tests. You can add a server closer to you.
The word beside a result comes from the download speed: over 100 Mbps Excellent, over 50 Good, over 25 Fair, over 10 Weak, otherwise Poor.
Inputs and limits
SoniFi can only see what Android shows an app and what devices on your network answer. Some routers ignore pings, phones hide hardware addresses, Android rations Wi-Fi scans, and a speed test measures the path to one server at one moment. Here is what each limit means for the answers.
| Limit | What it means |
|---|---|
| Wi-Fi scan limit | Android lets apps start about four Wi-Fi scans every two minutes. When SoniFi hits that limit it tells you when it can scan again instead of showing old results as new. |
| Location permission | On Android 10 to 12, Android only shows Wi-Fi scan results to apps with location permission, and location services may need to be on. SoniFi never records where you are. On Android 13 and later it uses the nearby-devices permission instead. |
| Device names | SoniFi names a device only from what the device says about itself (its network name, model or the services it offers). Phones hide their hardware address, so many show as Unknown device until you name them; your name stays. |
| Devices it can't find | A device that ignores pings, has none of the common ports open and announces no services can't be listed. On a network larger than 254 addresses, SoniFi scans only the block your phone is in. |
| Routers that ignore pings | SoniFi tells the layers apart by pinging your router, connecting to public addresses by IP, and looking up names. If your router doesn't answer pings, a provider outage can be logged as the router, and the router checks can report a problem that isn't there. The Evidence button shows each check so you can judge. |
| Outage timing | Monitoring is off until you turn it on. Short drops between checks can be missed, and start and end times are only as precise as the checks. The journal says "likely ISP", not "ISP", because it sees your side of the connection only. |
| Speed results | The result is the speed between your phone and one public test server at that moment, so it can differ from your plan's speed and from other speed tests. |
| The 60-second check | Each finding names the reading it rests on. A check that runs out of time or can't run is listed as not checked, not passed. |
| Network score | SoniFi shows a score only once it can judge your internet and enough other checks. A check it can't make is left out and named, not guessed, and the score is scaled to the checks it made. Up to 10 points come from naming your devices, and stability needs monitoring on, so the score is a summary of what SoniFi can see and what you've done, not a measure of your internet plan. |
| Weekly uptime | Without monitoring, the weekly report card says uptime was not measured rather than showing a number. |
| Levels | Your level stays on this phone. Clearing SoniFi's data or uninstalling it starts you again at level 1, and it doesn't move to a new phone. |
| Coverage map | The map shows your phone's signal where you stood, and estimates the spaces between. Its hint says where a mesh node or extender would help; it doesn't measure where the router itself should go. |
| Floor-plan photos | SoniFi keeps a link to the floor-plan photo you picked, not a copy. Android may not let it read that photo again later, and then a saved map can reopen on a blank plan with your samples still on it. |
| Same-name networks | A name on several access points is usually a mesh system. SoniFi flags it so you know; it can't prove a network is fake. |
| Other people's traffic | No Android app can see other people's traffic or the raw radio spectrum; SoniFi doesn't try. |
| Wi-Fi QR codes | To make a QR code for your network you type the password, because Android doesn't share saved passwords with apps. |
| 6 GHz | 6 GHz networks appear only on phones and in countries that support them. |
| Screenshots | The screens on this site show sample data, not a real network. |
